ZEP : une architecture de graphe de connaissances temporelles pour la mémoire corporelle intelligente

résumés

Nous présentons Zep, un nouveau service de couche mémoire pour l'intelligentsia qui surpasse le système de pointe actuel, MemGPT, dans les repères de recherche en mémoire profonde (DMR). En outre, Zep excelle dans des évaluations plus complètes et plus difficiles que DMR qui reflètent mieux les cas d'utilisation réels des entreprises. Alors que les cadres existants basés sur le modèle du grand langage (LLM) sont limités à la recherche statique de documents, les applications d'entreprise ont besoin d'intégrer dynamiquement des connaissances provenant de sources multiples, y compris les conversations en cours et les données d'entreprise. Il intègre dynamiquement les données non structurées des conversations et les données structurées de l'entreprise tout en conservant les relations historiques. Zep a démontré ses performances supérieures (94,81 TP3T contre 93,41 TP3T) lors d'un test de référence DMR réalisé par l'équipe MemGPT. En plus du DMR, les capacités de Zep ont été validées dans le test de référence LongMemEval, plus difficile, qui reflète mieux les cas d'utilisation en entreprise grâce à des tâches complexes de raisonnement temporel. Dans cette évaluation, Zep a amélioré sa précision de 18,51 TP3T tout en réduisant la latence de réponse de 901 TP3T par rapport à l'implémentation de base. Ces résultats sont particulièrement significatifs dans les tâches critiques pour l'entreprise telles que la synthèse d'informations entre les sessions et la maintenance du contexte à long terme, démontrant l'efficacité de Zep dans les applications du monde réel.

1. introduction

Ces dernières années, l'impact des grands modèles de langage (LLM) basés sur des transformateurs sur l'industrie et la recherche a attiré beaucoup d'attention [1]. Cependant, les capacités de ces intelligences sont limitées par la fenêtre contextuelle du LLM, l'utilisation efficace du contexte et les connaissances acquises au cours de la formation préalable. Par conséquent, un contexte supplémentaire est nécessaire pour fournir des connaissances hors domaine (OOD) et réduire les illusions.

La Génération Augmentée de Récupération (GAR) est devenue un domaine d'intérêt important dans les applications LLM. La GAR utilise des techniques de recherche d'information (RI) développées au cours des cinquante dernières années [2] pour fournir la connaissance du domaine nécessaire à la GAR.

Les approches actuelles de l'utilisation des RAG se concentrent sur une connaissance approfondie du domaine et sur des corpus relativement statiques, c'est-à-dire que le contenu des documents ajoutés à un corpus change rarement. Pour que les intelligences deviennent omniprésentes dans notre vie quotidienne, capables de résoudre de manière autonome des problèmes allant du plus trivial au plus complexe, elles devront avoir accès à un vaste corpus en constante évolution, généré par les interactions utilisateur-intelligence, ainsi qu'à des données commerciales et mondiales pertinentes. Nous pensons que doter les intelligences de ce type de "mémoire" étendue et dynamique est un élément clé pour réaliser cette vision, et nous ne pensons pas que les approches RAG actuelles soient adaptées à cet avenir. Étant donné que des historiques de dialogue entiers, des ensembles de données commerciales et d'autres contenus spécifiques à un domaine ne peuvent pas être adaptés efficacement à la fenêtre contextuelle de la LLM, de nouvelles approches doivent être développées pour traiter la mémoire corporelle intelligente. L'ajout de la mémoire aux intelligences pilotées par la LLM n'est pas une idée nouvelle - ce concept a été exploré précédemment dans MemGPT [3].

Récemment, les graphes de connaissances (KG) ont été utilisés pour augmenter les architectures RAG afin de remédier à de nombreuses lacunes des techniques traditionnelles de RI [4]. Dans cet article, nous présentons Zep [5], un service de couche en mémoire alimenté par Graphiti [6], un moteur de graphe de connaissances dynamique et temporel.Zep ingère et synthétise des données de messages non structurées et des données commerciales structurées.Le moteur KG de Graphiti met à jour dynamiquement le graphe de connaissances avec de nouvelles informations sans perte, en maintenant une chronologie des faits et des relations, y compris les liens entre les données. Le moteur Graphiti KG met à jour dynamiquement le graphe de connaissances avec de nouvelles informations sans perte, en maintenant une chronologie des faits et des relations, y compris leurs dates d'expiration. Cette approche permet au Knowledge Graph de représenter un monde complexe et évolutif.

