Cognee 是一个免费开源的 AI 记忆平台,给 Agent 提供跨会话的持久长期记忆。它把文档、代码、对话转成自托管的、可搜索的知识图谱。最有意思的一点是它不强依赖大模型:不配任何 LLM API key,靠本地小模型也能建图和检索。这篇拆它的记忆原语和可复用的分层思路。
解决什么问题
Agent 的痛点是每次会话都是白纸:项目上下文、过去做的决定、修过的 bug、学到的规则,一关会话全丢。Cognee 的思路是把这些沉淀成持久记忆,别的会话能再取回。它把记忆分成两类来源:文本变成实体、关系和可搜索的块;代码变成符号与依赖的图。会话蒸馏再把被接受的教训提炼进永久记忆。查询时,检索按需选取图、向量或代码上下文,应用可以检查取到的证据再作答。
和普通向量库的差别也在这里:向量库存的是「文本片段」,Cognee 存的是「有结构的记忆」——实体、关系、代码符号,以及从会话里蒸馏出来的规则。所以它能回答的不只是「这段话讲了什么」,还能追「这个决定背后是哪次讨论、哪段代码」。
remember 与 recall
记忆的读写就是两个原语。remember 存内容,recall 取回。下面这段不配 LLM,用本地模型抽图并嵌入:
import asyncio
import cognee
async def main():
await cognee.remember(
"居里夫人出生在华沙,在巴黎大学工作。",
dataset_name="local_quickstart",
)
results = await cognee.recall(
"居里夫人在哪里出生?",
datasets=["local_quickstart"],
)
for result in results:
print(result)
if __name__ == "__main__":
asyncio.run(main())
同样的工作流也走 CLI,两条命令即可:
cognee-cli remember "居里夫人出生在华沙。" -d local_quickstart
cognee-cli recall "居里夫人在哪里出生?" -d local_quickstart
没配 LLM 时,recall 返回的是匹配的源文本,不生成答案。要生成答案,再配 LLM。
本地小模型管线
这是它「无需 LLM」的关键:没配 API key 时,Cognee 用本地 GLiNER 模型做实体抽取,用本地嵌入模型做向量化,两者首次使用时自动下载,跑在 CPU 上。官方明确说这套 GLiNER 抽取器是「小模型管线」的演示版,生产级版本精度更高、标签覆盖更广(需联系官方)。LLM 依赖的增强阶段在没配模型时会自动跳过。
这套设计的可复用点在于「分层降级」:把记忆里最重、最耗资源的部分(实体抽取、嵌入)拆给可替换的小模型,把最需要智能的部分(生成答案、提炼教训)留给可选的 LLM。于是同一套记忆逻辑,既能在无 GPU 的机器上跑,也能接上大模型升级能力,而不是一上来就绑死某个模型供应商。
improve 与 forget
除了读写,还有两个原语补全记忆的生命周期:improve 丰富记忆、应用反馈、把会话知识桥接进图;forget 删除指定条目或数据集。加上 remember 和 recall,四个原语对应记忆的增、查、改、删。这个「会话知识 → 图」的桥接,是它和普通向量库的本质差别——它把「这一轮学到了什么」沉淀成下一轮能用的结构。
Postgres 单实例
传统图记忆要开一堆栈:图数据库管关系、向量数据库管嵌入、Redis 管会话、关系库管元数据,部署、安全、付费都跑在「Agent 记任何东西」之前。Cognee 从 1.0 起可以只用一个 Postgres 实例跑完整个记忆层——关系元数据、PGVector、图状态都放进去。官方标注这是 demo 特性,生产级是授权产品。启动命令一条:
docker run --rm -it -p 8000:8000 -e LLM_API_KEY="sk-..." -e ENABLE_BACKEND_ACCESS_CONTROL=false -v cognee_storage:/cognee-storage cognee/cognee:main
BEAM 基准
官方用 BEAM 评估测对话记忆:100K token 上下文得分 0.79,10M token 得分 0.67(探索性结果),由合成长上下文对话加 LLM 裁判评估。两个设置用不同对话、不同模型和检索流程,不能直接和别的系统比,报告里也注明了方法论与复现限制。数值只是参考,重点是它把「记忆质量」当成了可测的指标。
局限
Cognee 最明确的边界在精度和规模:本地 GLiNER 抽取是 demo 级,生产级要授权;Postgres 单实例也是 demo 特性。但对「给 Agent 加跨会话记忆」这个需求,它把「知识图谱 + 向量 + 会话蒸馏」这套分层思路做成了低门槛、可自托管、不强绑大模型的形态,可复用点恰恰是这四个原语和那套本地小模型管线——不必为了记忆去养一整套图数据库栈。