ZEP: 지능형 신체 기억을 위한 시간적 지식 그래프 아키텍처

AI 기술 자료4개월 전 업데이트 AI 공유 서클
8.6K 00

초록

심층 메모리 검색(DMR) 벤치마크에서 현재의 최첨단 시스템인 MemGPT를 능가하는 새로운 인텔리전스용 메모리 계층 서비스인 Zep을 소개합니다. Zep은 실제 기업 사용 사례를 더 잘 반영하는 DMR보다 더 포괄적이고 까다로운 평가에서 뛰어난 성능을 발휘합니다. 기존의 LLM(대규모 언어 모델) 기반 RAG(검색 증강 생성) 프레임워크는 정적 문서 검색에 국한되어 있지만, 엔터프라이즈 애플리케이션은 진행 중인 대화와 비즈니스 데이터를 포함한 여러 소스의 지식을 동적으로 통합해야 합니다. Zep은 핵심 구성 요소인 시간 인식 지식 그래프 엔진인 Graphiti로 이 근본적인 한계를 해결합니다. 이 엔진은 과거 관계를 유지하면서 비정형 대화 데이터와 정형 비즈니스 데이터를 동적으로 통합합니다. Zep은 MemGPT 팀이 구축한 DMR 벤치마크 테스트에서 우수한 성능(94.81 TP3T 대 93.41 TP3T)을 입증했습니다. DMR 외에도 복잡한 시간 추론 작업을 통해 엔터프라이즈 사용 사례를 더 잘 반영하는 보다 까다로운 LongMemEval 벤치마크에서 Zep의 기능이 더욱 검증되었습니다. 이 평가에서 Zep은 기준 구현에 비해 응답 지연 시간을 901 TP3T까지 줄이면서 정확도를 최대 18.51 TP3T까지 향상시켰으며, 이러한 결과는 특히 세션 간 정보 합성 및 장기 컨텍스트 유지와 같은 기업 핵심 작업에서 유의미하여 실제 애플리케이션에서 Zep의 효과를 입증했습니다.

1. 소개

최근 트랜스포머 기반 대규모 언어 모델(LLM)이 산업과 연구에 미치는 영향이 많은 주목을 받고 있습니다[1]. LLM의 주요 응용 분야는 채팅 기반 인텔리전스 개발입니다. 그러나 이러한 인텔리전스의 기능은 LLM 컨텍스트 창, 효과적인 컨텍스트 활용, 사전 학습 중에 얻은 지식에 의해 제한됩니다. 따라서 도메인 외부(OOD) 지식을 제공하고 착각을 줄이려면 추가적인 컨텍스트가 필요합니다.

검색 증강 생성(RAG)은 LLM 애플리케이션에서 중요한 관심 분야가 되었으며, RAG는 지난 50년 동안 개발된 정보 검색(IR) 기술을 활용하여[2] LLM에 필요한 도메인 지식을 제공합니다.

현재 RAG를 사용하는 접근 방식은 광범위한 도메인 지식과 상대적으로 정적인 말뭉치, 즉 말뭉치에 추가된 문서의 내용이 거의 변하지 않는 것에 초점을 맞추고 있습니다. 사소한 문제부터 매우 복잡한 문제까지 자율적으로 해결할 수 있는 인공지능이 일상 생활에 널리 보급되기 위해서는 사용자와 인공지능의 상호작용으로 생성되는 끊임없이 진화하는 대규모 코퍼스와 관련 비즈니스 및 세계 데이터에 대한 액세스가 필요합니다. 이러한 종류의 광범위하고 역동적인 '메모리'를 인공지능에 제공하는 것이 이러한 비전을 실현하는 핵심 요소라고 생각하며, 현재의 RAG 접근 방식은 이러한 미래에 적합하지 않다고 생각합니다. 전체 대화 기록, 비즈니스 데이터 세트 및 기타 도메인별 콘텐츠는 LLM의 컨텍스트 창에 효과적으로 적용할 수 없기 때문에 지능형 바디 메모리를 처리하기 위한 새로운 접근 방식이 개발되어야 합니다. LLM 기반 인텔리전스에 메모리를 추가하는 것은 새로운 아이디어가 아니며, 이 개념은 이전에 MemGPT[3]에서 살펴본 바 있습니다.

최근 지식 그래프(KG)는 기존 IR 기술의 여러 단점을 해결하기 위해 RAG 아키텍처를 보강하는 데 사용되었습니다[4]. 이 백서에서는 동적 시간 인식 지식 그래프 엔진인 Graphiti[6]로 구동되는 인메모리 계층 서비스인 Zep[5]를 소개합니다. Zep는 비정형 메시지 데이터와 정형 비즈니스 데이터를 수집 및 합성하며, Graphiti KG 엔진은 손실이 없는 새로운 정보로 지식 그래프를 동적으로 업데이트합니다. 새로운 정보를 동적으로 업데이트하여 만료일을 포함한 사실과 관계의 타임라인을 유지합니다. 이러한 접근 방식을 통해 지식 그래프는 복잡하고 진화하는 세상을 표현할 수 있습니다.

Zep은 프로덕션 시스템이기 때문에 메모리 검색 메커니즘의 정확성, 지연 시간, 확장성을 매우 중요하게 생각합니다. 이러한 메커니즘의 효율성을 평가하기 위해 기존의 두 가지 벤치마크, 즉 MemGPT[3]의 심층 메모리 검색 작업(DMR)과 LongMemEval 벤치마크[7]를 사용합니다.