Zep étant un système de production, nous accordons une grande importance à la précision, à la latence et à l'évolutivité de ses mécanismes de récupération de la mémoire. Nous utilisons deux repères existants pour évaluer l'efficacité de ces mécanismes : la tâche de récupération de la mémoire profonde (DMR) dans MemGPT [3] et le repère LongMemEval [7].

2. la cartographie des connaissances

Dans Zep, la mémoire est prise en charge par un graphe de connaissances dynamique et temporel ℊ = (𝓃, ℯ, φ), où 𝓃 représente un nœud, ℯ représente une arête, et φ:ℯ→ 𝓃 × 𝓃 représente une fonction d'association formalisée. Ce graphe est composé de trois sous-graphes hiérarchiques : le sous-graphe des parcelles, le sous-graphe des entités sémantiques et le sous-graphe des communautés.

2.1 Episodes

La construction du graphe de Zep commence par l'ingestion d'unités de données brutes appelées épisodes. Les épisodes peuvent être de trois types principaux : messages, texte ou JSON. Bien que chaque type nécessite un traitement spécifique pendant la construction du graphe, nous nous concentrons dans cet article sur le type de message parce que nos expériences se concentrent sur la mémoire de dialogue. Dans notre contexte, un message consiste en un texte relativement court (plusieurs messages peuvent être adaptés à la fenêtre contextuelle du LLM) et les participants associés qui ont produit le discours.

Chaque message contient un horodatage de référence trefL'heure, qui indique quand le message a été envoyé. Ces informations temporelles permettent à Zep d'identifier et d'extraire avec précision les dates relatives ou partielles mentionnées dans le contenu du message (par exemple, "jeudi prochain", "dans quinze jours" ou "l'été dernier"). Zep met en œuvre un modèle diachronique, où la ligne de temps T représente l'ordre chronologique des événements, et la ligne de temps T représente l'ordre chronologique d'ingestion des données Zep. Bien que T Les chronogrammes servent l'objectif traditionnel de l'audit des bases de données, mais le chronogramme T fournit une dimension supplémentaire pour modéliser la nature dynamique des données de dialogue et de la mémoire. Cette double approche temporelle représente une nouvelle avancée dans la construction de graphes de connaissances LLM et sous-tend les capacités uniques de Zep par rapport aux propositions précédentes de RAG basées sur des graphes.

Côté tracé ℯe Relier les parcelles aux nœuds d'entités qui en ont été extraits. Les graphes et leurs arêtes sémantiques dérivées conservent des index bidirectionnels qui suivent la relation entre une arête et son graphe source. Cette conception renforce la nature non destructive des sous-graphes de graphes de Graphiti en permettant une traversée avant et arrière : les artefacts sémantiques peuvent être retracés jusqu'à leurs sources pour être cités ou référencés, tandis que les graphes peuvent être rapidement retrouvés pour les entités et les faits qui leur sont associés. Bien que ces connexions n'aient pas été directement examinées dans les expériences de cette thèse, elles seront explorées dans des travaux futurs.

2.2 Entités et faits sémantiques

2.2.1 Entités

L'extraction des entités est la phase initiale du traitement des épisodes. Lors de l'ingestion, le système traite le contenu du message en cours et les dernières données de l n afin de fournir un contexte pour la reconnaissance des entités nommées. Dans le cadre de cet article et de l'implémentation générale de Zep, l'outiln=4, deux dialogues complets ont été fournis pour l'évaluation contextuelle. Étant donné que nous nous concentrons sur le traitement des messages, le locuteur est automatiquement extrait en tant qu'entité. Après l'extraction initiale de l'entité, nous utilisons une technique de réflexion inspirée de la réflexion [12] pour minimiser les illusions et améliorer la couverture de l'extraction. Le système extrait également des résumés d'entités de l'épisode afin de faciliter les opérations ultérieures de résolution et de recherche d'entités.

Après l'extraction, le système intègre chaque nom d'entité dans un espace vectoriel à 1024 dimensions. Cette intégration permet d'extraire des nœuds similaires parmi les nœuds d'entités graphiques existants par une recherche de similarité cosinusoïdale. Le système effectue également des recherches en texte intégral sur les noms d'entités et les résumés existants afin d'identifier d'autres nœuds candidats. Ces nœuds candidats, ainsi que le contexte de l'intrigue, sont ensuite traités par LLM à l'aide de nos indices de résolution d'entités. Lorsque le système identifie des entités en double, il génère un nom et un résumé mis à jour.

