系列:00 索引 · 上一篇:06 混合 RAG · 下一篇:08 HITL
1. 行业常见问题
| 问题类型 | 纯向量 RAG 的局限 |
|---|---|
| 「A 方法输入什么、预测什么指标?」 | 段落相似≠关系明确 |
| 「与 B 方法相比差异?」 | 需多文档对照,易漏 |
| 方法-工具-论文-指标多跳 | 检索 top-k 难覆盖结构 |
典型领域:方法库、药物-靶点-通路、合规规则链、供应链。
2. 该技术如何解决
用 属性图 存实体与关系;查询时用 Cypher(或 Gremlin)做子图扩展;把 子图 + 关联文本 喂给 LLM,即 Graph RAG。
与混合 RAG 互补:文献叙述用向量;方法关系用图。
3. 核心原理
3.1 属性图三元组
1 | (方法)-[:接受输入]->(特征类型) |
3.2 Graph RAG 流程
1 | NL 问题 → 实体链接 → Cypher 子图(1–2 hop)→ 序列化 → LLM + 引用 node/edge |
3.3 子图过大问题
- 限制 hop、按关系类型过滤
- 只取 top 相关节点(度、权重、向量初筛)
4. 典型实现与代码示例
Graph RAG 同样分 Part A 建图 ingest 与 Part B Agent 调用。实现在 mcp/mcp_rag_methods/graph/,Method KB Agent 消费 query_graph MCP tool。
4.1 Part A:MethodGraphStore 建图
1 | # mcp/mcp_rag_methods/graph/store.py(节选) |
4.2 Part B:子图检索 + citation
1 | # mcp/mcp_rag_methods/graph/query.py → query_graph 返回 |
MCP 暴露为 query_graph(domain, question, top_k);Method KB Agent Skill 要求标注 node_id。
4.3 工程验收
1 | # Part A |
与 Hybrid RAG 分工
| 知识类型 | 存储 | Agent | 典型问题 |
|---|---|---|---|
| 基因文献 | kb_gene |
literature | 「BRCA1 哪条 siRNA 效果好?」 |
| 公共方法 | kb_methods |
method_kb | 「转录本选择策略有哪些?」 |
大规模可迁移 Neo4j(NEO4J_URI 占位);Cypher 建图见原文 3.1 三元组示例。
5. 替代方案与优缺点
| 方案 | 优点 | 缺点 |
|---|---|---|
| Neo4j | 生态成熟、Cypher 友好 | 需运维(可 Docker) |
| Kuzu | 嵌入式、单机快 | 分布式弱 |
| NetworkX 内存图 | 原型快 | 无持久化查询语言 |
| 三元组存 SQL + JOIN | 团队熟悉 SQL | 多跳查询繁琐 |
| Microsoft GraphRAG 社区摘要 | 全局问答强 | 构建重、成本高 |
| 仅向量 + 元数据过滤 | 简单 | 关系弱 |
6. 自检题
- 什么类型的问题更适合 Graph RAG 而非 Hybrid RAG?
- 为什么入库需要 HITL 或 staging?
- 2-hop 与 3-hop 扩展各适合什么规模?