2. 지식 매핑

Zep에서 메모리는 시간 인식 동적 지식 그래프 ℊ = (𝓃, ℯ, φ)에 의해 지원되며, 여기서 𝓃는 노드를, ℯ는 에지를, φ:ℯ→는 φ를 나타냅니다. 𝓃 × 𝓃는 형식화된 연결 함수를 나타냅니다. 이 그래프는 플롯 하위 그래프, 시맨틱 엔티티 하위 그래프, 커뮤니티 하위 그래프의 세 가지 계층적 하위 그래프로 구성됩니다.

2.1 에피소드

Zep의 그래프 구성은 에피소드라는 원시 데이터 단위를 수집하는 것으로 시작됩니다. 에피소드는 메시지, 텍스트, JSON의 세 가지 핵심 유형 중 하나이며, 각 유형은 그래프를 구성하는 동안 특정 처리가 필요하지만 이 백서에서는 대화 메모리에 초점을 맞춘 실험이므로 메시지 유형에 중점을 둡니다. 우리의 맥락에서 메시지는 비교적 짧은 텍스트(여러 개의 메시지를 LLM의 컨텍스트 창에 맞게 조정할 수 있음)와 담화를 생성한 관련 참여자로 구성됩니다.

각 메시지에는 참조 타임스탬프 tref메시지가 전송된 시간을 나타내는 시간입니다. 이 시간 정보를 통해 Zep는 메시지 콘텐츠에 언급된 상대적 또는 부분적 날짜(예: "다음 주 목요일", "2주 후" 또는 "지난 여름")를 정확하게 식별하고 추출할 수 있습니다. Zep는 통시적 모델을 구현하는데, 여기서 타임라인 T는 이벤트의 시간 순서를 나타내고, 타임라인 T 는 Zep 데이터 수집의 시간 순서를 나타냅니다. T 타임라인은 데이터베이스 감사를 위한 전통적인 목적에 부합하지만, T 타임라인은 대화 데이터와 메모리의 동적 특성을 모델링하기 위한 추가적인 차원을 제공합니다. 이 이중 시간 접근 방식은 LLM 지식 그래프 구성의 새로운 진보를 의미하며, 이전의 그래프 기반 RAG 제안과 비교했을 때 Zep의 고유한 기능의 기반이 됩니다.

플롯 측면 ℯe 플롯을 추출된 엔티티 노드에 연결합니다. 플롯과 그로부터 파생된 시맨틱 에지는 에지와 소스 플롯 사이의 관계를 추적하는 양방향 인덱스를 유지합니다. 이러한 설계는 앞뒤로 탐색할 수 있게 함으로써 Graphiti의 플롯 하위 그래프의 비손실 특성을 향상시킵니다. 시맨틱 아티팩트는 인용이나 참조를 위해 소스로 거슬러 올라가 추적할 수 있고, 플롯은 관련된 엔티티와 사실을 빠르게 검색할 수 있습니다. 이 논문의 실험에서는 이러한 연결성을 직접적으로 살펴보지는 않았지만, 향후 연구에서는 이러한 연결성을 탐구할 예정입니다.

2.2 의미론적 실체와 사실

2.2.1 엔티티

엔티티 추출은 에피소드 처리의 초기 단계입니다. 수집하는 동안 시스템은 현재 메시지 콘텐츠와 마지막 메시지 콘텐츠를 처리합니다. n 메시지를 사용하여 명명된 엔티티 인식을 위한 컨텍스트를 제공합니다. 이 백서 및 Zep의 일반적인 구현에서는n=4인 경우, 문맥 평가를 위해 두 번의 전체 대화 라운드가 제공되었습니다. 메시지 처리에 중점을 두었기 때문에 화자는 자동으로 엔티티로 추출됩니다. 초기 엔티티 추출 후에는 착시를 최소화하고 추출 범위를 향상시키기 위해 반사[12]에서 영감을 얻은 반사 기법을 사용합니다. 또한 시스템은 에피소드에서 엔티티 요약을 추출하여 후속 엔티티 확인 및 검색 작업을 용이하게 합니다.

추출 후, 시스템은 각 엔티티 이름을 1024차원 벡터 공간에 임베딩합니다. 이 임베딩을 통해 코사인 유사도 검색을 통해 기존 그래프 엔티티 노드 중 유사한 노드를 검색할 수 있습니다. 또한, 시스템은 기존 엔티티 이름과 초록에 대해 별도의 전체 텍스트 검색을 수행하여 추가 후보 노드를 식별합니다. 이러한 후보 노드와 플롯 컨텍스트는 엔티티 해상도 힌트를 사용해 LLM을 통해 처리됩니다. 시스템이 중복된 엔티티를 식별하면 업데이트된 이름과 초록을 생성합니다.

엔티티 추출 및 구문 분석 후, 시스템은 미리 정의된 Cypher 쿼리를 사용하여 데이터를 지식 그래프에 병합합니다. 일관된 아키텍처 형식을 보장하고 환각의 가능성을 줄이기 위해 LLM에서 생성된 데이터베이스 쿼리 대신 이 접근 방식을 선택했습니다.

부록에 아틀라스 구축을 위한 선별된 팁이 제공됩니다.

2.2.2 사실

를 사용하여 핵심 술어를 포함하는 각 사실에 대해 추출할 수 있습니다. 마찬가지로, 동일한 사실을 여러 엔터티에서 여러 번 추출할 수 있으므로 Graphiti는 하이퍼엣지를 구현하여 복잡한 다중 엔터티 사실을 모델링할 수 있습니다.