Après l'extraction et l'analyse des entités, le système fusionne les données dans le graphe de connaissances à l'aide de requêtes Cypher prédéfinies. Nous avons choisi cette approche plutôt que des requêtes de base de données générées par LLM afin de garantir un format architectural cohérent et de réduire la probabilité d'hallucinations.

Une sélection de conseils pour la construction de l'atlas est fournie en annexe.

2.2.2 Faits

pour chaque fait contenant son prédicat clé. De même, le même fait peut être extrait plusieurs fois à travers différentes entités, ce qui permet à Graphiti de modéliser des faits multi-entités complexes en mettant en œuvre des hyperedges.

Après l'extraction, le système génère des enchâssements pour les faits en vue de l'intégration des graphes. Le système procède à la déduplication des arêtes par le biais d'un processus similaire à la résolution des entités. Les arêtes hybrides liées à la recherche sont limitées aux arêtes qui existent entre des paires d'entités identiques aux nouvelles arêtes proposées. Cette restriction permet non seulement d'éviter les combinaisons incorrectes d'arêtes similaires entre différentes entités, mais aussi de réduire considérablement la complexité informatique du processus de dédoublonnage en limitant l'espace de recherche à un sous-ensemble d'arêtes associées à une paire d'entités particulière.

2.2.3 Extraction du temps et invalidation des arêtes

L'une des principales caractéristiques de Graphiti par rapport aux autres moteurs de graphes de connaissances est qu'il gère les mises à jour dynamiques des informations par le biais de processus d'extraction temporelle et d'invalidation des arêtes.

utilisation du système tref Extraction d'informations temporelles sur les faits à partir du contexte de l'intrigue. Cela permet une extraction et une représentation précises des dates, y compris des dates absolues (par exemple, "Alan Turing est né le 23 juin 1912") et des dates relatives (par exemple, "J'ai commencé mon nouveau travail il y a quinze jours"). Conformément à notre approche de modélisation du temps double, le système suit quatre horodatages :t Créer et t Expiration ∈T Contrôler la création ou l'invalidation des faits dans le système, ainsi que les tvalide répondre en chantant tinvalideT Permet de suivre la période au cours de laquelle le fait a été établi. Ces points de données temporelles sont stockés sur le côté avec d'autres informations factuelles.

L'introduction de nouvelles arêtes peut invalider les arêtes existantes dans la base de données. Le système utilise la méthode LLM pour comparer les nouvelles arêtes avec les arêtes existantes sémantiquement liées afin d'identifier les contradictions potentielles. Lorsque le système identifie une contradiction temporelle, il le fait en comparant les éléments suivants tinvalide Réglé sur le côté non valide de la tvalide afin d'invalider les arêtes concernées. Selon le calendrier de la transaction TGraphiti donne toujours la priorité aux nouvelles informations lorsqu'il s'agit de déterminer l'invalidation d'une arête.

Cette approche intégrée permet d'ajouter dynamiquement des données à Graphiti au fur et à mesure de l'évolution des conversations, tout en conservant l'état actuel des relations et un historique de leur évolution dans le temps.

2.3 Communauté

Après avoir construit le graphe et les sous-graphes sémantiques, le système construit les sous-graphes communautaires par détection de communauté. Bien que notre approche de détection des communautés s'appuie sur les techniques décrites dans GraphRAG [4], nous utilisons l'algorithme de propagation des étiquettes [13] au lieu de l'algorithme de Leiden [14]. Ce choix est influencé par une simple extension dynamique de la propagation d'étiquettes qui permet au système de maintenir des représentations de communautés précises pendant des périodes plus longues, à mesure que de nouvelles données entrent dans le graphe, ce qui repousse la nécessité d'un rafraîchissement complet de la communauté.

