news 2026/9/10 13:13:01

cognee 中文指南:用 ECL 管道为 AI 智能体构建持久化知识图谱记忆层

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
cognee 中文指南:用 ECL 管道为 AI 智能体构建持久化知识图谱记忆层

cognee 中文指南:用 ECL 管道为 AI 智能体构建持久化知识图谱记忆层

【免费下载链接】cogneeCognee is the open-source AI memory platform for agents. Give your AI agents persistent long-term memory across sessions with a self-hosted knowledge graph engine.项目地址: https://gitcode.com/GitHub_Trending/co/cognee

本篇指南以 cognee 中文社区文档 为骨架,结合仓库源码进行纵深讲解。cognee 是面向 AI 应用与智能体的开源记忆层:通过可扩展、模块化的 ECL(提取 Extraction、认知 Cognition、加载 Loading)管道,把历史对话、文档、图像、音频转录等数据统一加工成语义化知识图谱,让智能体在会话之间拥有持久、可检索、可推理的长期记忆。读完本文,你将掌握 cognee 的安装配置、add → cognify → search三步核心工作流、常用环境变量与参数含义,以及底层数据管道与加载器体系的实现原理。

什么是 cognee:AI 应用的记忆层

大语言模型本身没有跨会话的持久记忆。每次对话结束后,上下文即被丢弃,智能体无法回忆"上一次我做过什么、用户偏好是什么、哪些方案曾经失败"。cognee 的定位正是补齐这一环——它作为一个记忆层,位于 LLM 与业务应用之间:

  • 把历史对话、文档、图像、音频转录等异构数据互联并检索,形成可查询的知识网络;
  • 通过"以图谱为记忆"的方式减少幻觉、降低开发人员工作量与成本——智能体检索到的是结构化的、带关系的事实,而非孤立文本片段;
  • 仅使用 Pydantic 模型即可将数据加载到图形数据库与向量数据库,模型即模式,无需手写建表语句;
  • 从 30 多个数据源摄取数据时支持数据操作(清洗、转换、路由),摄取与加工一体化。

从仓库入口文件 cognee/init.py 可以看到,import cognee暴露了完整的 V1 API(addcognifysearchdeleteupdateprunevalidatevisualize_graph等)与面向记忆场景的 V2 API(rememberrecallimproveforgetservepushexport等),说明 cognee 既可以用最经典的"添加-认知-检索"三步完成知识库构建,也提供了更贴近智能体记忆语义的高级操作原语。

功能特性

  • 互联并检索历史对话、文档、图像和音频转录——多模态内容统一进入记忆体系;
  • 减少幻觉、开发人员工作量和成本——答案由知识图谱中的实体与关系支撑,而非仅靠模型记忆;
  • 仅使用 Pydantic 将数据加载到图形和向量数据库——数据模型即数据库模式,见 cognee/shared/data_models.py;
  • 从 30 多个数据源摄取数据时进行数据操作——内置多种加载器与 DLT(数据加载工具)支持,详见下文"加载器体系"。

环境要求与安装

cognee 支持 Python 3.10 至 3.14,可用pippoetryuv或任意 Python 包管理器安装:

pip install cognee

使用uv的等价命令为:

uv pip install cognee

快速开始:三步构建智能体记忆

第一步:配置 LLM

cognee 在运行时需要调用 LLM 完成实体抽取、关系识别与答案生成。最简单的配置方式是在代码中设置环境变量:

import os os.environ["LLM_API_KEY"] = "YOUR OPENAI_API_KEY"

也可以通过创建.env文件来配置,仓库根目录提供了完整的模板 .env.template(含全部可配置项与注释,复制为.env后按需填写即可)。在import cognee时,cognee/init.py 会自动调用dotenv.load_dotenv(override=True)加载.env文件,因此配置会在包导入阶段生效。

第二步:运行默认管道

下面这段脚本是官方文档给出的最小可用示例——添加文本、生成知识图谱、查询图谱:

import cognee import asyncio async def main(): # Add text to cognee await cognee.add("自然语言处理(NLP)是计算机科学和信息检索的跨学科领域。") # Generate the knowledge graph await cognee.cognify() # Query the knowledge graph results = await cognee.search("告诉我关于NLP") # Display the results for result in results: print(result) if __name__ == '__main__': asyncio.run(main())

示例输出:

自然语言处理(NLP)是计算机科学和信息检索的跨学科领域。它关注计算机和人类语言之间的交互,使机器能够理解和处理自然语言。

可以看到,cognee 的默认工作流只有三个 API 调用,且全部为异步函数:

步骤API作用
1await cognee.add(...)摄取原始数据(文本、文件、URL、S3 路径等),存入指定数据集
2await cognee.cognify()对数据集执行 ECL 管道,产出知识图谱与向量索引
3await cognee.search(...)基于图谱与向量执行语义检索,返回带上下文的答案

