Aller au contenu

Cognee - Plateforme de mémoire pour agent IA

Cognee - Plateforme de mémoire pour agent IA

Cognee est une plateforme de mémoire IA open-source qui donne aux agents une mémoire à long terme persistante entre les sessions à l’aide d’un graphe de connaissances auto-hébergé. Son idée centrale est le pipeline ECL — Extract, Cognify, Load — qui ingère les documents, les conversations et les données provenant de nombreuses sources, les structure en graphe d’entités et de relations (l’étape « cognify »), et les charge dans les magasins de graphe et de vecteurs pour la récupération. Cela rend la mémoire une couche active et interrogeable plutôt qu’un simple dépôt de vecteurs.

Installation

MéthodeCommande
pippip install cognee
uvuv add cognee
Avec extraspip install "cognee[postgres,neo4j]"
Définir une clé LLMexport LLM_API_KEY="sk-..."
Vérifierpython -c "import cognee; print('ok')"

Le pipeline ECL

ÉtapeCe qu’elle fait
ExtractIngérer les données brutes depuis 30+ types de sources
CognifyConstruire un graphe de connaissances (entités, relations)
LoadStocker dans les bases de graphe + vecteurs pour la récupération
SearchInterroger la mémoire (graphe, vecteur, ou hybride)

Utilisation de base

import cognee
import asyncio

async def main():
    # 1) Ajouter des données à la mémoire
    await cognee.add("Nick préfère les réponses concises et directes.")
    await cognee.add(open("notes.md").read())

    # 2) Construire le graphe de connaissances
    await cognee.cognify()

    # 3) Interroger la mémoire
    results = await cognee.search("Quelles sont les préférences de Nick ?")
    print(results)

asyncio.run(main())
AppelDescription
cognee.add(data)Ingérer du texte, des fichiers ou des données structurées
cognee.cognify()Traiter les données ingérées dans le graphe
cognee.search(query, ...)Récupérer à partir de la mémoire
cognee.prune()Réinitialiser/effacer les magasins de mémoire

Types de recherche

TypeRetour
SearchType.GRAPH_COMPLETIONRéponse ancrée dans le graphe de connaissances
SearchType.RAG_COMPLETIONRéponse classique RAG vectorielle
SearchType.INSIGHTSRelations/perspectives des entités
SearchType.CHUNKSChunks bruts correspondants
SearchType.SUMMARIESRésultats résumés
from cognee import SearchType
res = await cognee.search("connexions entre X et Y",
                          query_type=SearchType.INSIGHTS)

Sources de données

CatégorieExemples
DocumentsPDF, DOCX, Markdown, text
StructuréesCSV, JSON, databases
ConversationsHistorique de chat/messages
CodeFichiers source/repos

Backends de stockage

CoucheOptions
Graph storeNetworkX (défaut), Neo4j, Kuzu
Vector storeLanceDB (défaut), Qdrant, pgvector, Weaviate
RelationalSQLite (défaut), PostgreSQL
ConfigDéfinir via variables d’environnement / config

Datasets et multi-tenancy

FonctionnalitéUtilisation
DatasetsEspace de noms pour la mémoire par utilisateur/projet
cognee.add(data, dataset_name="user-123")Portée d’ingestion
PermissionsContrôler l’accès aux partitions de mémoire

Workflows courants

# Donner à un agent une mémoire durable d'un utilisateur entre les sessions
await cognee.add(conversation_history, dataset_name="user-42")
await cognee.cognify()
context = await cognee.search("résumer ce que nous savons sur l'utilisateur-42")
# injecter le `context` dans l'invite du agent

# Construire un graphe sur un corpus de documents pour les questions de connexion
for f in docs: await cognee.add(open(f).read())
await cognee.cognify()
await cognee.search("comment ces documents sont-ils liés ?",
                    query_type=SearchType.INSIGHTS)

Cognee vs autres frameworks de mémoire

AspectCogneeMem0Graphiti
ModèleGraph-native (ECL)Multi-tier vecteur/graphe/KVGraphe de connaissances temporel
ForceRaisonnement sur graphe localPersonnalisation conversationnelleFaits qui changent au fil du temps
Self-hostOuiOuiOui
Meilleur pourMémoire de graphe critique pour la confidentialitéPersonnalisationRaisonnement temporel

Ressources