L'expansion dynamique met en œuvre la logique d'une étape récursive unique dans la propagation des étiquettes. Lorsque le système ajoute un nouveau nœud d'entité au graphe ni ∈Ns Lorsqu'il le fait, il examine les communautés des nœuds voisins. Le système assigne le nouveau nœud à la communauté détenue par la majorité de ses voisins, puis met à jour le résumé et le graphique de la communauté en conséquence. Bien que cette mise à jour dynamique permette aux communautés de s'adapter efficacement à l'afflux de données dans le système, les communautés qui en résultent s'écartent progressivement de celles générées par la propagation complète des étiquettes. Par conséquent, des mises à jour périodiques des communautés restent nécessaires. Cependant, cette stratégie de mise à jour dynamique fournit une heuristique pratique qui réduit de manière significative la latence et les coûts d'inférence LLM.

À l'instar de [4], nos nœuds communautaires contiennent des résumés dérivés de résumés itératifs de type map-reduce des nœuds membres. Cependant, notre approche de recherche est très différente de l'approche map-reduce de GraphRAG [4]. Pour soutenir notre approche de recherche, nous avons généré des noms de communautés contenant des termes clés et des sujets connexes à partir des résumés des communautés. Ces noms sont intégrés et stockés pour permettre la recherche par similarité cosinusoïdale.

3. la récupération de la mémoire

Le système de recherche de mémoire de Zep offre une fonctionnalité puissante, sophistiquée et hautement configurable. Globalement, l'API de recherche graphique de Zep met en œuvre une fonction f:SSqui accepte une requête sous forme de chaîne de texte α ∈S en entrée et renvoie un contexte de chaîne de texte β ∈S comme sortie. La sortie β contient des données formatées provenant des nœuds et des arêtes dont les intelligences LLM ont besoin pour générer des réponses précises à la requête α. Le processus f(α)→β se compose de trois étapes différentes :

- Recherche (φ) : ce processus identifie d'abord les nœuds et les arêtes post-sélectionnés susceptibles de contenir des informations pertinentes. Bien que Zep utilise un certain nombre de méthodes de recherche différentes, la fonction de recherche globale peut être exprimée comme φ.Ssn-×𝒩sn. ×𝒩cn. Ainsi, φ transforme la requête en un triple tuple contenant une liste d'arêtes sémantiques, de nœuds d'entités et de nœuds de communautés - les trois types de graphes contenant des informations textuelles pertinentes.

- Réorganisateur (ρ) : la deuxième étape consiste à réorganiser les résultats de la recherche. La fonction ou le modèle de réorganisation prend une liste de résultats de recherche et génère une version réorganisée de ces résultats : ρ:φ(α),...→sn×𝒩sn×𝒩cn.

- Constructeur (χ) : dans la dernière étape, le constructeur convertit les nœuds et les arêtes pertinents en un contexte textuel : χ : le nœud et l'arête sont les mêmes.sn×𝒩sn×𝒩cnS. Pour chaque eis, χ renvoie le fait et tvalidetinvalide pour chaque ni𝒩srenvoie les champs nom et résumé ; pour chaque ni𝒩crenvoie le champ résumé.

Une fois ces définitions en place, nous pouvons définir l'option f est représentée comme une combinaison de ces trois éléments :f(α) = χ(ρ(φ(α))) = β.

Exemple de modèle de chaîne de contexte :

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

3.1 Recherche

Zep met en œuvre trois fonctions de recherche : la recherche de similarité sémantique en cosinus (φcos), Okapi BM25 recherche en texte intégral (φbm25}) et la recherche en profondeur (φbfs). Les deux premières fonctions utilisent l'implémentation de Lucene par Neo4j [15] [16]. Chaque fonction de recherche offre des capacités différentes en termes d'identification des documents pertinents et, ensemble, elles fournissent une couverture complète des résultats candidats avant de les réorganiser. Les champs de recherche diffèrent selon les types d'objets : pour 𝒜snous recherchons des champs de faits ; pour 𝒩srecherche des noms d'entités ; pour 𝒩cCette méthode permet de rechercher des noms de communautés qui comprennent des mots-clés et des phrases pertinents couverts par la communauté. Bien que notre méthode de recherche de communautés ait été développée indépendamment, elle est parallèle à la méthode de recherche de clés de haut niveau de LightRAG [17]. La combinaison de l'approche de LightRAG avec des systèmes basés sur les graphes tels que Graphiti offre une direction prometteuse pour la recherche future.