深入 add():支持哪些数据形态

add是摄入管道的入口,源码位于 cognee/api/v1/add/add.py。从函数签名与文档字符串可以确认,它支持以下输入类型:

  • 纯文本字符串:任意不以/file://开头的字符串被视为文本内容;
  • 文件路径字符串:绝对路径(/path/to/document.pdf)、文件 URL(file:///path/to/document.pdf)、相对路径 URL(file://relative/path.txt)、S3 路径(s3://bucket-name/path/to/file.pdf);
  • 二进制文件对象open("file.txt", "rb")返回的BinaryIO
  • 列表:以上多种类型的混合列表可在一次调用中批量添加;
  • Web URLhttps:///http://链接,可配合extraction_rules(CSS 选择器/XPath)或 Tavily、Keenable 等抽取服务使用。
# 添加单个文本 await cognee.add("Natural language processing is a field of AI...") # 混合批量添加 await cognee.add([ "/absolute/path/to/research_paper.pdf", # 绝对路径 "file://relative/path/to/dataset.csv", # 相对文件 URL "s3://my-bucket/documents/data.json", # S3 路径 "Additional context text" # 纯文本 ]) # 指定数据集(默认 main_dataset) await cognee.add( data="Project documentation content", dataset_name="project_docs" )

add还提供几个影响摄取行为的关键参数:

  • dataset_name:目标数据集名称,默认main_dataset,建议按知识领域划分数据集以组织不同领域知识;
  • run_in_background=True:异步后台摄取,立即返回而不等待完成;
  • incremental_loading:增量加载开关,默认开启;
  • importance_weight:数据重要性权重,默认0.5,影响后续记忆检索的加权排序;
  • preferred_loaders:为指定数据显式指定加载器;
  • user:用户对象,默认为自动创建的默认用户(default_user@example.com),用户只能访问拥有权限的数据集。

环境变量方面,add必填LLM_API_KEY;可选LLM_PROVIDERopenai默认、anthropicgeminiollamamistralbedrock)、LLM_MODEL(默认gpt-5-mini)、VECTOR_DB_PROVIDER(默认lancedb,可选pgvector)、GRAPH_DATABASE_PROVIDER(默认ladybug,可选neo4j)等。

深入 cognify():ECL 管道做了什么

cognify是 cognee 的核心处理步骤,源码位于 cognee/api/v1/cognify/cognify.py。它把add存入的原始内容转换为结构化知识图谱,其处理管道(从源码导入的任务清单可见)大致包含:

  1. 文档分类classify_documents):识别文档类型与结构;
  2. 文本分块extract_chunks_from_documents+TextChunker):将内容切成语义上有意义的片段,可按chunk_sizechunks_per_batch控制;
  3. 实体与关系抽取extract_graph_and_summarize):调用 LLM 抽取实体、关系并生成摘要,产出知识图谱;
  4. 矛盾检测与时间矛盾消解detect_contradictionsresolve_temporal_contradictions):处理事实冲突与时间线上的矛盾;
  5. 事件与时间戳抽取extract_events_and_timestampsextract_knowledge_graph_from_events):启用temporal_cognify=True时构建时序图谱;
  6. 数据点入库add_data_points)与溯源记录record_provenance):写入图谱/向量库并记录数据来源。

cognify的可调参数包括:datasets(指定要处理的数据集)、chunker(自定义分块器,默认TextChunker)、graph_model(默认KnowledgeGraph,来自 cognee/shared/data_models.py)、temporal_cognify(是否启用时序认知)、dry_run(试运行)等。分块器体系位于 cognee/modules/chunking,除TextChunker外还提供CsvChunkerJsonListChunkerLangchainChunkertext_chunker_with_overlap等,可按数据形态选择。

深入 search():多种检索模式

search是检索入口,源码位于 cognee/api/v1/search/search.py,默认query_typeSearchType.HYBRID_COMPLETION(混合补全)。检索前置条件为:数据已通过add添加、知识图谱已通过cognify构建、用户对目标数据集拥有read权限。

cognee 支持的检索类型(SearchType枚举)与适用场景:

检索类型说明适用场景
GRAPH_COMPLETION基于完整图谱上下文的自然语言问答(推荐)复杂问题、分析、总结、洞察
RAG_COMPLETION传统 RAG,仅用文档块、不走图谱遍历直接文档检索、具体事实查找
CHUNKS纯向量相似度,返回命中的原始文本块查找具体段落、引用、原文
SUMMARIES返回预生成的内容摘要快速概览、文档摘要
CODE确定性索引查询与图谱遍历(Enola 代码图)符号探索、依赖路径、反向影响分析
CYPHER直接使用 Cypher 语法查询图数据库高级用户、图谱调试
FEELING_LUCKY智能自动选择最合适的检索类型通用查询、不确定用哪种
CHUNKS_LEXICALBM25 风格词法分块检索精确词匹配、停用词感知查询
# 指定检索类型与 top_k results = await cognee.search( "What are the main themes in this research?", query_type=cognee.SearchType.GRAPH_COMPLETION, top_k=15, ) # 限定数据集范围提升速度与相关性 results = await cognee.search( "How do these concepts relate to each other?", datasets=["docs", "reports"], )

