ai官小西

Cognee 深度解析:AI Agent 记忆平台的架构、机制与取舍

Cognee 深度解析:AI Agent 记忆平台的架构、机制与取舍

用 AI 编程 Agent 超过一周的人都会碰到同一个瓶颈:Agent 不记得你上周让它改过什么。每次新会话都是一张白纸,你得重新解释项目结构、代码规范、上次做到哪了。更糟的是,即使同一个会话里,当上下文窗口被对话历史填满后,Agent 也会「忘记」最早讨论过的内容。

这就是 AI Agent 的记忆问题。而 Cognee(截至 2026 年 6 月,GitHub 24,626 Star、2,291 Fork、Apache-2.0 许可证)是目前最活跃的开源解决方案之一。它不是又一个向量数据库包装器——它用知识图谱做结构化推理,用向量做语义搜索,用本体论做概念对齐,用技能系统做工具编排,试图给 Agent 一个真正「记得住、想得起、能推理」的记忆层。

Cognee 究竟是什么

Cognee 的定位很清晰:开源 AI Agent 记忆平台。它的核心 API 只有四个动词:

await cognee.remember("Cognee turns documents into AI memory.")
results = await cognee.recall("What does Cognee do?")
await cognee.forget(dataset="main_dataset")
await cognee.improve()  # 基于反馈优化知识图谱

但四个动词背后是一整套认知架构。Cognee 不是简单的「存文本→向量化→相似度搜索」流水线。它的设计哲学是:记忆不只是存储,更是理解、连接和推理

Cognee 认知架构总览

层级 组件 职责
接入层 Python SDK / CLI / MCP Server / REST API 统一入口,支持本地和云端部署
摄入层 Ingestion 模块 多格式数据摄入(文本、文档、代码、数据库)
认知层 Cognify 管线 分类→分块→摘要→实体提取→图谱构建
存储层 向量引擎 + 图引擎 + 关系数据库 混合存储:语义向量 + 结构化图谱 + 元数据
检索层 14 种 Retriever 自适应路由:从简单向量搜索到 Agentic ReAct 循环
对齐层 Truth Subspace 基于质心的真值对齐,对检索结果加权排序
技能层 Skill + Tool 系统 数据集级的过程性知识,Agentic Retriever 按需加载
会话层 Session Memory 快速缓存 + 后台同步到永久图谱

核心机制逐层拆解

1. 摄入与 Cognify:从原始数据到结构化知识

Cognee 的数据处理管线叫 Cognify,它不是一个固定的流水线,而是一个可配置的任务图(Task Pipeline)。每个任务是一个异步函数,通过 @task 装饰器注册,由 run_tasks 调度执行。

# Cognee 的任务定义方式
@task(batch_size=20)
async def classify_documents(chunks, classification_model=None):
    # 用 LLM 对文档分块做分类
    ...

@task()
async def extract_graph(chunks, graph_model=None):
    # 从文本中提取实体和关系,构建知识图谱
    ...

Cognify 的标准流程包括:

  1. 分类(Classification):用 LLM 判断每个文本块的类型(事实陈述、代码、对话、元数据等)
  2. 分块(Chunking):按语义边界切分文本,支持可配置的分块策略
  3. 摘要(Summarization):为每个块生成结构化摘要
  4. 实体提取(Entity Extraction):从文本中识别实体及其属性
  5. 图谱构建(Graph Construction):提取实体间的关系,构建三元组(主体-关系-客体)
  6. 嵌入(Embedding):将文本块和三元组向量化,存入向量引擎

关键设计决策:Cognee 的图谱构建不是纯 NLP 管线——它重度依赖 LLM 来做实体识别和关系提取。这意味着图谱的质量直接取决于底层 LLM 的能力,但也意味着它能处理非结构化文本中的隐含关系,这是传统 NER+RE 管线做不到的。

2. 知识图谱:CogneeGraph 的设计

Cognee 的图引擎叫 CogneeGraph,是一个自研的图抽象层,支持多种后端:

  • NetworkX(默认,内存图)
  • Neo4j(生产级图数据库)
  • PostgreSQL + Apache AGE(PG 图扩展)

CogneeGraph 的核心元素:

# CogneeGraph 的核心数据结构
class Node:
    id: UUID
    type: str          # 实体类型
    attributes: dict   # 属性键值对
    embedding: list    # 向量嵌入

class Edge:
    source: Node
    target: Node
    relationship: str  # 关系类型
    attributes: dict

