name: 图增强RAG系统设计 description: 用于设计完整的图增强检索生成系统,结合图检索和LLM推理。当用户提到GraphRAG系统、技术栈、Neo4j与LLM、LangChain图、LlamaIndex知识图谱、社区检测用于RAG、混合符号向量集成、生产级GraphRAG或领域特定图RAG时调用。提供架构设计、技术选择和领域定制指导。
目录
图增强RAG系统设计
这是什么?
这个技能帮助您设计完整的图增强检索生成系统,整合图数据库、向量存储、编排框架和LLM推理。给定领域和检索需求,它指导您进行模式选择、技术栈决策、集成流水线设计和领域定制。
收益:图增强RAG系统通过添加关系结构克服了扁平向量RAG的基本限制,实现多跳推理、可解释性的来源追踪,以及保留跨连接实体语义上下文的结构化检索。
工作流程
复制此清单并完成每个步骤:
图增强RAG系统设计进度:
- [ ] 步骤1:分析领域需求
- [ ] 步骤2:选择GraphRAG模式
- [ ] 步骤3:选择技术栈
- [ ] 步骤4:设计集成流水线
- [ ] 步骤5:应用领域定制
- [ ] 步骤6:定义部署策略
- [ ] 步骤7:生成规范
步骤1:分析领域需求
描述检索问题:查询复杂度(单跳vs多跳)、数据量和更新频率、合规约束、延迟需求以及可解释性需求。确定图结构是否比扁平检索增加价值——多跳推理、实体消歧和关系感知上下文组装是GraphRAG的强信号。定义系统必须服务的用户角色和查询模式。
步骤2:选择GraphRAG模式
使用GraphRAG模式选择指南选择核心检索架构。将您的查询模式与适当模式匹配:用于混合结构/非结构查询的混合符号向量、用于聚焦上下文组装的按需子图,或用于广泛主题查询的基于社区的全局摘要。详细模式描述见方法论参考。
步骤3:选择技术栈
为每个架构层选择组件:图数据库、向量数据库、编排框架和LLM提供商。使用技术栈参考进行组件间比较。关键决策:单系统vs多系统混合、托管vs自托管、基于框架vs自定义流水线。考虑团队专长、预算约束和现有基础设施。
步骤4:设计集成流水线
定义从摄取到生成的端到端数据流。核心流水线阶段:摄取(原始数据)-> 提取(实体和关系)-> 构建知识图谱(填充图)-> 索引(向量嵌入 + 图索引)-> 检索(混合图+向量搜索)-> 生成(带图接地的LLM上下文)-> 引用(来自图路径的来源)。设计查询路由逻辑,决定何时使用图遍历、向量搜索或两者。见方法论参考了解流水线设计考虑。
步骤5:应用领域定制
将通用架构适应领域特定需求:本体选择(医疗的UMLS、金融的FIBO)、合规模式(HIPAA访问控制、监管审计追踪)和领域检索模式(金融的时间图、临床的分层患者图)。见领域模式参考了解领域特定指导。
步骤6:定义部署策略
指定部署架构:图数据库规模和集群、向量索引配置、缓存策略、批处理vs实时摄取、监控和可观察性以及扩展计划。定义查询延迟、吞吐量和新鲜度的性能SLA。规划图维护:增量更新、模式演进和数据质量监控。
步骤7:生成规范
使用输出模板编译完整系统设计规范。根据系统设计评估准则的质量标准进行验证。确保所有组件通过清晰的数据流、错误处理和回退策略端到端连接。
GraphRAG模式选择
| 模式 | 查询类型 | 机制 | 最适合 | 权衡 |
|---|---|---|---|---|
| 混合符号向量 | 混合结构 + 语义 | 按图类型/约束预过滤,然后按嵌入相似性排序;或广泛向量搜索,然后图引导扩展 | 需要精确结构查询和模糊语义搜索的系统;企业QA与实体消歧 | 更高复杂度;需要同步图 + 向量索引;延迟取决于过滤后排序vs扩展策略 |
| 按需子图 | 聚焦多跳 | 构建临时查询特定子图而非查询单一整体图;提取相关邻域、嵌入、检索 | 需要聚焦上下文的实时应用;频繁更新的系统;成本敏感的部署 | 子图构建的冷启动延迟;需要高效子图提取;上下文可能错过遥远但相关的节点 |
| 基于社区的全局摘要 | 广泛主题 / 全局 | 检测图中的社区/集群,嵌入每个社区的摘要,检索相关社区然后深入实体细节;Microsoft GraphRAG模式 | 广泛的“X是关于什么的?”查询;语料库级摘要;跨大型知识库的主题探索 | 需要周期性社区检测(批处理);摘要可能丢失细节;社区边界可能拆分相关概念 |
选择模式
- 如果查询需要同时“查找类型X的实体”和“查找语义相似内容” -> 混合符号向量
- 如果查询聚焦且上下文窗口成本重要 -> 按需子图
- 如果查询广泛、主题或跨语料库 -> 基于社区的全局摘要
- 如果需求跨越多个模式 -> 结合模式,带查询路由器分发到适当检索路径
集成架构
完整的图增强RAG系统集成四个核心组件层:
+------------------+ +------------------+ +----------------------+ +-----------+
| 图数据库 | | 向量数据库 | | 编排框架 | | LLM |
| (结构) |<--->| (语义) |<--->| |<--->| (推理) |
| | | | | | | |
| Neo4j / Tiger | | Pinecone / | | LangChain / | | GPT-4 / |
| Graph / Neptune | | Weaviate / | | LlamaIndex / | | Claude / |
| / GraphDB | | Qdrant / pgvec | | LangGraph / 自定义 | | Llama |
+------------------+ +------------------+ +----------------------+ +-----------+
| | |
v v v
图遍历 嵌入搜索 流水线逻辑
多跳路径 语义排名 查询路由
模式过滤 相似度分数 上下文组装
来源链 混合重新排序 引用生成
关键集成决策:
- 图优先vs文本优先流水线:查询先访问图(结构过滤)还是向量存储(语义搜索)?
- 单系统vs多系统:使用Neo4j向量索引(单系统)还是Neo4j + Pinecone(多系统)?
- 框架vs自定义:LangChain/LlamaIndex快速开发,或自定义流水线最大控制?
- 同步:更新期间如何保持图和向量索引一致?
输出模板
图增强RAG系统设计规范
======================================
项目:[项目名称]
领域:[目标领域]
日期:[日期]
作者:[作者]
1. 领域需求
查询模式:[单跳 / 多跳 / 主题 / 混合]
数据量:[文档数量、实体数量估计]
更新频率:[实时 / 每日 / 每周 / 批处理]
延迟需求:[p50, p95, p99目标]
合规:[HIPAA / GDPR / SOX / 无]
可解释性:[必需 / 可选 / 不需要]
2. 图增强RAG模式
主要模式:[混合符号向量 / 按需子图 / 基于社区]
次要模式:[如果混合方法,指定]
查询路由器:[查询如何分发到检索路径]
理由:[为什么这个模式适合需求]
3. 技术栈
图数据库:[产品、版本、部署模式]
理由:[为什么选择这个]
向量数据库:[产品、版本、部署模式]
理由:[为什么选择这个]
编排:[框架或自定义流水线]
理由:[为什么选择这个]
LLM提供商:[模型、API或自托管]
理由:[为什么选择这个]
支持基础设施:[缓存、队列、监控工具]
4. 集成流水线
摄取:
- 源类型:[文档、API、数据库]
- 处理:[分块策略、元数据提取]
提取:
- 实体提取:[方法、模型、置信度阈值]
- 关系提取:[方法、模式执行]
知识图谱构建:
- 模式:[节点类型、边类型、属性]
- 填充:[批处理 / 流式、去重策略]
索引:
- 图索引:[索引类型、查询优化]
- 向量索引:[嵌入模型、维度、索引类型]
检索:
- 图检索:[遍历策略、深度限制]
- 向量检索:[Top-k、相似度阈值]
- 混合融合:[图和向量结果如何结合]
生成:
- 上下文组装:[检索数据如何成为LLM上下文]
- 提示模板:[图接地生成的结构]
引用:
- 来源:[来源如何追踪和呈现]
5. 领域定制
本体:[使用的领域本体或分类]
合规控制:[访问控制、审计、加密]
领域特定模式:[时间图、分层架构等]
6. 部署策略
基础设施:[云提供商、区域、高可用配置]
扩展计划:[图DB扩展、向量DB扩展、LLM扩展]
监控:[指标、警报、仪表板]
维护:[图更新策略、模式演进计划]
7. 性能目标
查询延迟:[p50, p95, p99]
吞吐量:[每秒查询数]
新鲜度:[数据变更到可查询的时间]
准确度:[检索精确度/召回目标]
8. 风险与缓解
- [风险1]:[缓解策略]
- [风险2]:[缓解策略]
- [风险3]:[缓解策略]
下一步:
- 使用样本数据构建概念验证
- 基准测试检索质量对比基线RAG
- 用生产规模数据负载测试
- 基于评估迭代模式和检索策略