Alors que les méthodes de similarité en cosinus et de recherche en texte intégral sont bien établies dans les RAG [18], la recherche en première intention sur les graphes de connaissances a reçu une attention limitée dans le domaine des RAG, avec des exceptions notables dans les systèmes de RAG basés sur les graphes tels que AriGraph [9] et Distill-SynthKG [19]. Dans Graphiti, la recherche de type "breadth-first" est réalisée en identifiant les n des nœuds et des arêtes supplémentaires à l'intérieur d'un saut afin d'améliorer les résultats de la recherche initiale. En outre, φbfs La possibilité d'accepter des nœuds comme paramètres de recherche permet un contrôle plus fin de la fonction de recherche. Cette fonction s'avère particulièrement précieuse lorsqu'on utilise des épisodes récents comme point de départ d'une recherche de type "breadth-first", car elle permet au système de fusionner les entités et les relations récemment mentionnées dans le contexte de la recherche.

Chacune de ces trois méthodes de recherche cible un aspect différent de la similarité : la recherche en texte intégral identifie la similarité des mots, la similarité des cosinus capture la similarité sémantique et la recherche en profondeur révèle la similarité contextuelle - les nœuds et les arêtes les plus proches dans le graphe apparaissent dans des contextes de dialogue plus similaires. Cette approche multidimensionnelle de l'identification des résultats candidats maximise la probabilité de découvrir le meilleur contexte.

3.2 Réorganisateur

Alors que l'approche de recherche initiale vise un rappel élevé, le réordonnateur améliore la précision en donnant la priorité aux résultats les plus pertinents. Zep prend en charge les méthodes de réordonnancement existantes telles que la fusion des rangs réciproques (RRF) [20] et la pertinence marginale maximale (MMR) [21]. En outre, Zep met en œuvre un réordonnateur de mentions d'épisodes basé sur un graphe qui hiérarchise les résultats en fonction de la fréquence des mentions d'entités ou de faits, rendant ainsi plus accessibles les informations fréquemment citées. Le système comprend également un réordonnateur de la distance entre les nœuds, qui réorganise les résultats en fonction de leur distance par rapport à un nœud central spécifié, fournissant ainsi un contenu localisé dans une région spécifique du graphe de connaissances. La capacité de réorganisation la plus sophistiquée du système utilise des codeurs croisés - des LLM qui génèrent des scores de pertinence en utilisant l'attention croisée pour évaluer la pertinence des nœuds et des arêtes par rapport à une requête, bien que cette approche entraîne le coût de calcul le plus élevé.

4) Expériences

Cette section analyse deux expériences menées à l'aide de tests de référence basés sur la mémoire LLM. La première évaluation utilise la tâche Deep Memory Retrieval (DMR) développée dans [3], qui utilise un sous-ensemble de 500 conversations de l'ensemble de données de chat multi-session présenté dans "Beyond Goldfish Memory : long-term open-domain conversations" [22]. La deuxième évaluation utilise le test de référence LongMemEval de [7]. Plus précisément, nous avons utilisé le test LongMemEval ċċċċċċċċċċiża ta 'l-ħbieb tagħha qui fournit des contextes de dialogue étendus d'une longueur moyenne de 115 000 tokens.

Pour les deux expériences, nous avons intégré l'historique du dialogue dans le graphe de connaissances de Zep via l'API de Zep. Nous récupérons ensuite les 20 arêtes les plus pertinentes (faits) et les nœuds d'entité (résumés d'entité) à l'aide des techniques décrites dans la section 3. Le système reformate ces données en chaînes de contexte qui correspondent à la fonctionnalité fournie par l'API de mémoire de Zep.

Bien que ces expériences démontrent les principales capacités de recherche de Graphiti, elles ne représentent qu'un sous-ensemble de la fonctionnalité de recherche complète du système. Ce champ d'application ciblé permet des comparaisons claires avec les tests de référence existants, tout en préservant l'espace pour des travaux futurs visant à explorer d'autres capacités des graphes de connaissances.

4.1 Sélection du modèle

Notre mise en œuvre expérimentale utilise le modèle BGE-m3 de BAAI pour les tâches de réorganisation et d'intégration [23] [24]. Pour la construction de graphes et la génération de réponses, nous utilisons gpt-4o-mini-2024-07-18 pour la construction de graphes et gpt-4o-mini-2024-07-18 et gpt-4o-2024-11-20 pour les intelligences de conversation afin de générer des réponses au contexte fourni.

Pour assurer une comparabilité directe avec les résultats DMR de MemGPT, nous avons également effectué une évaluation DMR en utilisant gpt-4-turbo-2024-04-09.

