Cognee:给 AI Agent 装上持久记忆的知识图谱引擎
Cognee 是面向代理的开源人工智能记忆平台。通过自托管知识图引擎,为您的人工智能代理提供跨会话的持久长期记忆。
秒懂
- 它是什么?
- Cognee 是一个开源的 AI 记忆平台,用知识图谱为 Agent 提供跨会话的长期记忆。本文基于其 README 与发布说明,分析它的核心机制、上手方式、性能取舍与适用边界。
- 适合谁用?
- Cognee 适合需要跨会话长期记忆的 AI Agent 开发者,尤其是那些希望用知识图谱而非纯向量库来组织领域知识的团队。它不适合只需要短期缓存的场景,也不适合不愿承担 LLM 调用成本或运维复杂度的项目。
- 能商用吗?
- 可以。Apache-2.0 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
- 还在维护吗?
- 在维护。仓库在最近一天内有新的提交。
- 用什么语言写的?
- 主要是 Python(依据 GitHub 的语言统计)。
以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。
开源项目深度解析
Agent 的长期记忆为什么需要知识图谱
多数对话式 AI 应用把上下文塞进 prompt 或向量数据库,但这种方式难以表达实体之间的关系。Cognee 给出的答案是:用知识图谱作为记忆的载体。它把文档、文本或任意格式的数据经过处理和推理,构建成节点和边组成的图结构。这样 Agent 不仅能按语义搜索,还能沿着关系路径进行推理。README 中提到的研究论文《Optimizing the Interface Between Knowledge Graphs and LLMs for Complex Reasoning》正是这一思路的理论支撑。这个项目的目标用户很明确:正在开发需要跨会话记忆的 Agent 的工程师,以及希望把公司内部多源数据统一成可查询知识库的团队。它不解决单轮对话的上下文问题,那属于 prompt 工程的范畴。
四个操作:remember、recall、forget、improve
Cognee 的 API 设计很精简,只有四个核心操作。remember 负责把信息存入知识图谱,README 给出的例子是 `await cognee.remember("Cognee turns documents into AI memory.")`,这条命令会依次执行 add、cognify 和 improve 三个步骤。recall 负责查询,它带有自动路由能力,会根据查询内容选择最合适的搜索策略。forget 用于删除记忆,CLI 里提供了 `cognee-cli forget --all` 这样的批量操作。improve 则隐含在 remember 的流程中,它让记忆能够从反馈中学习。这个设计把复杂的 ingestion 和推理过程封装成四个动词,降低了使用门槛。但注意,remember 里包含了 improve 步骤,这意味着每次存储都可能触发额外的 LLM 调用。
从安装到第一次查询的完整路径
安装 Cognee 只需要一条命令:`uv pip install cognee`。它支持 Python 3.10 到 3.14,这是 README 明确写明的版本范围。配置 LLM 的方式也很直接,设置环境变量 `LLM_API_KEY` 即可,或者使用项目提供的 `.env.template` 文件。如果要用其他 LLM 提供商,需要查阅文档中的 LLM Provider 部分,但 README 没有列出具体支持的提供商名单。运行流程是异步的,示例代码里用了 `asyncio` 和 `await`。CLI 提供了同步操作的替代方案,比如 `cognee-cli remember` 和 `cognee-cli recall`。本地 UI 通过 `cognee-cli -ui` 启动,但注意它依赖 Docker 容器,需要 Docker Desktop 或 Colima 等 OCI 兼容运行时。这一点对没有 Docker 环境的开发者是个额外的门槛。
性能调优的两个关键开关
Cognee 的默认配置偏向记忆质量而非响应速度。README 明确指出了两个影响性能的开关。第一个是 `AUTO_FEEDBACK`,默认开启时,每次查询后 Cognee 都会调用一次 LLM 来自我调优记忆。把它设为 `false` 可以省掉这次调用,让读取更快更便宜,但代价是记忆不会从对话信号中持续改进。第二个是 `CACHING`,它控制 session memory 功能。设为 `false` 会完全禁用会话记忆,`remember(session_id=...)` 会失效,`recall()` 也会丢失对话上下文。README 特别提醒,如果要基准测试 Cognee,不要关闭 `CACHING`,因为那等于测试一个没有记忆层的系统。还有一个 `DATASET_QUEUE_ENABLED` 开关,关闭它可以减少一点延迟,但有文件锁泄漏的风险。这些开关说明 Cognee 的性能表现高度依赖配置,默认设置并不适合所有场景。
session memory 与知识图谱的双层结构
Cognee 的记忆系统分两层。session memory 是快速缓存,用于短期会话上下文,`remember` 时可以指定 `session_id` 来写入。它同步到知识图谱是后台进行的,这意味着短期记忆的读取延迟较低。知识图谱层则是长期存储,保存经过处理的、带关系结构的数据。recall 的自动路由会先查 session memory,再回退到图谱层。这个设计让 Agent 既能快速响应当前对话,又能利用长期积累的领域知识。但这里有个权衡:session memory 依赖 `CACHING` 开关,如果为了性能关闭它,短期记忆功能就完全失效。README 没有说明 session memory 的容量限制或过期策略,这些细节需要查阅文档。对于只需要长期记忆、不需要会话上下文的场景,这个双层结构可能显得冗余。
与纯向量数据库的路线差异
Cognee 的替代方案不是某个具体产品,而是目前常见的向量数据库加 embedding 方案。向量数据库只存储和检索语义相近的片段,不关心实体之间的关系。Cognee 则通过知识图谱把实体连接起来,让 Agent 能回答涉及多跳关系的问题。README 中提到的研究论文标题就强调了这一点:优化知识图谱与 LLM 之间的接口,以支持复杂推理。这种路线差异带来的实际区别是:向量检索适合找相似内容,图谱查询适合找关联路径。Cognee 同时使用了向量嵌入和图谱推理,所以它不是要取代向量数据库,而是把两者结合起来。但这也意味着更高的复杂度和更多的计算资源。如果应用只需要简单的语义搜索,纯向量方案可能更轻量。
维护成本与许可边界
Cognee 采用 Apache-2.0 许可,这对商业使用是友好的,没有 copyleft 约束。但自托管意味着你需要自己维护运行环境。根据 README,本地 UI 依赖 Docker,这增加了部署的复杂性。项目的发布节奏很快,最近一个月内就有 v1.5.2、v1.5.3 和 v1.5.3.dev1 三个版本,说明项目处于活跃开发期。频繁更新可能带来 API 变化,升级时需要关注 changelog。README 提到 OTEL collector 和审计特性,说明它考虑了可观测性和合规需求,但这些功能的具体配置方式没有在 README 中展开。对于生产环境,你需要评估自己是否有能力维护知识图谱的存储和索引基础设施。社区插件和 Rust、TypeScript 客户端的存在表明生态在扩展,但这也意味着核心项目之外的工具需要额外验证。
编辑结论
Cognee 适合需要跨会话长期记忆的 AI Agent 开发者,尤其是那些希望用知识图谱而非纯向量库来组织领域知识的团队。它不适合只需要短期缓存的场景,也不适合不愿承担 LLM 调用成本或运维复杂度的项目。采用前应先验证三件事:你的数据格式能否被其 ingestion 管道正确处理,你的 LLM 提供商是否在支持列表内,以及 AUTO_FEEDBACK 与 CACHING 两个开关对延迟和成本的实际影响。Cognee 的 Apache-2.0 许可允许商业使用,但自托管知识图谱引擎意味着你需要自己管理数据库、向量索引和可能的 Docker 容器。若你的 Agent 目前只在单会话内工作,Cognee 的 session memory 功能可能用不上,此时引入它反而增加不必要的依赖。
社区笔记