추출 후, 시스템은 그래프 통합을 준비하기 위해 사실에 대한 임베딩을 생성합니다. 시스템은 엔티티 해상도와 유사한 프로세스를 통해 에지 중복 제거를 수행합니다. 하이브리드 검색 관련 에지는 제안된 새 에지와 동일한 엔티티 쌍 사이에 존재하는 에지로 제한됩니다. 이러한 제한은 서로 다른 엔티티 간에 유사한 에지의 잘못된 조합을 방지할 뿐만 아니라 검색 공간을 특정 엔티티 쌍과 관련된 에지의 하위 집합으로 제한함으로써 중복 제거 프로세스의 계산 복잡성을 크게 줄여줍니다.

2.2.3 시간 추출 및 엣지 무효화

다른 지식 그래프 엔진과 비교했을 때 Graphiti의 주요 차별화 기능은 시간 추출 및 에지 무효화 프로세스를 통해 동적 정보 업데이트를 관리한다는 점입니다.

시스템 사용량 tref 플롯 컨텍스트에서 사실에 대한 시간적 정보를 추출합니다. 이를 통해 절대 타임스탬프(예: "앨런 튜링은 1912년 6월 23일에 태어났다")와 상대 타임스탬프(예: "나는 2주 전에 새 직장을 시작했다")를 포함한 정확한 추출 및 날짜/시간 표현이 가능합니다. 이중 시간 모델링 접근 방식에 따라 시스템은 4개의 타임스탬프를 추적합니다:t 생성 및 t 만료 ∈T 시스템에서 사실이 생성되거나 무효화되는 시점을 모니터링하고 t유효 노래로 응답 t유효하지 않음T 사실이 확인된 시간대를 추적합니다. 이러한 시간적 데이터 포인트는 다른 사실 정보와 함께 측면에 저장됩니다.

새 에지를 도입하면 데이터베이스의 기존 에지가 무효화될 수 있습니다. 시스템은 LLM을 사용하여 새 에지와 의미적으로 관련된 기존 에지를 비교하여 잠재적인 모순을 식별합니다. 시스템에서 시간적 모순을 식별할 때는 t유효하지 않음 의 유효하지 않은 면으로 설정합니다. t유효 를 클릭하여 영향을 받는 에지를 무효화합니다. 트랜잭션 타임라인에 따르면 T를 사용하면 Graphiti는 엣지 무효화를 결정할 때 항상 새로운 정보를 우선시합니다.

이러한 통합 접근 방식을 통해 대화가 진화함에 따라 데이터를 Graphiti에 동적으로 추가하는 동시에 현재 관계 상태와 시간 경과에 따른 관계 진화 이력을 유지할 수 있습니다.

2.3 커뮤니티

플롯과 시맨틱 하위 그래프를 구축한 후, 시스템은 커뮤니티 감지를 통해 커뮤니티 하위 그래프를 구성합니다. 커뮤니티 감지 접근 방식은 GraphRAG [4]에 설명된 기술을 기반으로 하지만, 라이덴의 알고리즘 [14] 대신 레이블 전파 알고리즘 [13]을 사용합니다. 이러한 선택은 레이블 전파의 간단한 동적 확장을 통해 새로운 데이터가 그래프에 들어올 때 시스템이 더 오랜 기간 동안 정확한 커뮤니티 표현을 유지하여 전체 커뮤니티 새로 고침의 필요성을 연기할 수 있도록 하는 데 영향을 받았습니다.

동적 확장은 레이블 전파에서 단일 재귀 단계의 로직을 구현합니다. 시스템이 그래프에 새 엔티티 노드를 추가할 때 ni ∈Ns 그렇게 되면 이웃 노드의 커뮤니티를 조사합니다. 시스템은 대부분의 이웃 노드가 보유한 커뮤니티에 새 노드를 할당하고 그에 따라 커뮤니티 요약과 그래프를 업데이트합니다. 이러한 동적 업데이트를 통해 데이터가 시스템으로 유입됨에 따라 커뮤니티를 효율적으로 확장할 수 있지만, 그 결과 커뮤니티는 전체 라벨 전파 실행을 통해 생성된 커뮤니티와 점차적으로 차이가 나게 됩니다. 따라서 주기적인 커뮤니티 새로 고침이 여전히 필요합니다. 하지만 이 동적 업데이트 전략은 지연 시간과 LLM 추론 비용을 크게 줄여주는 실용적인 휴리스틱을 제공합니다.

4]에 따라, 저희 커뮤니티 노드에는 멤버 노드의 반복적인 맵 리듀스 스타일의 요약을 통해 도출된 요약이 포함되어 있습니다. 하지만, 우리의 검색 접근 방식은 GraphRAG의 지도 축소 방식[4]과는 상당히 다릅니다. 검색 접근 방식을 지원하기 위해, 저희는 커뮤니티 요약에서 주요 용어와 관련 주제를 포함하는 커뮤니티 이름을 생성했습니다. 이러한 이름은 코사인 유사성 검색을 가능하게 하기 위해 임베드되어 저장됩니다.

3. 메모리 검색