Les carnets expérimentaux seront mis à la disposition du public via notre dépôt GitHub, et les conseils expérimentaux associés sont inclus dans l'annexe.

Tableau 1 : Récupération de la mémoire profonde

mémorisationmodélisationscore
Résumé récursif Résumé du dialogue MemGPT ? Dialogue completgpt-4-turbo gpt-4-turbo gpt-4-turbo gpt-4-turbo gpt-4-turbo gpt-4-turbo35.3% 78.6% 93.4% 94.4%
Zep Résumé du dialoguegpt-4-turbo gpt-4o-mini94.8%
Dialogue complet Zepgpt-4o-mini gpt-4o-mini88.0% 98.0% 98.2%

† Les résultats sont présentés dans [3].

4.2 Récupération de la mémoire profonde (DMR)

L'évaluation de la récupération de la mémoire profonde a été introduite par [3] et consiste en 500 dialogues multi-sessions, chacun contenant 5 sessions de chat avec jusqu'à 12 messages par session. Le cadre MemGPT [3] est actuellement en tête des mesures de performance avec une précision de 93,41 TP3T, ce qui représente une amélioration significative par rapport à la base de 35,31 TP3T obtenue par résumé récursif.

Pour établir une base de comparaison, nous avons implémenté deux méthodes de mémoire LLM communes : contexte de dialogue complet et résumé de session. En utilisant gpt-4-turbo, la ligne de base du dialogue complet atteint une précision de 94.41 TP3T, ce qui est légèrement supérieur aux résultats rapportés par MemGPT, alors que la ligne de base du résumé de session atteint 78.61 TP3T. Lorsque gpt-4o-mini est utilisé, les deux méthodes montrent une meilleure performance : 98.01 TP3T pour le dialogue complet, et 88.01 TP3T pour le résumé de session. . en raison de l'absence de détails méthodologiques suffisants dans leur travail publié, nous n'avons pas été en mesure de reproduire les résultats de MemGPT en utilisant gpt-4o-mini.

Nous avons ensuite évalué la performance de Zep en ingérant le dialogue et en utilisant sa fonction de recherche pour récupérer les 10 nœuds et arêtes les plus pertinents.Le juge LLM compare la réponse de l'intelligentsia à la réponse correcte fournie.Zep atteint une précision de 94,81 TP3T avec gpt-4-turbo, et 98,21 TP3T avec gpt-4o-mini. Ces résultats montrent des améliorations marginales par rapport à MemGPT et à la ligne de base correspondante pour le dialogue complet. Cependant, ces résultats doivent être replacés dans leur contexte : chaque dialogue ne contient que 60 messages, facilement adaptés à la fenêtre contextuelle actuelle de LLM.

Les limites de l'évaluation DMR vont au-delà de sa petite taille. Nos analyses révèlent d'importantes faiblesses dans la conception du test de référence. L'évaluation s'est appuyée exclusivement sur des questions d'extraction de faits à un tour et n'a pas été en mesure d'évaluer la compréhension de mémoires complexes. De nombreuses questions contenaient des formulations vagues, faisant référence à des concepts tels que "boisson de relaxation préférée" ou "passe-temps étrange" qui n'étaient pas explicitement décrits dans le dialogue. De manière cruciale, l'ensemble de données ne donne pas de bons résultats pour les cas d'utilisation des intelligences LLM dans le monde réel de l'entreprise. L'excellente performance obtenue en utilisant l'approche simple du contexte complet du LLM moderne met en évidence l'inadéquation de l'étalonnage dans l'évaluation des systèmes de mémoire.

Cette lacune est mise en évidence par les résultats de [7], qui montrent que la performance de LLM dans le test de référence LongMemEval diminue rapidement à mesure que la longueur du dialogue augmente. L'ensemble de données LongMemEval [7] répond à ces lacunes en fournissant des dialogues plus longs et plus cohérents qui reflètent mieux les scénarios d'entreprise, ainsi qu'un ensemble plus diversifié de questions d'évaluation.

4.3 LongMemEval (LME)

Nous avons évalué Zep en utilisant l'ensemble de données LongMemEvals, qui fournit des dialogues et des questions représentatifs des intelligences LLM des applications commerciales réelles. L'ensemble de données LongMemEvals représente un défi important pour les solutions LLM et de mémoire commerciale existantes [7], avec des dialogues d'une longueur moyenne d'environ 115 000 tokens. Cette longueur, bien qu'assez importante, reste dans la fenêtre contextuelle des modèles frontières actuels, ce qui nous permet d'établir une base de référence significative pour évaluer la performance de Zep.

