대규모 언어모델(LLM)이 복잡한 코드 분석이나 취약점 연구와 같은 장시간의 작업에서 이전에 확립된 사실들을 잊어버리거나 잘못된 정보에 기반해 추론을 계속하는 문제가 발생하고 있습니다. 이는 LLM이 대화 기록을 단순히 저장하고 검색하는 기존의 기억 시스템으로는 정보의 유효성 변화를 효과적으로 반영하지 못하기 때문입니다. 한 연구자는 이러한 LLM의 '기억 상실'과 '환각(hallucination)' 문제를 해결하기 위해, LLM의 기억 시스템을 프로그램 분석과 유사한 방식으로 접근하는 새로운 방법을 제안했습니다.
이 연구자는 LLM이 단순한 대화 내용을 기억하는 것을 넘어, 현재 '알고 있는 것'의 상태를 유지해야 한다고 보았습니다. 예를 들어, '객체 A가 객체 B를 가리킨다'는 사실을 기반으로 '공격자가 커널 객체를 제어할 수 있다'는 결론을 도출했지만, 나중에 '객체 A가 객체 B를 가리키지 않는다'는 새로운 사실이 밝혀졌을 때, LLM이 자동으로 이전 결론의 유효성을 무효화해야 한다는 것입니다. 이는 마치 프로그램 분석에서 특정 사실이 변경될 경우, 그에 의존하는 모든 파생 결과들을 효율적으로 갱신하는 방식과 유사합니다. 이러한 통찰을 바탕으로, 연구자는 선언적 논리 프로그래밍 언어인 데이터로그(Datalog) 엔진을 LLM의 기억 시스템에 통합한 '렘마로그(Lemmalog)'를 개발했습니다.
렘마로그는 LLM이 자연어, 소스 코드, 디버거 출력 등 비정형 데이터를 이해하고 이를 구조화된 '사실(facts)'로 변환하는 '퍼지(fuzzy)'한 역할을 담당하게 합니다. 반면, 일단 구조화된 사실이 생성되면, 데이터로그 엔진이 이러한 사실들과 정의된 '규칙(rules)'을 바탕으로 새로운 사실을 도출하고, 기존 사실이 변경될 경우 관련 결론을 자동으로 갱신하거나 무효화하는 '결정론적(deterministic)' 역할을 수행합니다. 이처럼 LLM의 강점인 비정형 데이터 처리 능력과 데이터로그의 강점인 논리적 추론 및 일관성 유지 능력을 결합함으로써, LLM은 복잡한 작업에서도 훨씬 더 정확하고 일관된 추론을 유지할 수 있게 됩니다. 이는 특히 보안 취약점 분석과 같이 높은 정확성과 최신 정보 반영이 필수적인 분야에서 LLM의 활용 가치를 크게 높일 것으로 기대됩니다.