Zep의 메모리 검색 시스템은 강력하고 정교하며 고도로 구성 가능한 기능을 제공합니다. 전반적으로 Zep 그래프 검색 API는 다음과 같은 기능을 구현합니다. f:SS는 텍스트 문자열 쿼리 α ∈S 를 입력으로 받고 텍스트 문자열 컨텍스트 β ∈를 반환합니다.S 를 출력으로 설정합니다. 출력 β에는 LLM 인텔리전스가 쿼리 α에 대한 정확한 응답을 생성하는 데 필요한 노드와 에지의 형식화된 데이터가 포함되어 있습니다. 프로세스 f(α)→β는 세 가지 단계로 구성됩니다:

- 검색(φ): 이 프로세스는 먼저 관련 정보를 포함할 수 있는 사후 선택된 노드와 에지를 식별합니다. Zep는 다양한 검색 방법을 사용하지만, 전체 검색 기능은 φ로 표현할 수 있습니다.Ssn-×𝒩sn. ×𝒩cn. 따라서 φ는 쿼리를 관련 텍스트 정보를 포함하는 세 가지 그래프 유형인 시맨틱 에지, 엔티티 노드, 커뮤니티 노드 목록을 포함하는 3-tuple로 변환합니다.

- 재정렬기(ρ): 두 번째 단계는 검색 결과를 재정렬하는 것입니다. 재정렬자 함수 또는 모델은 검색 결과 목록을 가져와 해당 결과의 재정렬된 버전(ρ:φ(α),...→)을 생성합니다.sn×𝒩sn×𝒩cn.

- 생성자(χ): 마지막 단계에서 생성자는 관련 노드와 에지를 텍스트 컨텍스트로 변환합니다.sn×𝒩sn×𝒩cnS. 각 ei를 반환하고, χ는 사실과 t유효t유효하지 않음 필드; 각 ni𝒩s는 이름 및 요약 필드를 반환합니다. ni𝒩c를 클릭하면 요약 필드가 반환됩니다.

이러한 정의가 설정되어 있으면 f 는 이 세 가지 구성 요소의 조합으로 표시됩니다:f(α) = χ(ρ(φ(α))) = β.

컨텍스트 문자열 템플릿 샘플:

FACTS 和 ENTITIES 表示与当前对话相关的上下文信息。
以下是最相关的事实及其有效日期范围。如果该事实与某个事件相关,则表示该事件发生在这个时间范围内。
格式:FACT(日期范围:from - to)
<FACTS>
{facts}
</FACTS>
以下是最相关的实体
ENTITY_NAME:实体简介
<ENTITIES>
{entities}
</ENTITIES>

3.1 검색

Zep는 세 가지 검색 기능을 구현합니다: 코사인 의미 유사도 검색(φcos), Okapi BM25 전체 텍스트 검색(φbm25}) 및 폭 우선 검색(φbfs). 처음 두 기능은 Neo4j의 Lucene 구현을 활용합니다[15][16]. 각 검색 기능은 관련 문서를 식별하는 측면에서 서로 다른 기능을 제공하며, 함께 사용하면 순서를 바꾸기 전에 후보 결과에 대한 포괄적인 범위를 제공합니다. 검색 필드는 개체 유형에 따라 다릅니다.s의 경우 팩트 필드를 검색하고, 𝒩의 경우s엔터티 이름을 검색하고, 𝒩의 경우c는 커뮤니티에서 다루는 관련 키워드와 문구가 포함된 커뮤니티 이름을 검색합니다. 저희의 커뮤니티 검색 방법은 독자적으로 개발되었지만, LightRAG[17]의 높은 수준의 키 검색 방법과 유사합니다. LightRAG의 접근 방식을 Graphiti와 같은 그래프 기반 시스템과 결합하면 향후 연구에 유망한 방향을 제시할 수 있습니다.

코사인 유사도 및 전체 텍스트 검색 방법은 RAG [18]에서 잘 확립되어 있지만, 지식 그래프에 대한 넓이 우선 검색은 RAG 영역에서 제한적인 관심을 받아왔으며, AriGraph [9] 및 Distill-SynthKG [19] 같은 그래프 기반 RAG 시스템에서는 예외적으로 주목할 만한 예외가 있습니다. Graphiti에서, 넓이 우선 검색은 다음을 식별하여 수행됩니다. n 홉 내에 노드와 에지를 추가하여 초기 검색 결과를 개선합니다. 또한, φbfs 노드를 검색 매개변수로 허용하는 기능을 사용하면 검색 기능을 더 세밀하게 제어할 수 있습니다. 이 기능은 최근 에피소드를 범위 우선 검색의 시드로 사용할 때 특히 유용하며, 시스템이 최근에 언급된 개체와 관계를 검색의 컨텍스트에 병합할 수 있게 해줍니다.

전체 텍스트 검색은 단어 유사성을, 코사인 유사성은 의미적 유사성을, 폭 우선 검색은 문맥 유사성을 파악하여 그래프에서 가까운 노드와 가장자리가 더 유사한 대화 문맥에 나타납니다. 후보 결과 식별에 대한 이러한 다각적인 접근 방식은 최적의 문맥을 발견할 가능성을 극대화합니다.

3.2 재주문

