LLM 메모리를 프로그램 분석으로 바꾼 이야기
I accidentally turned LLM memory into program analysis

LLM 에이전트로 취약점 연구를 하다 보면, 조사가 길어질수록 모델이 이전에 확립한 사실을 잊거나 잘못된 가정에 기반해 추론하는 문제가 발생한다. 저자는 이 문제를 해결하기 위해 LLM의 메모리를 Datalog 엔진으로 구현한 'Lemmalog'를 개발했다. LLM은 자연어와 코드를 구조화된 사실로 변환하고, Lemmalog는 사실 간의 관계와 파생 규칙을 관리하여 결론의 유효성을 자동으로 유지한다. 이를 통해 잘못된 관찰이 발견되면 관련 결론이 자동으로 무효화되고, 결론의 근거를 추적할 수 있다. 저자는 이를 프로그램 분석의 점진적 평가와 비교하며, LLM을 컴파일러의 프론트엔드로, Lemmalog를 분석 엔진으로 비유한다.
이 모든 것이 어떻게 LLM을 위한 Datalog 엔진을 작성하게 만들었는지, 그리고 왜 벡터 데이터베이스가 진실을 유지하는 데 충분하지 않은지 설명한다.
HN 토론
83- sim04ful
저도 비슷한 결론에 도달했습니다: LLM은 요청 처리의 종단에만 있어야 합니다.
1. 사용자 요청 이해: 자연어 -> 더 엄격한 표현, 제 경우에는 Datalog.
2. 결과 해석: 사실과 파생된 사실 -> 자연어.
이 종단 사이의 작업은 어떤 온톨로지나 공식적인 지식 구조에 대한 기계적 추론이어야 합니다.
이것은 제가 '풍화(Weathering)'라고 부르는 또 다른 원칙과 연결됩니다: 유용한 추론은 시스템의 형태를 바꿔야 합니다. LLM이 이미 관계, 매핑, 규칙 또는 추상화를 추론해야 했다면, 반복적인 사용은 그 추론을 시스템에 새겨서 다음에 비슷한 요청이 왔을 때 처음부터 다시 발견할 필요가 없게 해야 합니다.
계속 사용하면, 풍화 가능한 시스템은 반복적인 작업에 점점 더 적은 확률적 지능을 요구해야 합니다. 다시 말해, 인지의 한계 비용이 감소해야 합니다. 지능의 산물이 구조로 굳어져서 이후에 기계적으로 재사용되고 평가될 수 있기 때문입니다.
- akkad33
저는 노트를 키워드로 인덱싱하고 SQLite 데이터베이스에 넣은 다음 Claude가 전체 텍스트 검색을 사용하여 쿼리하도록 하여 Claude에서 장기 기억을 얻으려고 시도했습니다. 얼마나 좋은지 모르겠지만, 물건을 꽤 잘 찾는 것 같습니다. 제 목표는 컨텍스트를 작게 유지하고 Claude가 필요한 것만 요청하도록 하는 것이었습니다. Datalog는 훌륭한 아이디어처럼 보이니 꼭 시도해 볼 것입니다.
- Animats
그래서 그는 LLM을 사용하여 'is_a' 표현으로 저장된 데이터를 생성하고 있습니다.
그것은 너무나 고전적인 AI입니다.
곧 그는 양화사(quantifiers)가 필요하다는 것을 발견할 것입니다. 그런 다음 '모든'이 때로는 너무 강력하고 '대부분'이 필요하다는 것을 알게 될 것입니다. 그 길은 Cyc로 이어집니다.
나쁜 아이디어는 아닙니다. 하지만 역사가 있습니다.
- keeda
정말 멋지네요. 비슷한 작업을 한 HN 게시물이 기억납니다(아쉽게도 지금은 찾을 수 없지만). LLM을 사용하여 기사를 일련의 진술로 분해하고, 이를 사용하여 사실과 사건의 엔터티-관계 그래프를 구성했습니다. 그런 다음 여기서 DataLog / Lemmalog가 하는 것처럼 기존 그래프 쿼리 방법을 사용하여 쿼리했습니다. 특히 (당시) LLM이 잘하지 못했던 타임라인 기반 질문에 답하는 데 효과적이었던 것으로 기억합니다.
(또한 Cyc 참조: https://en.wikipedia.org/wiki/Cyc)
저는 이런 접근 방식이 권위 있는 데이터 소스에 LLM 응답을 효과적으로 근거를 두는 기반이 될 것이라고 생각합니다(또는 이미 그럴 수도 있습니다?). 오류를 잘못된 탐색이나 잘못된 '사실'로 정확히 지적할 수 있어야 합니다. 그러나 이것은 구체적이고 모호하지 않은 사실에 가장 잘 작동할 것입니다. 모호하거나 애매하거나 의견 기반 정보는 아마도 LLM의 영역으로 남을 것입니다.
- iamflimflam1
이것은 Claude와의 장기 연구 프로젝트에서 제가 경험한 것과 정확히 일치합니다.
정보를 제거하는 것은 매우 어렵습니다 - Claude는 모든 곳에 기록하는 습관이 있고, 반증된 후에도 기꺼이 사실로 취급합니다.
현재 사실은 오래된 '사실'로 쉽게 오염될 수 있습니다.