图谱的构建过程是增量式的:新数据摄入时,Cognee 会尝试将新实体与已有实体合并(通过 Dedup 注解标记的字段做去重),新关系与已有关系连接。这意味着图谱会随着数据增长而自我演化——这是 Cognee 区别于「每次重新构建索引」类方案的关键特征。

3. 检索层:14 种 Retriever 的自适应路由

Cognee 的检索层是整个系统最复杂的部分。它提供了 14 种 Retriever,覆盖从简单到复杂的各种检索策略:

Retriever 策略 适用场景
CompletionRetriever 纯向量相似度搜索 简单语义匹配
SummariesRetriever 摘要向量搜索 快速概览
ChunksRetriever 文本块向量搜索 精确内容定位
BM25Retriever 关键词稀疏检索 精确术语匹配
LexicalRetriever 词汇级检索 代码/标识符搜索
HybridRetriever 块+实体+全局上下文混合 通用多通道检索
GraphCompletionRetriever 图谱三元组搜索+LLM 补全 关系推理
GraphCompletionDecompositionRetriever 查询分解+子查询图谱搜索 复杂多跳问题
GraphCompletionCoTRetriever 图谱+思维链推理 需要推理链的问题
CypherSearchRetriever 自然语言→Cypher 查询 结构化图查询
NaturalLanguageRetriever NL→Cypher(带重试) 图数据库自然语言接口
TemporalRetriever 时间感知图谱搜索 时间敏感查询
CodingRulesRetriever 编码规范检索 代码 Agent 场景
AgenticRetriever ReAct 循环+工具调用+技能 复杂自主检索

HybridRetriever 是通用场景的主力。它同时从三个通道检索:

HybridRetriever 三通道混合检索流程

通道 内容 检索方式
Chunk 通道 原始文本块 向量相似度
Entity 通道 知识图谱实体及其关联边 实体向量搜索 + 边排序
Global Context 通道 全局上下文摘要索引 摘要向量搜索

三个通道的结果合并后,经过 Truth Subspace 对齐加权,再送入 LLM 生成最终回答。

GraphCompletionDecompositionRetriever 是处理复杂查询的关键。它先将用户问题分解为 2-5 个子问题:

用户问题: "Cognee 和 mem0 在架构上有什么本质区别?"
    ↓ 分解
子问题 1: "Cognee 的核心架构是什么?"
子问题 2: "mem0 的核心架构是什么?"
子问题 3: "两者在存储层和检索层的设计差异是什么?"
    ↓ 并行检索
每个子问题独立走 GraphCompletion 流程
    ↓ 合并
去重边 → 构建联合上下文 → LLM 生成

AgenticRetriever 是最强大的检索器。它实现了一个 ReAct 循环:LLM 在每一步决定是调用工具(搜索图谱、加载技能、执行代码)还是给出最终答案。技能(Skill)的过程体不预先加载到系统提示中——只有名称和描述在目录中可见,LLM 通过 load_skill 工具按需获取(渐进式披露)。

4. Truth Subspace:让检索结果「更真实」

Truth Subspace 是 Cognee 最独特的设计之一。它的核心思想是:在嵌入空间中定义一个「真值子空间」,用一组基向量(centroids)来表示「真实信息」的方向,然后将检索到的节点投影到这个子空间上,计算真值分数。

# Truth Subspace 的核心计算(简化)
def truth_score(node_vec, basis_vecs):
    coords = [cosine(node_vec, basis) for basis in basis_vecs]
    # 坐标越接近基向量,分数越高
    return sigmoid(sum(coords) / len(coords))

这个机制的设计动机很明确:在知识图谱中,不是所有节点都同等可靠。有些信息是事实,有些是推测,有些是过时的。Truth Subspace 试图给检索结果一个「可信度」维度,让 LLM 在生成回答时能区分「确定知道的」和「不太确定的」。

但这里有一个重要的诚实问题:Truth Subspace 的基向量是如何确定的?从代码来看,centroids 是通过 load_centroids() 加载的,这意味着它们需要被预先计算和配置。如果基向量的选择有偏差,整个真值对齐就会系统性偏向某些类型的信息。这是一个强大但需要谨慎使用的机制。

5. 技能系统:Agent 的过程性记忆

Cognee 的技能系统(Skill)是另一个值得关注的设计。Skill 不是简单的提示词模板——它是一个完整的数据模型:

class Skill(DataPoint):
    name: str              # 唯一标识
    description: str       # 功能描述
    procedure: str         # 执行过程(Markdown)
    declared_tools: list   # 声明的工具列表
    dataset_scope: list     # 数据集作用域
    is_active: bool        # 是否激活
    maintainer: str        # 维护者
    skill_version: str     # 版本
    tags: list             # 标签