초기 검색 방식은 높은 리콜을 목표로 하는 반면, 재정렬기는 가장 관련성이 높은 결과에 우선순위를 둠으로써 정확도를 향상시킵니다. Zep는 상호 순위 융합(RRF)[20] 및 최대 한계 관련성(MMR)[21] 같은 기존의 재정렬 방법을 지원합니다. 또한, Zep는 개체 또는 사실 언급 빈도에 따라 결과의 우선 순위를 정하는 그래프 기반 에피소드 언급 재정렬기를 구현하여 자주 인용되는 정보에 더 쉽게 접근할 수 있도록 합니다. 이 시스템에는 지정된 중앙 노드로부터의 거리에 따라 결과를 재정렬하여 지식 그래프의 특정 영역에 국한된 콘텐츠를 제공하는 노드 거리 재정렬 기능도 포함되어 있습니다. 이 시스템의 가장 정교한 재정렬 기능은 교차 주의력을 사용하여 쿼리에 대한 노드와 에지의 관련성을 평가하여 관련성 점수를 생성하는 LLM인 교차 코더를 사용하지만, 이 접근 방식은 계산 비용이 가장 많이 듭니다.

4. 실험

이 섹션에서는 LLM 메모리를 기반으로 한 벤치마크 테스트를 사용해 수행한 두 가지 실험을 분석합니다. 첫 번째 평가는 [3]에서 개발된 심층 메모리 검색(DMR) 작업을 사용하며, "금붕어 메모리를 넘어서: 장기 오픈 도메인 대화"[22]에 소개된 다중 세션 채팅 데이터 세트에서 500개의 대화 하위 집합을 사용합니다. 두 번째 평가는 [7]의 LongMemEval 벤치마크 테스트를 사용합니다. 구체적으로, 우리는 LongMemEval의 이 게시물에 댓글 달기 데이터 세트는 평균 길이가 115,000개에 달하는 광범위한 대화 컨텍스트를 제공합니다.

두 실험 모두에서 Zep의 API를 통해 대화 기록을 Zep 지식 그래프에 통합했습니다. 그런 다음 섹션 3에서 설명한 기술을 사용하여 가장 관련성이 높은 20개의 에지(사실)와 엔티티 노드(엔티티 요약)를 검색합니다. 시스템은 이 데이터를 Zep 메모리 API에서 제공하는 기능과 일치하는 컨텍스트 문자열로 다시 포맷합니다.

이러한 실험은 Graphiti의 주요 검색 기능을 보여주지만, 이는 시스템의 전체 검색 기능의 일부에 불과합니다. 이 초점이 맞춰진 범위는 기존 벤치마크 테스트와 명확하게 비교할 수 있게 해주며, 향후 추가적인 지식 그래프 기능을 탐색하기 위한 작업의 여지를 남겨줍니다.

4.1 모델 선택

실험적 구현에서는 재정렬 및 임베딩 작업에 BAAI의 BGE-m3 모델을 사용합니다 [23] [24]. 그래프 구성 및 응답 생성에는 gpt-4o-mini-2024-07-18을, 제공된 컨텍스트에 대한 응답을 생성하는 채팅 인텔리전스에는 gpt-4o-mini-2024-07-18 및 gpt-4o-2024-11-20을 사용합니다.

MemGPT의 DMR 결과와 직접적인 비교 가능성을 보장하기 위해 gpt-4-turbo-2024-04-09를 사용하여 DMR 평가도 수행했습니다.

실험용 노트북은 GitHub 리포지토리를 통해 공개되며, 관련 실험 팁은 부록에 포함되어 있습니다.

표 1: 심층 메모리 검색

암기모델링점수
재귀적 요약 대화 요약 MemGPT? 전체 대화GPT-4-터보 GPT-4-터보 GPT-4-터보 GPT-4-터보 GPT-4-터보 GPT-4-터보35.3% 78.6% 93.4% 94.4%
Zep 대화 요약GPT-4-TURBO GPT-4O-MINI94.8%
전체 대화 ZepGPT-4O-MINI GPT-4O-MINI88.0% 98.0% 98.2%

결과는 [3]에서 확인할 수 있습니다.

4.2 심층 메모리 검색(DMR)

심층 기억 검색 평가는 [3]에 의해 도입되었으며 500개의 다중 세션 대화로 구성되며, 각 대화는 세션당 최대 12개의 메시지가 포함된 5개의 채팅 세션으로 이루어져 있습니다. 각 대화에는 메모리 평가를 위한 질문/답변 쌍이 포함되어 있으며, MemGPT 프레임워크[3]는 현재 93.41 TP3T의 정확도로 성능 메트릭을 선도하고 있으며, 이는 재귀적 요약으로 달성한 기준선인 35.31 TP3T보다 크게 향상된 수치입니다.

비교 기준선을 설정하기 위해 전체 대화 컨텍스트와 세션 요약이라는 두 가지 일반적인 LLM 메모리 방법을 구현했습니다. gpt-4-turbo를 사용하면 전체 대화 기준선은 94.41 TP3T의 정확도를 달성하여 MemGPT가 보고한 결과보다 약간 높은 반면, 세션 요약 기준선은 78.61 TP3T를 달성했습니다. gpt-4o-mini를 사용하면 전체 대화는 98.01 TP3T, 세션 요약은 88.01 TP3T로 두 방법 모두 성능이 더 우수합니다. 발표된 연구에 충분한 방법론적 세부 사항이 없기 때문에 gpt-4o-mini를 사용한 MemGPT의 결과를 재현할 수 없었습니다.