L'ensemble de données contient six types de problèmes différents : utilisateurs à session unique, assistants à session unique, préférences à session unique, multisessions, mise à jour des connaissances et raisonnement temporel. Ces catégories ne sont pas réparties uniformément dans l'ensemble de données ; pour plus d'informations, nous renvoyons le lecteur à [7].

Toutes les expériences ont été menées entre décembre 2024 et janvier 2025 Nous avons effectué nos tests à l'aide d'ordinateurs portables grand public situés dans une résidence de Boston, MA, et connectés au service Zep hébergé sur AWS us-west-2. Cette architecture distribuée introduit une latence réseau supplémentaire dans l'évaluation des performances de Zep, bien que cette latence ne soit pas présente dans notre évaluation de base.

Pour l'évaluation des réponses, nous avons utilisé le GPT-4o et fourni les messages-guides spécifiques à la question fournis dans [7], qui se sont avérés très pertinents pour les évaluateurs humains.

4.3.1 LongMemEval et MemGPT

Afin d'établir une comparaison entre Zep et le système MemGPT actuel [3], nous avons tenté d'évaluer MemGPT à l'aide de l'ensemble de données LongMemEval. Étant donné que le cadre actuel de MemGPT ne prend pas en charge l'ingestion directe des historiques de messages existants, nous avons mis en œuvre une solution de contournement en ajoutant les messages de dialogue à l'historique des archives. Cependant, nous n'avons pas réussi à obtenir de Q&A en utilisant cette approche. Nous attendons avec impatience que d'autres équipes de recherche évaluent ce test de référence, car la comparaison des données de performance serait bénéfique pour le développement plus large des systèmes de mémoire LLM.

4.3.2 Résultats de LongMemEval

Zep a démontré des améliorations significatives à la fois en termes de précision et de latence par rapport à la ligne de base. En utilisant gpt-4o-mini, Zep obtient une amélioration de la précision de 15,21 TP3T par rapport à la base, tandis que gpt-4o obtient une amélioration de 18,51 TP3T. La réduction de la taille des indices entraîne également une réduction significative du coût de la latence par rapport à l'implémentation de base.

Tableau 2 : LongMemEvals

mémorisationmodélisationscoreremettre à plus tardDélai IQRMarqueur de contexte moyen
contexte completgpt-4o-mini55.4%31.3 s8.76 s115k
Zepgpt-4o-mini63.8%3.20 s1.31 s1.6k
contexte completgpt-4060.2%28.9 s6.01 s115k
Zepgpt-4071.2%2.58 s0.684 s1.6k

L'analyse par type de question a montré que gpt-4o-mini utilisant Zep a démontré des améliorations dans quatre des six catégories, avec les améliorations les plus significatives dans les types de questions complexes : préférence pour une session unique, multi-session, et raisonnement temporel. Lors de l'utilisation de gpt-4o, Zep a montré des améliorations supplémentaires dans la catégorie de la mise à jour des connaissances, soulignant qu'il est plus efficace lorsqu'il est utilisé avec des modèles plus performants. Cependant, des développements supplémentaires peuvent être nécessaires pour améliorer la compréhension des données temporelles de Zep par des modèles moins performants.

Tableau 3 : Décomposition des types de problèmes LongMemEvals

Type de problèmemodélisationcontexte completZepincrémentale
préférence pour une session uniquegpt-4o-mini30.0%53.3%77,71 TP3T
Assistant pour une session uniquegpt-4o-mini81.8%75.0%↑'6
déduction chronologiquegpt-4o-mini36.5%54.1%48.2%↑
multisessiongpt-4o-mini40.6%47.4%16.7%↑
Mise à jour des connaissancesgpt-4o-mini76.9%74.4%3.36%↓
utilisateur à session uniquegpt-4o-mini81.4%92.9%14.1%↑
préférence pour une session uniquegpt-4020.0%56.7%184%↑
Assistant pour une session uniquegpt-4094.6%80.4%17.7%↓
déduction chronologiquegpt-4045.1%62.4%38,41 TP3T
multisessiongpt-4044.3%57.9%30.7%↑
Mise à jour des connaissancesgpt-4078.2%83.3%6.52%↑
utilisateur à session uniquegpt-4081.4%92.9%14.1%↑

