还在为AI"失忆"烦恼?试试这个开源知识图谱引擎,GitHub Stars 48k+,70+企业生产验证
AI为什么总是"失忆"?
做AI应用开发的同学,一定遇到过这个场景:
用户连续三天咨询同一个技术问题。第一天AI热情洋溢解决了问题,第三天换了个会话------"您好,请问有什么可以帮您?"
用户心态崩了:"我三天前就说过!你们是不是在耍我?"
这不是段子,这是每个AI应用开发者迟早会面对的灵魂拷问:AI为什么不记得?
问题根源在于:传统AI应用的数据"用完即丢",记忆只存在于单次会话。上下文窗口再大,也装不下企业与客户数月乃至数年的交互历史。
今天要介绍一个彻底解决这个问题的好项目------cognee,一个开源知识引擎,自称"AI的记忆控制平面"(Memory Control Plane)。
一、快速安装:3步跑通第一个Demo
bash
# 安装cognee(Python 3.8+)
pip install cognee
# 配置环境变量
echo "OPENAI_API_KEY=sk-your-key" > .env
# 可选:安装图数据库支持(以Neo4j为例)
pip install neo4j
cognee支持多种图数据库和向量存储,首次使用只需配置LLM即可。
二、5行代码:让你的AI拥有记忆
这是cognee官方给出的最小代码示例:
python
from cognee import cognee
# Step 1: 配置LLM
cognee.config.set_llm("openai", model="gpt-4o")
# Step 2: 添加数据源(支持PDF/网页/文本/结构化数据)
cognee.remember(
data="/path/to/your/documents",
data_type="text"
)
# Step 3: 构建知识图谱记忆
await cognee.cognify()
# Step 4: 提问------cognee自动选择最优检索策略
results = await cognee.recall("What did we discuss about project X?")
核心API只有4个:
| API | 作用 |
|---|---|
remember() |
添加数据源,构建记忆原材料 |
cognify() |
执行ECL Pipeline,生成知识图谱 |
recall() |
自然语言查询,检索记忆 |
improve() |
根据反馈自动优化记忆 |
三、深入ECL Pipeline:cognee如何构建记忆
ECL = Extract → Cognify → Load
这是cognee的核心处理流程,三步完成从原始数据到知识图谱的转化:
bash
原始数据 → Extract(提取) → Cognify(认知化) → Load(加载) → 知识图谱
1. Extract(提取阶段)
接收各种格式的原始数据(PDF、网页、数据库、API响应等),cognee内置30+种数据格式适配器,统一转换为中间表示。
2. Cognify(认知化阶段) ⭐ 核心
调用LLM对每个语义块进行深度解析:
python
# cognify() 内部发生了什么?简化示意
async def cognify_document(document):
# 实体识别:从文本中抽取"人物、地点、组织、概念"
entities = await llm.extract_entities(document)
# 关系抽取:确定实体间关系------"工作于"、"收购"、"研发"
relationships = await llm.extract_relations(document, entities)
# 摘要生成:为每个块生成摘要,保留高层语义
summaries = await llm.generate_summary(document)
# 嵌入向量化:同步写入向量数据库
vectors = await embed(entities + relationships + summaries)
return KnowledgeGraph(entities, relationships, vectors)
3. Load(加载阶段)
认知化后的数据写入存储层,支持三种存储组合:
| 存储类型 | 适用场景 | 支持方案 |
|---|---|---|
| 图存储 | 实体和关系查询 | Neo4j, Memgraph, Kuzu, Amazon Neptune |
| 向量存储 | 语义相似度检索 | LanceDB, Qdrant, pgvector, Pinecone, ChromaDB |
| 关系存储 | 文档和溯源 | SQLite, PostgreSQL |
四、14种检索模式:按需选择,别让工具限制思维
cognee另一个亮点:14种检索模式。不同类型的问题需要不同的检索策略。
python
# 手动指定检索模式
results = await cognee.recall(
"What is the relationship between Company A and B?",
retrieval_method="KNOWLEDGE_GRAPH" # 使用知识图谱查询
)
# 或者让LLM自动选择最优模式(推荐)
results = await cognee.recall(
"What did we discuss about project X?",
retrieval_method="FEELING_LUCKY"
)
14种检索模式一览:
| 模式 | 适用场景 |
|---|---|
GRAPH |
图结构遍历,基于实体关系检索 |
VECTOR |
纯向量相似度搜索 |
KNOWLEDGE_GRAPH |
结构化知识图谱查询 |
TEMPORAL |
时间感知的图搜索,带时序实体提取 |
DOCUMENT |
整文档检索 |
CHUNKS |
原始块向量检索 |
CHUNKS_LEXICAL |
词汇检索(Jaccard相似度) |
SUMMARIES |
在预生成摘要上的检索 |
CODING_RULES |
代码库检索,带规则关联 |
FEELING_LUCKY |
LLM自动选择最优模式 |
五、实战:构建企业知识库记忆系统
场景:客服对话历史记忆
python
from cognee import cognee
async def setup_customer_memory():
# 1. 配置
cognee.config.set_llm("openai", model="gpt-4o")
cognee.config.add_vector_store("lancedb")
cognee.config.add_graph_store("neo4j")
# 2. 添加历史客服对话
await cognee.remember(
data="./customer_conversations/",
data_type="text"
)
# 3. 构建知识图谱
await cognee.cognify()
# 4. 查询历史
result = await cognee.recall(
"客户张总上周反馈的产品问题解决了吗?"
)
print(result)
# 运行
asyncio.run(setup_customer_memory())
多跳推理实战
cognee的一大优势是支持多跳推理:
python
# 问:"A公司收购的公司里,有哪些后来上市了?"
result = await cognee.recall(
"哪些被A公司收购的企业后来成功上市了?",
retrieval_method="KNOWLEDGE_GRAPH"
)
# 传统RAG无法回答这种问题,cognee可以
六、性能对比:cognee vs 传统RAG
官方在HotpotQA数据集上的测试结果:
| 指标 | Base RAG | cognee |
|---|---|---|
| EM(精确匹配) | 0 | 0.71 |
| F1分数 | 0.12 | 0.78 |
| LLM评判正确率 | 0.4 | 0.86 |
| 检索准确率 | --- | 92.5% |
Base RAG在EM指标上挂零,传统方案在该测试上几乎完全失效。cognee凭借图+向量混合架构,F1提升6倍。
七、生态集成:开箱即用的记忆组件
Claude Code插件
bash
# 方式1:通过Claude CLI安装(具体命令请参考官方文档)
claude plugins install cognee
# 方式2:或通过包管理器
pip install cognee
⚠️ Claude Code插件安装方式请以官方仓库最新说明为准。
安装后,AI在多轮对话中积累的知识会自动沉淀到cognee知识图谱,下次开新会话"还记得"之前讨论过的内容。
OpenClaw插件
cognee已作为OpenClaw官方插件发布:
python
# OpenClaw中启用cognee记忆
from openclaw.plugins import cognee
openclaw.use(cognee.memory())
Hermes Agent集成
bash
hermes memory setup
# 选择 Cognee 作为记忆提供者
MCP协议兼容
Model Context Protocol(MCP)是当下Agent互操作的热门标准。cognee原生提供MCP服务器支持,任何兼容MCP的Agent都可以读写cognee的记忆存储。
八、与同类工具横向对比
| 特性 | cognee | Mem0 | Graphiti | Zep |
|---|---|---|---|---|
| 架构 | 图+向量混合 | 向量为主 | 图+向量 | 向量+时序 |
| GitHub Stars | 48k+ | 6k+ | 3k+ | 2k+ |
| 知识图谱构建 | ✅ 自动 | ❌ | ✅ | ❌ |
| 多跳推理 | ✅ 原生 | 有限 | ✅ | 有限 |
| 检索模式 | 14种 | 1-2种 | 1-2种 | 1-2种 |
| MCP支持 | ✅ | ❌ | ❌ | ❌ |
| 自进化 | ✅ improve | ❌ | ❌ | ❌ |
结论: 如果你需要完整的企业级AI记忆方案,cognee是目前功能最全面、生态集成最深的开源选择。
九、避坑指南:实战经验总结
1. 数据准备
python
# ✅ 推荐:结构化良好的文本数据
cognee.remember(
data="./structured_docs/",
data_type="text"
)
# ⚠️ 注意:非结构化数据建议先做预处理
# cognee对"脏数据"的容忍度有限
2. 检索模式选择
python
# ✅ 简单事实查询 → VECTOR 或 CHUNKS
# ✅ 复杂关系推理 → KNOWLEDGE_GRAPH 或 GRAPH
# ✅ 不确定场景 → FEELING_LUCKY(让LLM选)
# ❌ 不要对所有问题都用同一种模式
3. 性能优化
python
import os
from itertools import islice
def chunked(iterable, size):
"""将可迭代对象分块"""
it = iter(iterable)
while chunk := list(islice(it, size)):
yield chunk
async def cognify_large_dataset(data_dir):
files = os.listdir(data_dir)
for batch in chunked(files, 100):
for file in batch:
await cognee.remember(file, data_type="text")
await cognee.cognify() # 每批构建一次
总结
cognee解决的不是简单的"存储"问题,而是认知基础设施问题:
- 记忆是结构化的 → 知识图谱而非扁平文本
- 记忆是可演化的 → improve() 自动优化
- 记忆是多跳的 → 支持"A通过B影响C"类推理
- 记忆是可查询的 → 14种检索模式按需选择
如果你正在构建需要持久记忆的AI应用,cognee值得一试。GitHub Stars 48k+、70+企业生产验证的质量背书,加上Apache 2.0开源协议,没有后顾之忧。
快速上手:
bash
pip install cognee
# 看官方Colab notebook:搜索cognee官方notebook
参考资料:
- GitHub: github.com/topoteretes...
- 文档: cognee.ai/docs
- Discord: 加入官方社区讨论