Cognee 是为 AI Agent 设计的记忆层,底层混合使用 LanceDB(向量嵌入)和 Kuzu(图数据库),通过
cognify() 对原始文本进行 LLM 驱动的实体与关系抽取,构建知识图谱。一位 NIT Silchar 大三学生(Geetansh Vikram)在 WeMakeDevs × Cognee 黑客松中,发现了一个被忽视的痛点:AI 记忆的“上下文腐烂”(context rot)——当同一主体的信息被多次更新时,简单的向量存储无法区分新旧,导致模型回答错误。
他构建了 ContextRot Bench 基准测试,包含 15 个事实流场景(职位申请状态、用户位置、订阅计划等),每个场景有真实答案和不应出现的陈旧值。
他原本计划使用 Cognee 的improve()函数来解析矛盾——文档称其“运行摄入后增强、修剪陈旧节点”。但实测发现,improve()并非物理删除,而是通过 LLM 在图中添加调和边。查询时再由 LLM 推理正确结果,这导致 75% 的情况下朴素管道仍会出错,且陈旧节点始终残留。
于是作者调用底层图引擎 (get_graph_engine()) 和向量引擎 (get_vector_engine()),构建了自定义深度修剪层:先在图库中查询匹配 subject+value 的 Fact 节点并删除,再在 LanceDB 各表中删除关联的向量块,实现双存储的原子清理。
过程中还发现了两个静默 bug:安装fastembed但不安装cognee[fastembed]会导致图构建无任何向量;LLM 抽取会改写谓词,需改用 subject+值匹配而非谓词匹配。
基准测试结果:朴素向量存储准确率为 0%,Cognee + 深度修剪层为 100%。作者指出,问题只出现在被矛盾的事实上,稳定事实两者都能正确回答。
最终,作者向
topoteretes/cognee 仓库提交了 Graphiti 迁移教程和 Mem0 迁移教程两个 PR,目前正在审核中。GitHub: Geetansh-12/cognee_hackathon
#开发者 #工具 #Cognee #WeMakeDevs #ContextRotBench #知识图谱 #AI记忆 #LanceDB #Kuzu #深度修剪
@DevToolboxHub