ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

DB-GPT Graph RAG 部署指南:基于 TuGraph 图数据库的知识图谱检索实战

DB-GPT Graph RAG 部署指南:基于 TuGraph 图数据库的知识图谱检索实战 DB-GPT Graph RAG 部署指南基于 TuGraph 图数据库的知识图谱检索实战【免费下载链接】DB-GPTopen-source agentic AI data assistant for the next generation of AI Data products.项目地址: https://gitcode.com/GitHub_Trending/db/DB-GPT本文是一份面向开发者的 Graph RAG 安装与配置指南完整讲解如何在 DB-GPT 中以 TuGraph 图数据库为底层存储构建知识图谱检索Graph RAG能力。你将学会通过uv sync安装 graph_rag 相关依赖、用 Docker 拉起 TuGraph 实例、在dbgpt-graphrag.toml中正确配置图存储连接并理解从文档加载 → 三元组抽取 → 图谱存储 → 图谱召回的完整链路最终启动 WebServer 让 RAG 应用跑通图谱检索。为什么用 Graph RAG从向量检索到图谱检索DB-GPT 默认的 RAG 方案基于向量数据库通过把文档切块后向量化来实现语义相似度召回。然而向量检索存在两个天然短板不确定性相似度打分缺少可解释性与可解释性不足难以向用户说明为什么召回这一段。Graph RAG 的解决思路是用图数据库来承载知识。文档被 LLM 抽取为实体、关系、实体三元组并写入图存储查询时先在图上做实体/关键词定位再沿关系边扩展子图召回。这种结构化的检索路径比纯粹的向量近似更可控也便于溯源——这也是文档中明确指出的核心动机Using a graph database to implement RAG can, to some extent, alleviate the uncertainty and interpretability issues brought about by vector database retrieval.DB-GPT 目前内置的图谱索引体系由多类子图构成详见 Knowledge Base Indexing PrinciplesLLM 三元组图谱语义层(entity) -predicate- (entity)由 LLM 从文本抽取文档-段落图谱结构层document -include- chunk、chunk -next- chunk记录文档与切块的包含、阅读顺序关系Markdown 标题图谱file → H1 → H2 → H3的contains层级代码图谱基于 ASTtree-sitter解析出的function/class节点与defines边。其中三元组图谱与文档-段落图谱存放在图数据库TuGraph / Neo4j / Memgraph中这正是本篇文章要安装与配置的部分。第一步安装 graph_rag 依赖在仓库根目录执行以下uv sync命令一次性拉取 base、RAG、图存储、示例运行所必需的全部可选依赖uv sync --all-packages \ --extra base \ --extra proxy_openai \ --extra rag \ --extra storage_chromadb \ --extra dbgpts \ --extra graph_rag各 extra 的作用extra用途baseDB-GPT 基础运行环境proxy_openai通过 OpenAI 兼容接口调用 LLM用于三元组抽取与问答生成ragRAG 检索框架切块、组装器、检索器storage_chromadbChroma 向量存储Graph RAG 示例中向量召回部分依赖dbgptsDB-GPT 插件/技能体系graph_ragGraph RAG 专项支持包含图存储适配与知识图谱构建提示graph_ragextra 会引入与 TuGraph 交互的图存储实现代码位于 packages/dbgpt-ext/src/dbgpt_ext/storage/graph_store/tugraph_store.py。若运行示例时提示缺少dbgpt_tugraph_plugins包可按源码中的提示安装dbgpt-tugraph-plugins0.1.1——该包提供 community 检测所需的leiden插件二进制见TuGraphStore._upload_plugin的实现逻辑。第二步用 Docker 准备 TuGraph 图数据库TuGraph 是 DB-GPT 支持的首个图数据库。文档建议使用4.5.1 及以上版本的 TuGraph 镜像。最直接的方式是拉取官方运行时镜像并启动容器docker pull tugraph/tugraph-runtime-centos7:4.5.1 docker run -d -p 7070:7070 -p 7687:7687 -p 9090:9090 \ --name tugraph_demo \ tugraph/tugraph-runtime-centos7:latest \ lgraph_server -d run --enable_plugin true端口说明7070TuGraph 可视化 Web 管理界面7687Bolt 协议端口默认连接端口DB-GPT 通过该端口写入与查询图谱9090TuGraph HTTP API 端口。命令中的--enable_plugin true非常关键DB-GPT 的社区检测community detection需要向图数据库动态上传leiden等 C 插件若未开启插件能力enable_summary等依赖社区摘要的功能将无法工作。镜像下载提示若 docker hub 拉取困难文档同时给出了 OSS 离线包方案——直接下载对应 tar 包并docker load导入wget https://tugraph-web.oss-cn-beijing.aliyuncs.com/tugraph/tugraph-4.5.1/tugraph-runtime-centos7-4.5.1.tar -O tugraph-runtime-centos7-4.5.1.tar docker load -i tugraph-runtime-centos7-4.5.1.tar容器启动后可用curl http://127.0.0.1:7070或直接访问 Web 界面验证服务可用再进入下一步配置。第三步在 dbgpt-graphrag.toml 中配置 TuGraph 连接仓库根目录已提供 Graph RAG 专属配置模板 configs/dbgpt-graphrag.toml。核心的图存储连接配置如下[rag.storage.graph] type TuGraph host 127.0.0.1 port 7687 username admin password 73TuGraph enable_summary True enable_similarity_search True其中type需与 tugraph_store.py 中TuGraphStoreConfig.__type__ tugraph对应的注册类型保持一致源码对大小写做了兼容处理config.get_type_value() or os.getenv(GRAPH_STORE_TYPE)见 knowledge_graph.py。连接参数源码级解读TuGraphStoreConfig 的字段可通过配置文件或环境变量两种途径生效环境变量优先级低于显式配置config.host or os.getenv(TUGRAPH_HOST)参数默认值说明host127.0.0.1TuGraph 主机地址环境变量TUGRAPH_HOSTport7687Bolt 协议端口环境变量TUGRAPH_PORTusernameadmin登录用户名环境变量TUGRAPH_USERNAMEpassword73TuGraph登录密码环境变量TUGRAPH_PASSWORDvertex_typeentity实体顶点类型名document_typedocument文档顶点类型名chunk_typechunk切块顶点类型名edge_typerelation关系边类型名include_typeinclude包含边类型名document→chunknext_typenext顺序边类型名chunk 阅读顺序plugin_names[leiden]启动时自动上传的图算法插件列表环境变量TUGRAPH_PLUGIN_NAMESenable_summaryTrue是否启用图社区摘要环境变量GRAPH_COMMUNITY_SUMMARY_ENABLEDenable_similarity_searchFalse是否启用图谱向量相似度检索环境变量SIMILARITY_SEARCH_ENABLED更多高级参数模板中默认注释dbgpt-graphrag.toml中还提供了丰富的进阶配置项按需取消注释即可启用# enable_summary True # community_topk 20 # 社区召回数量 # community_score_threshold 0.3 # 社区召回分数阈值 # triplet_graph_enabled True # 启用三元组子图 # extract_topk 20 # 三元组抽取召回 top-k # document_graph_enabled True # 启用文档-段落结构子图 # knowledge_graph_chunk_search_top_size 20 # knowledge_graph_extraction_batch_size 20 # enable_similarity_search True # 启用相似度检索 # knowledge_graph_embedding_batch_size 20 # similarity_search_topk 5 # extract_score_threshold 0.7 # enable_text_search True # 启用文本检索 # text2gql_model_enabled True # 启用 Text2GQL 模型 # text2gql_model_name qwen2.5:latest这些参数与 CommunitySummaryKnowledgeGraph 的构造参数一一对应如kg_community_top_k、kg_extract_top_k、kg_triplet_graph_enabled、kg_document_graph_enabled、kg_text2gql_model_name等每个参数在初始化时都会回退到对应环境变量读取例如kg_community_top_k对应KNOWLEDGE_GRAPH_COMMUNITY_SEARCH_TOP_SIZE。第四步启动 WebServer配置完成后使用--config指定 Graph RAG 配置启动服务uv run python packages/dbgpt-app/src/dbgpt_app/dbgpt_server.py --config configs/dbgpt-graphrag.toml启动后默认监听0.0.0.0:5670[service.web]配置段服务会将 RAG 相关请求路由到启用了图谱检索的知识库上。备选方案若你已有自己的 LLM 服务配置如 OpenAI 代理也可以直接使用通用代理配置启动uv run python packages/dbgpt-app/src/dbgpt_app/dbgpt_server.py --config configs/dbgpt-proxy-openai.toml两种方式的差异在于模型来源配置[models]段图谱存储配置段[rag.storage.graph]需要保持相同。从源码理解 Graph RAG 的完整工作流仓库提供了可直接运行的官方示例 examples/rag/graph_rag_example.py其核心流程清晰地展示了写入图谱 → 图谱召回 → LLM 作答三步走# 1. 构建知识图谱连接器三元组图谱 kg BuiltinKnowledgeGraph( configTuGraphStoreConfig(), namenaive_graph_rag_test, embedding_fnNone, llm_clientllm_client, llm_modelmodel_name, ) # 2. 文档 - 切块 - 图谱持久化 assembler await EmbeddingAssembler.aload_from_knowledge( knowledgeknowledge, chunk_parameterschunk_parameters, index_storekg, retrieve_strategyRetrieverStrategy.GRAPH, # 指定 GRAPH 检索策略 ) await assembler.apersist() # 3. 图谱召回并交给 LLM 生成答案 retriever assembler.as_retriever(1) chunks await retriever.aretrieve_with_scores(question, score_threshold0.3) print(await ask_chunk(chunks[0], question))示例中内置了两组测试用例可用pytest -s examples/rag/graph_rag_example.py运行可对照理解两种图构建模式测试函数图类型切块策略特点test_naive_graph_ragBuiltinKnowledgeGraphCHUNK_BY_SIZE按固定大小切块仅构建 LLM 三元组图谱无需 embeddingtest_community_graph_ragCommunitySummaryKnowledgeGraphCHUNK_BY_MARKDOWN_HEADER按标题切块在基础图谱上叠加社区检测与摘要需 embedding 函数示例使用的测试数据为 examples/test_files/graphrag-mini.md其内容本身就是TuGraph 项目生态图谱与DB-GPT 项目生态图谱的实体-关系清单例如(TuGraph-family/tugraph-db#common_developer#vesoft-inc/nebula)非常适合验证三元组抽取与图谱召回效果。底层实现链路三元组抽取BuiltinKnowledgeGraph 在load_document/aload_document中调用TripletExtractor对每个 chunk 抽取(subject, predicate, object)三元组再通过GraphStoreAdapter.insert_triplet写入图库。关键词召回检索阶段asimilar_search_with_scores先用KeywordExtractor从问题中抽取关键词再调用explore_trigraph在图库中定位实体并扩展子图最后把子图以实体/关系列表的形式构造成 context chunk见 knowledge_graph.py。社区摘要启用enable_summary后CommunitySummaryKnowledgeGraph会利用leiden插件做社区发现并对每个社区生成 LLM 摘要检索时按community_topk与community_score_threshold召回社区摘要从而覆盖三元组无法直接命中的宏观问题。多路召回组合图检索器支持triplet_graph_enabled三元组子图与document_graph_enabled文档结构子图同时开启并结合向量相似度搜索similarity_search_topk做混合召回相关逻辑位于 packages/dbgpt-ext/src/dbgpt_ext/rag/retriever/graph_retriever/graph_retriever.py。参数速查TuGraphStoreConfig完整的参数参考可查看 TuGraphStoreConfig 配置文档核心可配项即上表所列。注意enable_similarity_search默认值为False示例配置文件显式置为True是为了让图谱召回同时享受向量语义检索的增益——该能力要求你同时在[models.embeddings]段配置好 embedding 模型。相关阅读Knowledge Base Indexing Principles —— 文档从原始文件到可检索索引的完整索引原理涵盖向量、关键词、知识图谱三类持久化索引与结构树、代码图谱两类叠加能力Agentic RAG Conversation Principles —— 问题如何经过 agentic 检索循环最终变成带引用的回答RAG module reference —— RAG 模块整体参考文档包含检索器、组装器与存储抽象。【免费下载链接】DB-GPTopen-source agentic AI data assistant for the next generation of AI Data products.项目地址: https://gitcode.com/GitHub_Trending/db/DB-GPT创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进