
LlamaIndex Graph RAG 集成深度指南用 CogneeGraphRAG 构建知识图谱检索系统【免费下载链接】llama_indexLlamaIndex is the leading document agent and OCR platform项目地址: https://gitcode.com/GitHub_Trending/ll/llama_index本篇技术指南以 llama_index 仓库中 Cognee Graph RAG API 参考文档 为主题系统讲解llama-index-graph-rag-cognee集成的设计、安装、配置与完整使用流程。读完本文你将掌握如何用CogneeGraphRAG把一批 LlamaIndexDocument自动加工成包含实体、关系与属性的知识图谱通过图遍历检索search、传统向量 RAGrag_search、关联实体探索get_related_nodes三种方式查询并输出可交互的 HTML 图谱可视化文件——全程以仓库内的源码、示例与测试为事实依据。一、CogneeGraphRAG 是什么从向量块检索到知识图谱检索传统 RAG 检索到的是非结构化文本片段而基于知识图谱的 GraphRAG 把实体建模为节点、实体间关系建模为边以结构化语义形式组织信息。类名CogneeGraphRAG的源码注释见 graph_rag.py明确指出知识图谱能让系统针对某个实体、它的关系网络以及属性检索到比传统 RAG 更精准、更结构化的信息。Cognee 本身提供的是一套图架构 向量存储 自优化流水线的 RAG 方案。llama-index-graph-rag-cognee则是二者之间的桥接包它负责接受 LlamaIndex 的Document输入并交给 Cognee把 Cognee 的入库add— 图化cognify— 检索search— 可视化visualize_graph流水线封装成一组 awaitable 异步方法让 LlamaIndex 侧代码可以通过数据库切换实现从本地开发到企业级部署PostgreSQL、Neo4j、Qdrant 等的平滑扩展。该集成对外只导出一个类。查看init.py 可知from llama_index.graph_rag.cognee.graph_rag import CogneeGraphRAG且__all__ [CogneeGraphRAG]。包的模块导入路径llama_index.graph_rag.cognee也由 pyproject.toml 中的[tool.llamahub] import_path声明确认。API 参考页的构建配置同样把该集成包目录纳入渲染范围见 mkdocs.yml因此该参考页渲染出来的即本集成类的成员与方法签名。仓库中还存在一个抽象协议类GraphRAG定义于 base.py。注释说明这是一个极简抽象协议用于定义 LlamaIndex 未来统一的 GraphRAG 接口为将来在llama-index-core中接入多家 GraphRAG 库预留扩展点。协议约定的方法集合add/process_data/search/get_related_nodes/visualize_graph正是CogneeGraphRAG实际实现的方法集合。二、安装与环境要求安装方式为通过 pip 安装该集成包pip install llama-index-graph-rag-cognee依据包内 pyproject.toml 的声明可确认以下环境前提需要 Python3.11,3.13依赖llama-index-core0.13.0,0.15提供Document等核心类型安装时默认附带cognee[neo4j, postgres, qdrant]扩展、httpx与graphistry后者用于图谱可视化渲染包版本声明为0.3.1许可证为 MIT。运行示例程序还要求先设置 LLM 的 API Key。仓库内置的 example.py 会在缺少OPENAI_API_KEY环境变量时直接退出并提示export OPENAI_API_KEYyour-api-key-here三、初始化四类存储配置一次到位CogneeGraphRAG构造函数接收 LLM、图数据库、向量数据库与关系数据库四组配置。构造函数体内把这些参数逐一分发给了 Cognee 的四个配置入口见 graph_rag.pycognee.config.set_llm_config(...)写入llm_api_key/llm_provider/llm_modelcognee.config.set_vector_db_config(...)写入vector_db_url/vector_db_key/vector_db_providercognee.config.set_relational_db_config(...)写入db_path、db_name、db_host、db_port、db_username、db_password、db_providercognee.config.set_graph_db_config(...)写入graph_database_provider、graph_database_url、graph_database_username、graph_database_password。构造函数还会把本地数据目录与系统目录固定到集成包内部数据根目录.data_storage/位于llama_index/graph_rag/cognee/.data_storage/系统根目录.cognee_system/位于llama_index/graph_rag/cognee/.cognee_system/。以上路径均相对 graph_rag.py 中基于pathlib.Path(__file__).parent拼装后的解析结果因此会随你的安装环境落在 site-packages 对应目录下。这一点意味着本地默认模式下图数据与向量数据并不写在你的工作目录里而是跟随包文件存放若要持久化生产数据应显式切换为外部数据库。3.1 构造参数总览下表依据类 docstring 与构造签名整理graph_rag.py参数含义默认值支持的取值/说明llm_api_key目标 LLM 的 API Key必填无llm_providerLLM 提供商openai取决于 Cognee 支持的 providerllm_modelLLM 模型名gpt-4o-mini示例与测试均使用gpt-4o-minigraph_db_provider图数据库kuzuneo4j、networkx、kuzugraph_database_url图数据库 URL本地默认(kuzu/networkx)可留空graph_database_username图数据库用户名例如自托管 Neo4j 时填写graph_database_password图数据库密码同上vector_db_provider向量数据库lancedblancedb、pgvector、qdrant、weaviatevector_db_url向量库连接地址LanceDB 本地默认可留空vector_db_key向量库 API Key如 Qdrant Cloudrelational_db_provider关系数据库sqlitesqlite、postgresrelational_db_name数据库名cognee_db仓库示例中亦使用cognee_example_db、cognee_productionrelational_db_host关系库主机本地默认可留空relational_db_port关系库端口本地默认可留空relational_db_username关系库用户名如 PostgreSQL 用户relational_db_password关系库密码同上最低成本的本地开发配置只需三个必填以外参数全部使用默认值kuzu嵌入式图库lancedb嵌入式向量库sqlite嵌入式关系库零外部服务即可运行。四、核心工作流入库 → 图化 → 检索 → 可视化4.1 添加数据add()方法签名与处理逻辑见 graph_rag.pyasync def add(self, data: Union[Document, List[Document]], dataset_name: str main_dataset) - None实现要点接受单个Document或Document列表。类型检查顺序为先判断是否为非空list此时过滤出所有Document实例取其.text其次判断是否为单个Document两者都不满足则抛出ValueError(Invalid data type. Please provide a list of Documents or a single Document.)数据以纯文本列表形式传给cognee.add(text_data, dataset_name)进入 Cognee 数据集注意 docstring 的说明尽管 Cognee 支持自定义数据集组织当前版本实际只把所有数据加入main_datasetdataset_name参数是为展示预期的 API 设计而保留完整多数据集支持将在未来版本加入。测试 test_graph_rag_cognee.py 亦验证了空列表会抛出ValueError而包含空文本、纯空白的文档列表可被正常接受。4.2 加工知识图谱process_data()签名与实现见 graph_rag.pyasync def process_data(self, dataset_name: str main_dataset) - None该方法通过cognee.modules.users.methods.get_default_user()获取默认用户再调用cognee.cognify(dataset_name, user)把此前add进入的原始文本转换成包含实体entities、关系relationships与属性properties的结构化知识图谱。与add同理当前只处理main_datasetdataset_names的完整支持留待后续版本。4.3 三类检索方法图检索 / 传统 RAG / 关联节点Cognee 底层为cognee.search提供了不同的SearchType集成层据此暴露了三个语义各异的方法共同消费 Cognee 的SearchType枚举集成方法CogneeSearchType检索语义源码位置search(query)GRAPH_COMPLETION基于图谱结构找相关实体、关系与上下文捕获传统 RAG 容易遗漏的信息graph_rag.pyrag_search(query)RAG_COMPLETION传统 RAG命中相关文档块并基于它们生成回答graph_rag.pyget_related_nodes(node_id)INSIGHTS沿图结构发现与指定节点直接或间接相连的实体/概念与洞见graph_rag.py三者均先获取默认用户然后以query_textquery调用cognee.search(...)返回结果为列表。在 README 高级示例 中开发者通常对同一提问同时跑图检索与 RAG 检索把两类答案交叉比对以获取互补视角get_related_nodes(person)这样的调用则可用来考察某一类实体的整体分布。4.4 图谱可视化visualize_graph()签名与实现见 graph_rag.pyasync def visualize_graph(self, open_browser: bool False, output_file_path: str | None None) - str行为细节若提供output_file_path会先校验它是否为有效目录否则抛出ValueError(fThe provided path {...} is not a directory)——这一点有测试用例专门覆盖test_graph_rag_cognee.py以/invalid/path/that/does/not/exist断言抛错输出文件固定命名为graph_visualization.html未指定目录时保存到用户主目录os.path.expanduser(~)调用cognee.visualize_graph(full_file_path)生成 HTMLREADME 中说明其可视化基于 D3.js支持交互式探索open_browserTrue时通过webbrowser.open(file://...)自动在默认浏览器打开返回生成文件的完整路径。仓库根目录即附带一份示例产物 graph_visualization.html 可参考效果。五、开箱即用的完整示例集成包自带的 README.md 与 example.py 提供可直接运行的最小闭环。下面按 README 中的基础示例整理代码以包内原文为准import os import asyncio from llama_index.core import Document from llama_index.graph_rag.cognee import CogneeGraphRAG async def main(): # 1. 初始化本地零外部服务组合kuzu lancedb sqlite cognee_rag CogneeGraphRAG( llm_api_keyos.environ[OPENAI_API_KEY], llm_provideropenai, llm_modelgpt-4o-mini, graph_db_providerkuzu, # 或 neo4j、networkx vector_db_providerlancedb, relational_db_providersqlite, relational_db_namecognee_db, ) # 2. 构造 LlamaIndex 文档 documents [ Document(textApple Inc. is a technology company founded by Steve Jobs.), Document(textSteve Jobs was the CEO of Apple and known for innovation.), Document(textThe iPhone was released by Apple in 2007.), ] # 3. 入库并图化 await cognee_rag.add(documents, dataset_nameapple_knowledge) await cognee_rag.process_data(apple_knowledge) # 4. 图检索 results await cognee_rag.search(Who founded Apple?) print(Search Results:, results) # 5. 输出可视化 HTML 并打开浏览器 viz_path await cognee_rag.visualize_graph( open_browserTrue, output_file_path., # 保存到当前目录 ) print(fVisualization saved to: {viz_path}) if __name__ __main__: asyncio.run(main())值得一提示例传入的dataset_name并非main_dataset但从第四节可知当前集成实际仍将数据写入main_dataset——本文按实现事实说明避免读者误以为数据集参数已完全生效。六、企业级部署与生产数据库当数据规模超出嵌入式存储后可切换到企业级后端。README 的高级示例演示了三种生产组合图数据库改用neo4j需在构造函数补充graph_database_url/graph_database_username/graph_database_password向量库改用qdrant补充vector_db_url、vector_db_key关系库改用postgresql库名如cognee_production。高级示例还会从 CSV 构造文档随后同时演示search()、rag_search()与get_related_nodes()三种检索并分别打印结果。按包内 README 的数据库支持声明可确认能力矩阵如下关系数据库SQLite、PostgreSQL向量数据库LanceDB、PGVector、Qdrant、Weaviate图数据库Neo4j、NetworkX、Kuzu另需注意构造函数传给 Cognee 关系库配置的键为db_provider尽管构造参数名为relational_db_provider见 graph_rag.pyREADME 高级示例中同时写到了relational_db_providerpostgresql与relational_db_name等参数接入真实 PostgreSQL 时还应补上 host、port、username、password这些与上文参数表一一对应。七、设计要点与注意事项来自源码与测试的事实异步优先所有对外方法均为async defREADME 强调其异步优先设计适合高并发应用同步入口通过asyncio.run(main())驱动。数据校验与健壮性add的空列表会触发ValueError而单个文档、含空白文本的列表均被宽容处理。测试文件 test_graph_rag_cognee.py 覆盖了上述边界并包含大量基于unittest.mock/pytest的离线 mock 测试如test_mock_full_workflow通过 patchcognee.add、cognee.cognify、cognee.search、get_default_user验证完整工作流。上游限制测试文件中多处带pytest.mark.skipif(True, reasonCognee is making invalid queries internally, upstream issue.)即部分端到端用例因 Cognee 上游内部查询问题被跳过。这意味着在升级 cognee 依赖前端到端链路尤其带真实 LLM 与图谱构建的流程应以实际运行结果为准。目录文件说明包内含graph_visualization.html可视化产物示例与 example.py带进度打印的教学脚本。仓库内其它模块未提供可直接复用的 GraphRAG 抽象基类base.py中的GraphRAG协议目前正是为了未来下沉到llama-index-core、统一多家 GraphRAG 库接口而预留的抽象层。八、结语与延伸阅读CogneeGraphRAG用一个类同时管理 LLM、图库、向量库与关系库四套后端配置把文本 → 实体关系图 → 多路检索 → HTML 可视化整条流水线封装为 6 个语义清晰的异步方法是 LlamaIndex 生态中上手门槛最低的 GraphRAG 集成方案之一。如果你需要让检索结果具备实体—关系级别的结构精度与可解释性而不满足于纯向量片段召回可以从本集成的默认本地配置起步再按第 6 节替换为生产级数据库。如需继续深入可在仓库中对照以下资源API 参考页docs/api_reference/api_reference/graph_rag/cognee.md核心实现graph_rag.py、base.py集成包文档与示例README.md、example.py测试与打包配置test_graph_rag_cognee.py、pyproject.toml可视化产物示例graph_visualization.html【免费下载链接】llama_indexLlamaIndex is the leading document agent and OCR platform项目地址: https://gitcode.com/GitHub_Trending/ll/llama_index创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考