Cognee 介绍
Cognee 简介
相关源文件
本 Wiki 页面的生成参考了以下文件:
.env.templateREADME.mdassets/cognee_benefits.pngcognee/api/v1/add/add.pycognee/api/v1/cognify/cognify.pycognee/api/v1/config/config.pycognee/infrastructure/llm/config.pycognee/infrastructure/llm/structured_output_framework/litellm_instructor/llm/bedrock/adapter.pycognee/infrastructure/llm/structured_output_framework/litellm_instructor/llm/get_llm_client.pycognee/modules/data/models/Data.pycognee/modules/pipelines/operations/pipeline.pycognee/modules/pipelines/operations/run_tasks.pycognee/modules/settings/__init__.pycognee/modules/settings/get_settings.pycognee/modules/settings/save_llm_config.pycognee/modules/settings/save_vector_db_config.pycognee/tasks/ingestion/ingest_data.pycognee/tasks/ingestion/save_data_item_to_storage.pycognee/tests/unit/infrastructure/llm/test_get_llm_client.pypoetry.lockpyproject.tomluv.lock
什么是 Cognee?
Cognee 是一个开源的知识引擎,为 AI 智能体提供持久化记忆基础设施。它充当原始数据与大语言模型(LLM)上下文之间的语义层,将非结构化信息转换为可查询的知识图谱,智能体可以利用这些图谱进行增强推理和上下文检索 README.md:65-68。
核心价值主张:
- 知识基础设施:提供统一的入库、图谱/向量搜索以及本体对齐功能
README.md:85。 - 持久化与学习型智能体:使智能体能够从反馈中学习,并在不同会话间共享知识
README.md:86。 - 可靠与可信赖:提供基于智能体的用户/租户隔离、通过 OpenTelemetry (OTEL) 实现的可追溯性以及审计特性
README.md:87。 - 多接口支持:可通过 Python API、CLI、REST API 和 MCP 服务器访问
README.md:128-175。
系统接口:
| 接口 | 入口点 | 传输方式 | 使用场景 |
|---|---|---|---|
| Python SDK | import cognee | 直接函数调用 | 嵌入 Python 应用程序 |
| CLI | cognee-cli | Shell 执行 | 本地开发和脚本编写 |
| REST API | cognee.api.client:app | 端口 8000 的 HTTP | Web 应用和远程客户端 |
| MCP 服务器 | cognee-mcp | stdio/SSE/HTTP | IDE 集成(Cursor, Claude, VS Code) |
所有接口都暴露了相同的核心操作:add()、cognify() 和 search(),或者更高级别的记忆 API:remember()、recall() 和 forget() README.md:126-155。
本文档涵盖了架构基础和数据流。有关实现细节,请参阅:
来源:README.md:1-90,pyproject.toml:1-10,cognee/api/v1/add/add.py:92-114,cognee/api/v1/cognify/cognify.py:43-59
核心操作
Cognee 的功能围绕着一系列操作展开,这些操作处理从数据入库、知识提取到检索的完整流程。
核心操作流程:从数据入库到知识检索
remember() - 统一存储
函数签名:remember(data: Any, user_id: UUID, session_id: str = None)。 remember() 函数提供了一个高级抽象,它将 add()、cognify() 和 improve() 组合成单个调用 README.md:136-137。它可以将数据永久存储在知识图谱中,或者存储在快速的会话记忆里(并在后台同步到图谱)README.md:136-140。
cognify() - 知识图谱生成
函数签名:cognify(datasets: Union[str, list[str], list[UUID]] = None, graph_model: BaseModel = KnowledgeGraph) cognee/api/v1/cognify/cognify.py:43-46。 通过一个多阶段管线将已入库的数据转换为结构化的知识图谱。该过程包括文档分类 cognee/api/v1/cognify/cognify.py:83、文本片段切分 cognee/api/v1/cognify/cognify.py:84 以及由大语言模型(LLM)驱动的实体/关系提取 cognee/api/v1/cognify/cognify.py:85-86。
召回() - 多策略检索
函数签名:recall(query: str, session_id: str = None)。 查询知识时,会自动路由以选择最佳搜索策略,例如图谱补全或检索增强生成(RAG)README.md:142-143。它可以在回退到永久图谱之前,先查询会话记忆 README.md:147-148。
来源:cognee/api/v1/cognify/cognify.py:43-95,README.md:119-155,cognee/api/v1/add/add.py:92-150
系统架构总览
Cognee 的架构在接口层、应用逻辑层、存储层和外部服务层之间进行了关注点分离。
系统架构:组件交互与代码实体
关键组件
- 接口层:入口点,包括 Python API、CLI
pyproject.toml:204和 FastAPI 服务器pyproject.toml:44。 - 应用层:编排记忆管理逻辑。
add()负责处理入库cognee/api/v1/add/add.py:92,而cognify()负责处理图谱生成cognee/api/v1/cognify/cognify.py:43。两者都使用了run_tasks编排器cognee/modules/pipelines/operations/run_tasks.py:56。 - 存储层:采用三数据库设计,使用 SQLAlchemy 处理关系型数据
pyproject.toml:29,并使用专用接口处理向量和图存储pyproject.toml:40,50,52。后端可通过LLMConfig和环境变量进行配置.env.template:120-161。 - AI 服务:通过
litellm和instructorpyproject.toml:32-33或BAMLcognee/infrastructure/llm/config.py:41-48与大语言模型(LLM)集成,用于结构化提取。
来源:cognee/api/v1/add/add.py:92-114,cognee/api/v1/cognify/cognify.py:43-59,pyproject.toml:22-64,cognee/infrastructure/llm/config.py:15-88,cognee/modules/pipelines/operations/run_tasks.py:56-65
配置与可观测性
Cognee 提供了灵活的配置系统和内置的可观测性功能。
- 配置:通过
LLMConfigcognee/infrastructure/llm/config.py:15和config的静态方法cognee/api/v1/config/config.py:96进行管理。它支持对提供商、模型和数据库路径进行运行时覆盖cognee/api/v1/config/config.py:104-115。 - 数据库适配器:支持广泛的提供商,包括 LanceDB
pyproject.toml:40、Neo4jpyproject.toml:96和 PGVectorpyproject.toml:100。 - 结构化输出:默认使用
instructor框架,但也支持使用BAML进行更复杂的提取cognee/infrastructure/llm/config.py:42, 127-135。
来源:cognee/infrastructure/llm/config.py:15-154,cognee/api/v1/config/config.py:96-116,pyproject.toml:96-107
总结
Cognee 提供了一个可用于生产环境的平台,用于将非结构化数据转换为可查询的知识图谱。其架构在各层之间实现了关注点分离,同时通过以下特性保持了灵活性:
- 统一 API:使用如
remember()和recall()等简单函数来处理复杂工作流README.md:136-151。 - 可插拔后端:支持多种向量数据库(LanceDB、Chroma、PGVector、Qdrant)和图数据库(Kuzu、Neo4j、NetworkX)
pyproject.toml:40,50,88,116。 - 智能体集成:专门支持模型上下文协议(MCP)和智能体记忆装饰器,如
@agent_memory。
下一步:
来源:README.md:1-213,cognee/api/v1/add/add.py:115-170,pyproject.toml:1-145