그런 다음 대화를 수집하고 검색 기능을 사용하여 가장 관련성이 높은 상위 10개 노드와 에지를 검색하여 Zep의 성능을 평가했습니다. LLM 판사는 제공된 정답에 대한 인텔리전스의 응답을 비교합니다. Zep은 gpt-4-turbo로 94.81 TP3T, gpt-4o-mini로 98.21 TP3T의 정확도를 달성했습니다, MemGPT와 그에 상응하는 전체 대화 기준선에 비해 미미한 개선을 보였습니다. 그러나 이러한 결과는 각 대화에 포함된 메시지가 60개에 불과하여 현재 LLM 컨텍스트 창에 쉽게 적용할 수 있다는 맥락에서 이해해야 합니다.

DMR 평가의 한계는 규모가 작다는 것 외에도 여러 가지가 있습니다. 분석 결과 벤치마크 테스트의 설계에 심각한 약점이 있는 것으로 나타났습니다. 이 평가는 단일 라운드의 사실 검색 문제에만 의존하여 복잡한 기억 이해력을 평가할 수 없었습니다. 많은 질문에는 대화에 명시적으로 설명되지 않은 '좋아하는 휴식 음료' 또는 '이상한 취미'와 같은 개념을 언급하는 모호한 문구가 포함되어 있었습니다. 결정적으로, 이 데이터 세트는 실제 기업에서 LLM 인텔리전스의 사용 사례에 적합하지 않았습니다. 최신 LLM의 단순한 전체 컨텍스트 접근 방식을 사용하여 달성한 우수한 성능은 메모리 시스템을 평가할 때 벤치마킹이 부적절하다는 것을 더욱 강조합니다.

이러한 단점은 대화 길이가 길어질수록 LLM 벤치마킹 테스트의 성능이 급격히 감소한다는 [7]의 결과에 의해 더욱 강조되며, LongMemEval 데이터 세트 [7]는 기업 시나리오를 더 잘 반영하는 더 길고 일관된 대화와 더 다양한 평가 질문을 제공함으로써 이러한 단점을 해결합니다.

4.3 롱멤이밸(LME)

실제 비즈니스 애플리케이션 LLM 인텔리전스를 대표하는 대화와 질문을 제공하는 LongMemEvals 데이터 세트를 사용해 Zep을 평가했습니다. LongMemEvals 데이터 세트는 대화 길이가 평균 약 115,000토큰에 달하는 등 기존 LLM 및 비즈니스 메모리 솔루션[7]에 상당한 도전 과제를 제기하고 있습니다. 이 길이는 상당히 길지만 현재 프론티어 모델의 컨텍스트 윈도우 내에 있어 Zep의 성능을 평가할 수 있는 의미 있는 기준선을 설정할 수 있습니다.

데이터 세트에는 단일 세션 사용자, 단일 세션 어시스턴트, 단일 세션 환경 설정, 다중 세션, 지식 업데이트, 시간적 추론 등 6가지 문제 유형이 포함되어 있습니다. 이러한 범주는 데이터 세트에 고르게 분포되어 있지 않으므로 자세한 내용은 [7]을 참조하시기 바랍니다.

모든 실험은 2024년 12월부터 2025년 1월 사이에 진행되었습니다. 매사추세츠주 보스턴의 주거지에서 AWS us-west-2에서 호스팅되는 Zep 서비스에 연결된 소비자 노트북을 사용하여 테스트했습니다. 이 분산 아키텍처는 Zep의 성능을 평가할 때 추가적인 네트워크 지연 시간을 발생시키지만, 기본 평가에는 이러한 지연 시간이 존재하지 않습니다.

답안 평가를 위해 GPT-4o를 사용했으며, [7]에 제공된 질문별 프롬프트를 제공했는데, 이는 인간 평가자와의 관련성이 높은 것으로 나타났습니다.

4.3.1 LongMemEval 및 MemGPT

Zep와 현재의 최신 MemGPT 시스템[3] 간의 비교 벤치마크를 설정하기 위해, 저희는 LongMemEval 데이터 세트를 사용하여 MemGPT를 평가하려고 시도했습니다. 현재 MemGPT 프레임워크는 기존 메시지 기록의 직접 수집을 지원하지 않기 때문에, 대화 메시지를 보관 기록에 추가하는 방법으로 해결 방법을 구현했습니다. 하지만 이 접근 방식으로는 성공적인 Q&A를 얻을 수 없었습니다. 성능 데이터를 비교하는 것은 LLM 메모리 시스템의 광범위한 개발에 도움이 될 것이므로 다른 연구팀에서 이 벤치마크 테스트를 평가해 주기를 기대합니다.

4.3.2 LongMemEval 결과

Zep은 정확도와 지연 시간 모두에서 베이스라인에 비해 크게 개선된 것으로 나타났습니다. gpt-4o-mini를 사용한 Zep는 기준선 대비 15.21 TP3T의 정확도 개선을 달성한 반면, gpt-4o는 18.51 TP3T의 개선을 달성했습니다. 또한 큐 크기가 줄어들면서 기준 구현에 비해 지연 시간 비용도 크게 감소합니다.

표 2: LongMemEvals

암기모델링점수미루다지연 IQR평균 컨텍스트 마커
전체 컨텍스트GPT-4O-MINI55.4%31.3 s8.76 s115k
ZepGPT-4O-MINI63.8%3.20 s1.31 s1.6k
전체 컨텍스트gpt-4060.2%28.9 s6.01 s115k
Zepgpt-4071.2%2.58 s0.684 s1.6k

