Cognee ist eine Open-Source AI Memory Platform, die Agenten persistentes Langzeitgedächtnis über Sitzungen hinweg mit einem selbst gehosteten Knowledge Graph gibt. Die definierende Idee ist die ECL Pipeline — Extract, Cognify, Load — die Dokumente, Konversationen und Daten aus vielen Quellen aufnimmt, sie in ein Graph von Entitäten und Beziehungen strukturiert (der “Cognify” Schritt), und sie in Graph + Vector Stores für den Abruf lädt. Dies macht Speicher zu einer aktiven, abfragbaren Ebene statt eines flachen Vector Dumps.
Installation
| Methode | Befehl |
|---|
| pip | pip install cognee |
| uv | uv add cognee |
| Mit Extras | pip install "cognee[postgres,neo4j]" |
| Setzen Sie einen LLM Schlüssel | export LLM_API_KEY="sk-..." |
| Überprüfen | python -c "import cognee; print('ok')" |
Die ECL Pipeline
| Phase | Was es tut |
|---|
| Extract | Rohdate aus 30+ Quellentypen aufnehmen |
| Cognify | Ein Knowledge Graph aufbauen (Entitäten, Beziehungen) |
| Load | In Graph + Vector Datenbanken speichern für den Abruf |
| Search | Speicher abfragen (Graph, Vector oder Hybrid) |
Grundlegende Nutzung
import cognee
import asyncio
async def main():
# 1) Daten zum Speicher hinzufügen
await cognee.add("Nick zieht prägnante, direkte Antworten vor.")
await cognee.add(open("notes.md").read())
# 2) Baue das Knowledge Graph
await cognee.cognify()
# 3) Speicher abfragen
results = await cognee.search("Was sind Nicks Vorlieben?")
print(results)
asyncio.run(main())
| Call | Beschreibung |
|---|
cognee.add(data) | Text, Dateien oder strukturierte Daten aufnehmen |
cognee.cognify() | Aufgenommene Daten in den Graph verarbeiten |
cognee.search(query, ...) | Aus Speicher abrufen |
cognee.prune() | Speicher zurücksetzen/löschen |
Suchtypen
| Typ | Gibt zurück |
|---|
SearchType.GRAPH_COMPLETION | Antwort im Knowledge Graph geerdet |
SearchType.RAG_COMPLETION | Klassische Vector RAG Antwort |
SearchType.INSIGHTS | Entity Beziehungen/Insights |
SearchType.CHUNKS | Rohde Matching Chunks |
SearchType.SUMMARIES | Zusammengefasste Ergebnisse |
from cognee import SearchType
res = await cognee.search("Verbindungen zwischen X und Y",
query_type=SearchType.INSIGHTS)
Datenquellen
| Kategorie | Beispiele |
|---|
| Dokumente | PDF, DOCX, Markdown, Text |
| Strukturiert | CSV, JSON, Datenbanken |
| Konversationen | Chat/Nachrichts Verlauf |
| Code | Quelldateien/Repos |
Speicher Backends
| Ebene | Optionen |
|---|
| Graph Store | NetworkX (default), Neo4j, Kuzu |
| Vector Store | LanceDB (default), Qdrant, pgvector, Weaviate |
| Relational | SQLite (default), PostgreSQL |
| Config | Setzen über Umgebungsvariablen / Config |
Datasets & Multi-Tenancy
| Feature | Nutzung |
|---|
| Datasets | Namespace Speicher pro Benutzer/Projekt |
cognee.add(data, dataset_name="user-123") | Umfang Aufnahme |
| Permissions | Kontrolle Zugriff auf Speicher Partitionen |
Common Workflows
# Geben Sie einem Agenten haltbares Speicher eines Benutzers über Sitzungen
await cognee.add(conversation_history, dataset_name="user-42")
await cognee.cognify()
context = await cognee.search("fassen Sie zusammen, was wir über Benutzer-42 wissen")
# injiziere `context` in Agenten Prompt
# Baue einen Graph über eine Dokument Corpus für Connect-the-Dots Fragen
for f in docs: await cognee.add(open(f).read())
await cognee.cognify()
await cognee.search("wie beziehen sich diese Dokumente aufeinander?",
query_type=SearchType.INSIGHTS)
Cognee vs Andere Memory Frameworks
| Aspekt | Cognee | Mem0 | Graphiti |
|---|
| Modell | Graph-nativ (ECL) | Multi-Tier Vector/Graph/KV | Temporal Knowledge Graph |
| Stärke | Lokale Graph-Reasoning | Konversations Personalisierung | Fakten, die sich über die Zeit ändern |
| Self-Host | Ja | Ja | Ja |
| Beste für | Privacy-kritisches Graph Speicher | Personalisierung | Temporal Reasoning |
Ressourcen