常用参数:top_k(返回结果数上限,默认 15,综合场景可从 15 起步,上限 100)、datasets/dataset_ids(限定检索范围,默认跨全部有权限的数据集)、node_type/node_name(按实体类型/名称过滤)、include_references(附带引用信息)、session_id(会话记忆缓存)。注意:skills/tools/max_iter仅在使用AGENTIC_COMPLETION检索类型时可用,且要求恰好指定一个数据集。

加载器体系:30+ 数据源的摄取基础

"从 30 多个数据源摄取数据"的能力由加载器注册表支撑,定义在 cognee/infrastructure/loaders/supported_loaders.py。核心加载器包括:

  • TextLoader(文本)
  • PyPdfLoader(PDF)
  • CodeLoader(代码文件,解析结构与内容)
  • ImageLoader(图像,OCR/视觉模型抽取)
  • AudioLoader(音频,转写为文本)
  • VideoLoader(视频)
  • CsvLoader(CSV)

此外,注册表通过"可选导入 + ImportError 容错"的方式按需加载增强型加载器:UnstructuredLoaderAdvancedPdfLoader(高级 PDF)、BeautifulSoupLoader(网页抓取)、DoclingLoader(文档智能解析)、DltCsvLoader(通过 DLT 清单路由的 CSV,安装 dlt 扩展后优先于普通 CSV 展平)——这些加载器仅在对应依赖安装后才注册,体现了模块化与最小化依赖的设计。

性能与部署提示

仓库根 README 与配置模板中还包含两类对生产有价值的信息:

  • 性能调优:默认配置优先记忆质量而非延迟。AUTO_FEEDBACK=false可去掉每次回答后用于自调优记忆的一次 LLM 调用,让读取更快更省;CACHING=false会彻底关闭会话记忆(remember(session_id=...)将失效),仅在完全不用会话记忆时设置;DATASET_QUEUE_ENABLED=false移除数据集级并发守卫,但多数据集并行时存在文件锁泄漏与资源耗尽风险,服务端建议保持开启。
  • 部署形态:cognee 可自托管(本地开发完全嵌入式:SQLite、LanceDB、Kuzudb,无需额外服务),也可通过await cognee.serve(url=..., api_key=...)连接托管实例,或参考 distributed/ 目录下的 Modal、Railway、Fly.io、Render、Daytona 等一键部署脚本。

更多资源

  • 交互式入门:notebooks/目录下的 cognee_simple_demo.ipynb、cognee_demo.ipynb;
  • 示例代码:examples/guides/下的simple_cognee_example.pyontology_quickstart.pygraph_visualization.py等,以及examples/demos/下的完整演示;
  • 生态组件:cognee-mcp/(MCP 服务器)、cognee-frontend/(本地 UI)、cognee-starter-kit/(入门脚手架);
  • 项目治理:CONTRIBUTING.md(贡献指南)、CODE_OF_CONDUCT.md(行为准则)。

如果你希望参与社区贡献,欢迎参考上述文档提交改进——cognee 的开源开发强调模块化管道与可扩展的加载器/数据库适配器设计,新的数据源或检索策略大多可以按既有接口低成本接入。

【免费下载链接】cogneeCognee is the open-source AI memory platform for agents. Give your AI agents persistent long-term memory across sessions with a self-hosted knowledge graph engine.项目地址: https://gitcode.com/GitHub_Trending/co/cognee

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 13:12:43

STM32三闭环PID控制:位置-速度-电流实时实现指南

简介:本资源是一套基于STM32F4平台实现直流有刷电机位置-速度-电流三闭环PID控制的完整嵌入式工程,面向自动化、机器人及运动控制方向的嵌入式开发者与高校高年级学生,解决电机多层级动态响应精度低、参数整定难、软硬件协同调试复杂等实际问…

作者头像 李华
网站建设 2026/9/10 13:10:46

基于LSTM的锂电池剩余寿命预测Matlab实现与调优

简介:面向锂电池健康管理、电池管理系统相关研究人员与工程师,提供一套基于长短期记忆(LSTM)神经网络的锂电池剩余寿命预测Matlab完整实现。资源直击剩余使用寿命(RUL)预测中数据准备与网络搭建两大难点&am…

作者头像 李华