질문 유형별로 분석한 결과, Zep를 사용한 gpt-4o-mini는 6개 범주 중 4개 범주에서 개선된 것으로 나타났으며, 단일 세션 선호도, 다중 세션 및 시간적 추론과 같은 복잡한 질문 유형에서 가장 큰 개선이 있었습니다. gpt-4o를 사용할 때 Zep은 지식 업데이트 범주에서 추가적인 개선을 보였으며, 이는 더 성능이 뛰어난 모델과 함께 사용할 때 더 효과적이라는 점을 강조합니다. 그러나 성능이 낮은 모델의 Zep 임시 데이터에 대한 이해를 개선하기 위해서는 추가적인 개발이 필요할 수 있습니다.

표 3: LongMemEvals 문제 유형 분해

문제 유형모델링전체 컨텍스트Zep증분
단일 세션 기본 설정GPT-4O-MINI30.0%53.3%77.71 TP3T
단일 세션 도우미GPT-4O-MINI81.8%75.0%↑'6
연대기 추론GPT-4O-MINI36.5%54.1%48.2%↑
멀티 세션GPT-4O-MINI40.6%47.4%16.7%↑
지식 업데이트GPT-4O-MINI76.9%74.4%3.36%↓
단일 세션 사용자GPT-4O-MINI81.4%92.9%14.1%↑
단일 세션 기본 설정gpt-4020.0%56.7%184%↑
단일 세션 도우미gpt-4094.6%80.4%17.7%↓
연대기 추론gpt-4045.1%62.4%38.41 TP3T
멀티 세션gpt-4044.3%57.9%30.7%↑
지식 업데이트gpt-4078.2%83.3%6.52%↑
단일 세션 사용자gpt-4081.4%92.9%14.1%↑

이러한 결과는 모델 규모 전반에 걸쳐 성능을 개선하는 Zep의 능력을 보여주며, 더 뛰어난 성능의 모델과 함께 사용할 때 복잡하고 섬세한 문제 유형에서 가장 큰 개선이 관찰되었습니다. 특히 지연 시간 개선이 두드러졌는데, Zep은 정확도는 더 높게 유지하면서 응답 시간을 약 901 TP3T 단축했습니다.

단일 세션 도우미 문제에서의 성능 저하(gpt-4o의 경우 17.71 TP3T, gpt-4o-mini의 경우 9.061 TP3T)는 Zep의 다른 일관된 개선 사항에서 주목할 만한 예외를 나타냅니다. 추가 연구 및 엔지니어링 작업이 필요함을 시사합니다.

5. 결론

저희는 시맨틱 및 에피소드 메모리와 엔티티 및 커뮤니티 요약을 결합하는 그래프 기반 접근 방식인 LLM 메모리에 대한 Zep을 소개했습니다. 평가 결과, Zep은 기존 메모리 벤치마크에서 최첨단 성능을 달성하는 동시에 라벨링 비용을 절감하고 훨씬 낮은 지연 시간으로 작동하는 것으로 나타났습니다.

Graphiti와 Zep이 달성한 결과는 인상적이지만, 이는 그래프 기반 메모리 시스템의 예비적인 발전에 불과할 가능성이 높습니다. 이 두 가지 프레임워크를 기반으로 다른 GraphRAG 접근 방식을 Zep 패러다임에 통합하는 등 다양한 연구가 진행될 수 있으며, 새로운 확장 작업도 가능합니다.

연구에 따르면 GraphRAG 패러다임에서 LLM 엔티티 및 에지 추출을 위한 모델을 미세 조정하여 정확도를 높이는 동시에 비용과 지연 시간을 줄이는 것이 가치가 있음이 입증되었습니다 [19] [25]. 마찬가지로 그래프티 단서에 맞게 미세 조정된 모델은 특히 복잡한 대화의 경우 지식 추출을 향상시킬 수 있습니다. 또한, LLM으로 생성된 지식 그래프에 대한 현재 연구는 주로 공식 온톨로지[9] [4] [17] [19] [26]가 없는 상태에서 작동하지만, 도메인별 온톨로지는 상당한 잠재력을 가지고 있습니다. LLM 이전 지식 그래프 작업의 기본이 되는 그래프 온톨로지는 Graphiti 프레임워크에서 더 깊이 탐구할 가치가 있습니다.

적합한 메모리 벤치마크 테스트를 검색한 결과, 기존 벤치마크 테스트는 일반적으로 견고성과 정교함이 부족하고 단순한 핀 찾기 사실 검색 문제[3]를 기본으로 하는 경우가 많아 옵션이 제한적이었습니다. 현장에서는 메모리 접근 방식을 효과적으로 평가하고 차별화하기 위해 추가적인 메모리 벤치마크 테스트, 특히 고객 경험 작업과 같은 비즈니스 애플리케이션을 반영하는 테스트가 필요합니다. 특히 기존의 벤치마크 테스트는 구조화된 비즈니스 데이터로 대화 기록을 처리하고 종합하는 Zep의 능력을 평가하기에는 불충분합니다. Zep은 LLM 메모리에 초점을 맞추고 있지만, [17] [27] [28]에서 확립된 벤치마크 테스트와 비교하여 기존의 RAG 기능을 평가해야 합니다.

LLM 메모리와 RAG 시스템에 대한 현재의 문헌은 비용과 지연 시간 측면에서 생산 시스템 확장성 문제를 적절히 다루지 못하고 있습니다. 이러한 격차를 해소하기 위해 검색 메커니즘의 지연 시간 벤치마킹을 포함시켰으며, 이러한 메트릭의 우선순위를 정하는 데 있어 LightRAG 작성자의 예를 따랐습니다.