Ces résultats démontrent la capacité de Zep à améliorer les performances à toutes les échelles de modèles, les améliorations les plus significatives étant observées dans les types de problèmes complexes et délicats lorsqu'il est utilisé avec des modèles plus performants. Les améliorations en termes de latence sont particulièrement significatives, Zep réduisant les temps de réponse d'environ 901 TP3T tout en maintenant une plus grande précision.

La baisse des performances sur le problème d'aide à session unique - 17,71 TP3T pour gpt-4o et 9,061 TP3T pour gpt-4o-mini - représente une exception notable par rapport aux améliorations constantes de Zep et suggère la nécessité de poursuivre la recherche et le travail d'ingénierie.

5. conclusion

Nous avons présenté Zep, une approche de la mémoire LLM basée sur les graphes qui combine la mémoire sémantique et épisodique avec des résumés d'entités et de communautés. Notre évaluation montre que Zep atteint des performances de pointe dans les tests de mémoire existants, tout en réduisant les coûts d'étiquetage et en fonctionnant à des temps de latence nettement inférieurs.

Bien que les résultats obtenus par Graphiti et Zep soient impressionnants, il est probable qu'ils ne constituent que des avancées préliminaires dans les systèmes de mémoire basés sur les graphes. De nombreuses pistes de recherche pourraient s'appuyer sur ces deux cadres, notamment l'intégration d'autres approches GraphRAG dans le paradigme Zep, ainsi que de nouvelles extensions de notre travail.

La recherche a démontré la valeur du réglage fin des modèles pour l'extraction d'entités et de bords LLM dans le paradigme GraphRAG afin d'améliorer la précision tout en réduisant le coût et la latence [19] [25]. De même, les modèles affinés pour les indices Graphiti peuvent améliorer l'extraction de connaissances, en particulier pour les dialogues complexes. De plus, alors que la recherche actuelle sur les graphes de connaissances générés par LLM fonctionne principalement en l'absence d'ontologies formelles [9] [4] [17] [19] [26], les ontologies spécifiques à un domaine ont un potentiel significatif. Les ontologies de graphes, qui sont fondamentales dans les travaux sur les graphes de connaissances pré-LLM, méritent d'être explorées plus avant dans le cadre de Graphiti.

Notre recherche de tests de référence appropriés pour la mémoire révèle des options limitées, les tests de référence existants manquant généralement de robustesse et de sophistication, et se limitant souvent à de simples problèmes de recherche de faits par épingle [3]. Le domaine a besoin de tests de référence supplémentaires pour la mémoire, en particulier ceux qui reflètent les applications commerciales telles que les tâches liées à l'expérience client, afin d'évaluer et de différencier efficacement les approches de la mémoire. Notamment, les tests de référence existants sont insuffisants pour évaluer la capacité de Zep à traiter et à synthétiser l'historique du dialogue avec des données commerciales structurées. Bien que Zep se concentre sur la mémoire LLM, ses capacités RAG traditionnelles devraient être évaluées par rapport aux tests de référence établis dans [17] [27] [28].

La littérature actuelle sur les mémoires LLM et les systèmes RAG n'aborde pas de manière adéquate les questions d'évolutivité des systèmes de production en termes de coût et de temps de latence. Nous incluons l'évaluation comparative de la latence des mécanismes de récupération pour commencer à combler cette lacune, en suivant l'exemple des auteurs de LightRAG qui ont donné la priorité à ces mesures.

6. annexe

6.1 Conseils pour la construction du graphique

6.1.1 Extraction d'entités

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

6.1.2 Résolution des entités

<之前的消息>
{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 Extraction des faits

<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 Analyse des faits

根据以下上下文,判断 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 Extraction du temps

<先前消息>
{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)。

 

Référence :

https://arxiv.org/pdf/2501.13956

ZEP-Graphiti : une architecture de graphe de connaissances temporelles pour la mémoire dans l'intelligentsia

Zep : construction d'une couche de mémoire à long terme pour les applications d'IA, extraction et mise à jour des informations sur les utilisateurs et des données commerciales.

© déclaration de droits d'auteur

Articles connexes

Pas de commentaires

Vous devez être connecté pour participer aux commentaires !
S'inscrire maintenant
aucun
Pas de commentaires...