技能存储在知识图谱中,与数据集关联。Agentic Retriever 在运行时可以看到当前数据集范围内的所有技能目录,但技能的过程体(procedure)只在 LLM 调用 load_skill 工具时才加载——这是渐进式披露(progressive disclosure)模式,避免了上下文窗口被大量技能描述占满。

这个设计让 Cognee 不仅能存储「事实性知识」(知识图谱),还能存储「过程性知识」(技能),使 Agent 真正具备「知道怎么做」的能力。

与同类项目的对比

AI Agent 记忆方案对比

维度 Cognee mem0 Zep LangChain Memory
Star(截至 2026.06) 24.6K ~25K ~3K 内嵌模块
存储模型 知识图谱 + 向量 向量 + 图(有限) 知识图谱 + 向量 向量为主
检索策略 14 种 Retriever 自适应 语义搜索 + 少量过滤 GraphRAG 基础向量搜索
图谱构建 LLM 驱动的自动构建 有限图支持 自动构建
本体论 RDF/XML + 可配置本体
技能系统 完整 Skill 模型
Truth 对齐 Truth Subspace
会话记忆 Session + 后台同步 Session 级 Session 级 Session 级
部署模式 本地 / Docker / Cloud 本地 / Cloud 本地 / Cloud 内嵌
MCP 支持 原生 MCP Server
Claude Code 插件 官方插件
许可证 Apache-2.0 Apache-2.0 Apache-2.0 MIT

Cognee 在架构深度上明显领先:14 种检索器、Truth Subspace、技能系统、本体论支持——这些是 mem0 和 Zep 目前不具备的。但 mem0 在易用性上更胜一筹:它的 API 更简洁,文档更友好,上手更快。

多维度评分

维度 评分 说明
架构设计 9/10 分层清晰,模块化好,扩展性强。Pipeline 任务系统设计优雅
检索能力 9/10 14 种 Retriever 覆盖几乎所有场景,自适应路由是亮点
图谱质量 7/10 LLM 驱动的构建灵活但质量不稳定,缺乏确定性规则层
易用性 6/10 API 简洁但配置复杂,文档有改进空间,334 个 Open Issue
生产就绪 7/10 Docker/MCP/Cloud 部署完善,但图数据库依赖和配置复杂度是门槛
社区生态 8/10 24K+ Star,活跃社区,Claude Code 插件,多语言客户端
创新性 8/10 Truth Subspace、技能系统、渐进式披露是差异化创新

总评:8/10。Cognee 是目前开源 AI Agent 记忆领域架构最完整的方案。如果你的 Agent 需要的不只是「相似度搜索」,而是真正的结构化推理和跨会话知识积累,Cognee 是首选。但要做好投入一定工程时间做配置和调试的准备。

局限与风险

  1. LLM 依赖过重:图谱构建、实体提取、查询分解都依赖 LLM。如果底层模型能力不足,整个系统的输出质量会连锁下降。论文(arXiv:2505.24478)也指出超参数优化对性能影响显著——默认配置不一定是最优的。

  2. Truth Subspace 的黑箱性:基向量的来源和更新机制不透明。如果基向量不能反映真实的信息分布,真值对齐可能引入系统性偏差。

  3. 复杂度税:14 种 Retriever 意味着选择困难。虽然 Cognee 有自适应路由,但理解每种 Retriever 的适用场景仍然需要学习成本。

  4. 图谱演化的一致性:增量式图谱构建虽然优雅,但在大规模、高频更新场景下,实体合并和关系去重的准确性需要持续关注。

结论

Cognee 不是又一个「套壳向量数据库」——它是一套完整的认知架构。从摄入到 Cognify、从图谱构建到多策略检索、从 Truth Subspace 到技能系统,每一层都有明确的设计意图和工程取舍。

我们的建议:如果你的 AI Agent 项目需要跨会话的长期记忆,并且你愿意投入时间理解其架构,Cognee 是目前最好的开源选择。从 HybridRetriever 开始,逐步引入 GraphCompletionDecompositionRetriever 处理复杂查询,最后用 AgenticRetriever + 技能系统实现完全自主的记忆管理。

对于快速原型或简单场景,mem0 的轻量级方案可能更合适。但如果你在构建一个需要「真正理解上下文」的 Agent 系统,Cognee 的架构深度会在项目中期带来显著回报。

参考资料