6. 부록

6.1 그래프 구성을 위한 팁

6.1.1 엔티티 추출

<之前的消息>
{previous_messages}
</之前的消息>
<当前消息>
{current_message}
</当前消息>
根据上述对话内容,从当前消息(CURRENT MESSAGE)中提取明确或隐含提到的实体节点:
指导原则:
1. 始终将说话者/行动者提取为第一个节点。说话者是每行对话中冒号前的部分。
2. 提取当前消息中提到的其他重要实体、概念或行动者。
3. 不要为关系或行为创建节点。
4. 不要为时间信息(如日期、时间或年份)创建节点(这些信息将在后续作为边添加)。
5. 节点名称尽量具体,使用全称。
6. 不要提取仅在前文中提到的实体。

6.1.2 엔티티 해상도

<之前的消息>
{previous_messages}
</之前的消息>
<当前消息>
{current_message}
</当前消息>
<已有节点>
{existing_nodes}
</已有节点>
根据上述已有节点(EXISTING NODES)、消息(MESSAGE)以及之前的消息(PREVIOUS MESSAGES),判断从对话中提取出的新节点(NEW NODE)是否是已有节点中的重复实体。
<新节点>
{new_node}
</新节点>
任务:
1. 如果新节点与已有节点中任意一个代表的是同一个实体,请在回复中返回 `is_duplicate: true`。
否则,返回 `is_duplicate: false`。
2. 如果返回为 is_duplicate: true,还需在回复中返回重复节点的 uuid。
3. 如果返回为 is_duplicate: true,请返回该节点最完整的全名作为名称。
指导原则:
1. 请结合节点的名称和摘要来判断是否为重复实体。重复节点的名称可能不同。

6.1.3 팩트 추출

<PREVIOUS MESSAGES>
{previous_messages}
</PREVIOUS MESSAGES>
<CURRENT MESSAGE>
{current_message}
</CURRENT MESSAGE>
<ENTITIES>
{entities}
</ENTITIES>
根据以上的消息(MESSAGES)和实体(ENTITIES),从当前消息(CURRENT MESSAGE)中提取所有与列出的实体有关的事实信息。
指南:
1. 仅提取出现在所提供实体之间的事实。
2. 每条事实应代表两个**不同节点**之间的明确关系。
3. relation_type 应为简洁、全大写的关系描述(例如:LOVES、IS_FRIENDS_WITH、WORKS_FOR)。
4. 提供包含所有相关信息的更详细事实描述。
5. 如有必要,考虑关系中的时间要素。

6.1.4 사실 분석

根据以下上下文,判断 New Edge 是否与 Existing Edges 列表中的任意一条边表示相同的信息。
<EXISTING EDGES>  
{existing_edges}  
</EXISTING EDGES>  
<NEW EDGE>  
{new_edge}  
</NEW EDGE>
任务:  
1. 如果 New Edge 表达的信息与 Existing Edges 中任意一条边的事实信息相同,请在回复中返回 `is_duplicate: true`;否则返回 `is_duplicate: false`。  
2. 如果 `is_duplicate` 为 true,还需在回复中返回该现有边的 uuid。
指导原则:  
1. 即使事实信息不完全一致,只要表达的是相同的信息,即可视为重复。

6.1.5 시간 추출

<先前消息>
{previous_messages}
</先前消息>
<当前消息>
{current_message}
</当前消息>
<参考时间戳>
{reference_timestamp}
</参考时间戳>
<事实>
{fact}
</事实>
重要提示:仅当时间信息是所提供事实的一部分时才提取时间,否则请忽略提到的时间。
请根据提供的参考时间戳尽可能确定确切日期(例如 “10 年前”“2 分钟前” 这样的相对时间也要换算为确切时间)。
如果关系并非是持续性的,但仍能确定日期,请仅设置 valid_at 字段。
定义:
- valid_at:描述该事实所代表关系首次成立或变为真实的日期时间。
- invalid_at:描述该事实所代表关系不再成立或终止的日期时间。
任务:
分析对话内容,判断是否有与该关系事实相关的日期信息。仅当日期明确涉及关系的建立或变化时才填写。
指南:
1. 使用 ISO 8601 格式(YYYY-MM-DDTHH:MM:SS.SSSSSSZ)表示日期时间。
2. 判断时使用参考时间戳作为当前时间。
3. 如果事实是以现在时表述的,则使用参考时间戳作为 valid_at 日期。
4. 如果没有用于建立或更改关系的时间信息,请将字段留空(null)。
5. 不要根据相关事件推测日期。只使用直接用于建立或更改关系的日期。
6. 如果提到的相对时间与关系直接相关,请根据参考时间戳计算出实际日期时间。
7. 如果只提到了日期而没有具体时间,默认时间为当日 00:00:00(午夜)。
8. 如果只提到了年份,默认时间为该年 1 月 1 日的 00:00:00。
9. 始终包含时区偏移(若未提及具体时区,请使用 Z 表示 UTC)。

 

참조:

https://arxiv.org/pdf/2501.13956

ZEP-Graphiti: 인텔리전스의 메모리를 위한 시간적 지식 그래프 아키텍처

Zep: AI 애플리케이션을 위한 장기 메모리 계층 구축, 사용자 정보, 비즈니스 데이터 추출 및 업데이트

© 저작권 정책

관련 문서

댓글 없음

댓글에 참여하려면 로그인해야 합니다!
지금 로그인
없음
댓글 없음...