Cognee
嵌入使得检索相似信息块变得容易,但大多数代理任务需要更多:结构、时间上下文和跨文档推理。这就是 Cognee 的用武之地:它将原始数据源转化为 AI 记忆——一个基于模块化、可查询的知识图的语义数据层,并由嵌入提供支持,因此代理可以有结构地检索、推理和记忆。
为什么选择 Qdrant 作为记忆层
在运行时,Cognee 的语义记忆层需要快速且可预测的查找,以发现用于图推理的候选对象,以及对元数据的严格控制,以支撑多跳遍历。Qdrant 的设计通过其以下特点满足了这些需求:
- 最近邻搜索,用于快速候选召回。
- 富有表现力的有效载荷过滤,可按时间戳窗口、文档类型或源标签等因素进行约束。
- 操作简单,团队可以专注于记忆层。
此集成将 Qdrant 的向量搜索和 Cognee 的图推理整合到同一个循环中。用户的查询不再仅仅命中单个存储——它被嵌入、搜索、映射并融合到证据中,然后才进行最终生成。
- 嵌入查询 → 发送到 Qdrant 进行最近邻检索。
- 识别实体/关系 → Cognee 的图层将候选对象映射到知识图。
- 融合和排序 → Cognee 将向量候选对象与图上下文结合并对证据进行排序。
- 生成 → 最终答案由向量广度和图精度共同支撑。
结果是向量的广度和图的精度——当问题围绕着谁连接到什么以及这些联系如何随时间变化时,这非常有用。
原生集成
Cognee 提供了一个 Qdrant 适配器,并将 Qdrant 作为首选的内置向量数据库选项。这意味着您只需配置一个 URI 和密钥,Cognee 的管道就会在构建和查询图时直接读取/写入嵌入到 Qdrant。
pip install Cognee-community-vector-adapter-qdrant
最小化设置
下面的示例来自 Cognee-community 存储库,并反映了许多团队最初采用的结构:SQLite 用于小型关系元数据,Qdrant 用于向量,以及 Kùzu 用于图。注册导入足以让 Cognee 发现并使用 Qdrant 适配器。
import asyncio, os, pathlib
from os import path
from cognee_community_vector_adapter_qdrant import register
async def main():
from Cognee import SearchType, add, cognify, config, prune, search
system_path = pathlib.Path(__file__).parent
config.system_root_directory(path.join(system_path, ".cognee_system"))
config.data_root_directory(path.join(system_path, ".data_storage"))
config.set_relational_db_config({"db_provider": "sqlite"})
config.set_vector_db_config({
"vector_db_provider": "qdrant",
"vector_db_url": os.getenv("QDRANT_API_URL", "https://:6333"),
"vector_db_key": os.getenv("QDRANT_API_KEY", ""),
})
config.set_graph_db_config({"graph_database_provider": "kuzu"})
await prune.prune_data(); await prune.prune_system(metadata=True)
await add("Natural language processing (NLP) ...")
await cognify()
for txt in await search(query_type=SearchType.GRAPH_COMPLETION,
query_text="Tell me about NLP"):
print(txt)
if __name__ == "__main__":
asyncio.run(main())
工作原理
Cognee 的记忆管道通过提取 → 嵌入 → 图构建 → 检索来处理内容,在笔记本电脑、分布式作业和托管运行中保持一致的配置。图感知的语义层是检索成为推理的地方。
以下是生产环境中的突出特点
- 时间上下文/“截至”查询——分析实体和关系如何随时间演变。
- 反馈驱动的优化——用于合并重复项和优化边缘的例程。
- 持续实验——测试图嵌入,以便相似性可以作用于子图,而不仅仅是文本。
- 本体——领域本体(金融、临床、客户运营)支持一致性、丰富性和控制
这些功能旨在增强多跳性能;例如,Cognee 在最近的评估中报告了 92.5% 的性能,并指出其开源的思维链检索器有助于连接不同上下文中的概念,尤其是在多跳场景中。
关于评估的说明
Cognee 团队在 HotPotQA 中对 24 个问题进行了 45 个评估周期,HotPotQA 是一个需要结合文本多个部分信息才能回答的基准。与真实世界的记忆系统相比,它仍然是一个狭窄的上下文,但它是一个有用的基线。使用的指标是精确匹配(EM)、F1、DeepEval 正确性(基于 LLM)和类人正确性(基于 LLM 对人类评估的近似)。
如果您不想运行基础设施,Cognee 的托管选项——cogwit——正在测试中。它将 Cognee 的 API 作为托管服务公开,因此团队可以加载数据并查询记忆层,而无需维护集群。