三十八:GraphRAG自测题答案¶
来源:http://mp.weixin.qq.com/s?__biz=MzYyNTk3Njg1NA==&mid=2247484498&idx=1&sn=e4910f9114489eec5400023ef684f806&chksm=f01eb72bc7693e3d18006c868c63331445248b9da5a11a9376f88dc6ec255c2584cccbfdd6f1#rd
参考资料¶
-
Microsoft GraphRAG: https://microsoft.github.io/graphrag/
-
GraphRAG paper: https://arxiv.org/pdf/2404.16130
-
GraphRAG overview and examples: https://blog.csdn.net/m0_56255097/article/details/144033101
-
Zilliz GraphRAG article: https://xie.infoq.cn/article/18ca7cd7702fc0f03baa02b01
-
Microsoft GraphRAG GitHub: https://github.com/microsoft/graphrag
A. GraphRAG 基础¶
1. 什么是 GraphRAG?它和普通 RAG 的核心区别是什么?¶
GraphRAG 是把知识图谱结构引入 RAG 的方法。它从文本中抽取实体、关系和 claim,构建图索引,再基于图结构、社区摘要和原文证据回答问题。 普通 RAG 主要基于 chunk 相似度检索;GraphRAG 额外利用实体关系和社区结构。
2. 普通向量 RAG 在什么场景下容易失效?¶
在多实体关系、多跳推理、跨文档综合、全局主题总结、网络结构分析和证据分散在许多 chunk 中的场景容易失效。 因为 top-k 语义相似 chunk 不一定覆盖完整关系链。
3. GraphRAG 主要解决哪些问题?¶
它主要解决关系型知识组织、多跳证据检索、全局概览、跨文档主题综合和实体网络分析问题。 它不是为了替代所有向量检索,而是补足向量 RAG 对关系结构的不足。
4. GraphRAG 的高层构建流程是什么?¶
流程是:
Documents -> text units -> entity extraction -> relationship extraction
-> graph construction -> community detection -> community reports
-> local/global search -> answer
5. GraphRAG 中的节点、边、社区分别表示什么?¶
节点通常表示实体,如人物、组织、项目、概念。边表示实体之间的关系。社区表示图中联系紧密的一组节点和边,通常对应主题、组织、项目或事件簇。 社区可进一步生成摘要,用于全局检索。
6. GraphRAG 和传统知识图谱问答有什么区别?¶
传统知识图谱问答通常基于人工或结构化三元组和查询语言,强调精确结构化查询。GraphRAG 更偏自动从非结构化文本中构图,并用 LLM 处理自然语言、摘要和不完美图谱。 GraphRAG 通常还保留原文证据和社区摘要。
7. GraphRAG 是否可以完全替代向量 RAG?为什么?¶
不能。GraphRAG 构建成本高,抽取可能出错,简单事实问答用向量 RAG 更便宜高效。很多系统会把 GraphRAG 与向量检索、BM25、rerank 结合。 它是补充关系结构能力,不是万能替代。
8. GraphRAG 适合哪些业务场景?¶
适合企业知识网络、项目依赖、组织关系、安全情报、供应链风险、法律案件关系、科研论文网络、多跳问答和全局总结。 这些场景中实体关系比单个 chunk 相似度更重要。
9. 哪些场景不适合优先使用 GraphRAG?¶
简单 FAQ、小规模短文档、低延迟强约束场景、实体关系不重要的普通问答、数据噪声大且无法校验抽取结果的场景,不适合优先使用。 普通 RAG 成本更低、实现更简单。
10. 为什么 GraphRAG 的构建成本通常高于普通 RAG?¶
因为它需要 LLM 或模型抽取实体、关系、claim,做实体消歧、图构建、社区发现和社区摘要生成。这些步骤比简单 chunk embedding 更昂贵。 更新和评估也更复杂。
B. 知识图谱索引构建¶
11. GraphRAG 中 text unit 的作用是什么?¶
text unit 是从原文中切出的基本处理单元,用于实体抽取、关系抽取和 claim 抽取。它连接原文证据和图结构。 它是构图输入,不一定是最终检索单位。
12. text unit 和普通 RAG chunk 有什么区别?¶
普通 chunk 通常直接用于向量检索和 prompt 上下文。text unit 更多用于构建图索引,产生实体、关系、claim 和来源映射。 当然两者可以重叠,但目标不同。
13. text unit 应保留哪些元数据?¶
应保留 document_id、title、section_path、page/paragraph 位置、source URL、更新时间、权限、语言和原文。 这些元数据用于引用、权限过滤、更新和审计。
14. 实体抽取的目标是什么?¶
目标是识别文本中的重要对象,如人物、组织、产品、项目、事件、地点、技术和概念,并为其建立节点。 实体抽取质量决定图谱覆盖率。
15. 常见实体类型有哪些?¶
包括 Person、Organization、Product、Project、Concept、Event、Location、Technology、Document、Dataset、Service 等。 类型应根据业务 schema 定义。
16. 关系抽取的目标是什么?¶
目标是识别实体之间的语义连接,例如 A 依赖 B、A 属于组织 C、A 影响 B、A 开发了 B。 关系边让图能支持多跳和网络结构分析。
17. 关系边通常应包含哪些字段?¶
包括 source entity、target entity、relation type、description、confidence、source evidence、timestamp 和 source_text_unit_ids。 保留证据是后续验证的基础。
18. 什么是 claim 抽取?它有什么价值?¶
claim 是可验证的事实陈述。抽取 claim 可以帮助构建实体描述、支持答案证据、做事实核查和处理多文档冲突。 claim 应绑定来源和时间。
19. 为什么实体和关系都必须保留来源证据?¶
因为 LLM 抽取可能错误。没有来源证据,就无法验证关系是否真实,也无法给答案提供引用。 GraphRAG 仍然需要可追溯性。
20. 什么是实体消歧?为什么重要?¶
实体消歧是判断不同文本提到的实体是否相同,例如 “MSFT” 和 “Microsoft”。它重要是因为错误消歧会导致图断裂或错误合并。 图质量高度依赖实体规范化。
21. 实体误合并和实体漏合并分别会造成什么问题?¶
误合并会把不同实体的关系混在一起,产生错误答案。漏合并会把同一实体拆成多个节点,导致关系链断裂、召回不完整。 两者都会损害图检索。
22. 实体消歧可以使用哪些方法?¶
可以使用字符串规则、别名词典、embedding 相似度、类型约束、上下文匹配、LLM 判断和人工校验高频实体。 生产中常组合多种方法。
23. 图构建中节点和边可以有哪些属性?¶
节点可有 name、type、description、embedding、source IDs、community ID、权限。边可有 relation type、description、weight、confidence、source IDs、timestamp。 这些属性支持检索、过滤和解释。
24. GraphRAG 为什么可能需要同时使用图数据库、向量索引和全文索引?¶
图数据库适合关系遍历,向量索引适合语义检索实体/摘要/文本,全文索引适合关键词和精确匹配。 GraphRAG 通常是多索引系统,而不是单一图数据库。
C. 社区发现与社区摘要¶
25. 什么是社区发现?¶
社区发现是在图中找到连接紧密的节点群。每个社区通常代表一个主题、组织、项目或事件簇。 它帮助把复杂图分层组织。
26. GraphRAG 中社区发现的作用是什么?¶
它把实体关系网络划分为可摘要的子图,为全局搜索提供结构化主题单元。 没有社区摘要,全局问题很难直接从大量节点和边中生成答案。
27. Louvain、Leiden 这类算法大致解决什么问题?¶
它们用于图社区划分,目标是找到模块度较高或连接更紧密的节点群。Leiden 通常被认为在社区连通性和稳定性上有改进。 面试中不需要展开算法细节,但要知道它们用于社区发现。
28. 为什么 GraphRAG 可能需要多级社区层次?¶
因为图中既有细粒度子主题,也有更大范围主题。多级社区可以支持从局部到全局的检索和摘要。 全局问题可能使用高层社区,具体问题使用低层社区。
29. 什么是 community report 或 community summary?¶
它是对某个图社区的文本摘要,通常由 LLM 基于社区内实体、关系和 claim 生成。 它让系统能以较短文本理解一个社区的主题和关键关系。
30. 社区摘要通常包含哪些内容?¶
包括社区主题、关键实体、关键关系、重要 claim、来源证据、时间信息、风险或不确定性。 高质量社区摘要应可追溯到原文证据。
31. 社区摘要为什么能支持全局问题回答?¶
全局问题需要跨大量文档和实体综合。社区摘要把大量局部关系压缩成主题级信息,便于 map-reduce 式汇总。 这比直接检索 top-k chunk 更适合整体概览。
32. 社区摘要可能引入哪些风险?¶
可能遗漏重要实体、过度概括、引入幻觉、错误合并冲突信息、丢失来源、泄露权限受限信息。 因此摘要也需要评估和权限控制。
33. 如何评估社区摘要是否忠实?¶
可以检查摘要 claims 是否被社区内原始 text units 或关系支持,统计 unsupported claims;也可以人工或 LLM judge 根据证据评分。 重点是摘要不能凭空生成新事实。
34. 如果社区划分不合理,会对检索和回答造成什么影响?¶
相关实体可能被分散到不同社区,导致全局摘要不完整;无关实体被放在同一社区,会产生噪声和错误综合。 这会影响 local/global search 的质量。
D. Local Search、Global Search 与 DRIFT¶
35. 什么是 GraphRAG Local Search?¶
Local Search 是围绕具体实体或局部关系进行检索。它先识别 query 中的实体,再扩展相关邻域、关系、claims 和原文证据。 它适合具体对象问答。
36. Local Search 适合回答哪些问题?¶
适合实体定义、实体属性、两个实体关系、局部多跳链路、某项目依赖、某组织参与事件等问题。 问题通常包含明确实体。
37. Local Search 的基本流程是什么?¶
流程是:识别 query 实体,链接到图中节点,扩展邻居和相关边,取相关 text units 和 entity descriptions,组装上下文,LLM 生成答案。 必要时结合向量检索和 rerank。
38. Local Search 中实体识别失败会造成什么问题?¶
如果 query 实体没有识别或链接错节点,后续邻域扩展会沿错误方向进行,导致召回错误证据。 实体链接是 Local Search 的关键。
39. 什么是 GraphRAG Global Search?¶
Global Search 是面向全局主题和整体概览的问题,通常基于社区摘要而不是具体实体邻域。 它适合回答“整个语料库主要讲什么”“有哪些主题/风险/趋势”等问题。
40. Global Search 适合回答哪些问题?¶
适合跨文档总结、主题发现、组织网络概览、风险归纳、社区级比较和数据集整体洞察。 这类问题没有单个明确 chunk 能回答。
41. Global Search 的 map-reduce 思路是什么?¶
Map 阶段让模型基于多个相关社区报告生成局部答案或要点;Reduce 阶段再综合这些局部答案生成最终回答。 这能处理大量社区摘要并控制上下文规模。
42. 为什么 Global Search 不只是检索 top-k chunk?¶
因为全局问题需要覆盖多个主题和社区,top-k chunk 可能只命中局部相关内容,无法代表整体分布。 社区摘要提供了更高层次的全局视角。
43. Local Search 和 Global Search 的主要区别是什么?¶
Local Search 从具体实体出发,扩展图邻域,适合局部事实和关系。Global Search 从社区报告出发,综合多个社区,适合整体概览和主题总结。 一个偏局部证据,一个偏全局综合。
44. 什么是 DRIFT Search?它试图解决什么问题?¶
DRIFT Search 可以理解为结合全局社区信息和局部实体证据的多粒度搜索。它解决只看全局太空泛、只看局部缺背景的问题。 适合既需要背景又需要具体证据的问题。
45. 如何根据用户问题选择 local、global 或 hybrid search?¶
如果问题包含明确实体和关系,选 local;如果问整体主题、趋势、风险,选 global;如果既有实体又需要背景概览,选 hybrid/DRIFT。 系统可以先做 query classification。
46. 多跳问题在 GraphRAG 中如何处理?¶
通过实体链接、图邻域扩展、路径搜索、跨社区检索和中间证据验证处理。每一跳都应保留证据,防止错误累积。 多跳问题是 GraphRAG 的优势场景之一。
E. 与其他 RAG 技术对比¶
47. GraphRAG 和 vector RAG 在检索单元上有什么区别?¶
Vector RAG 检索单元通常是 chunk。GraphRAG 检索单元可以是实体、关系、claim、社区报告、文本证据和图路径。 GraphRAG 的检索粒度更多样。
48. GraphRAG 和 hybrid search 有什么关系?¶
Hybrid search 结合向量和关键词检索;GraphRAG 结合图结构和文本检索。二者可以一起使用,例如先用图定位实体社区,再用向量/BM25 找原文证据。 它们不是互斥技术。
49. GraphRAG 和 rerank 如何结合?¶
GraphRAG 可以先产生候选实体、关系、社区报告和 text units,再用 reranker 按 query 相关性排序,控制进入 prompt 的证据。 Rerank 有助于减少图检索噪声。
50. GraphRAG 和 chunking-free RAG 有什么区别?¶
chunking-free RAG 关注减少固定 chunk 边界,用位置或长上下文动态定位证据。GraphRAG 关注实体关系图和社区结构。 一个解决 chunk 边界问题,一个解决关系结构和全局检索问题。
51. GraphRAG 和 long-context RAG 如何互补?¶
GraphRAG 可以用图结构选择相关社区和证据,long-context LLM 可以承载更多图证据和社区报告进行综合。 图负责组织和筛选,长上下文负责综合阅读。
52. GraphRAG 和知识库/数据库查询有什么区别?¶
数据库查询依赖结构化 schema 和精确查询语义。GraphRAG 多从非结构化文本自动抽取图,使用 LLM 处理自然语言和不完美结构。 因此 GraphRAG 更灵活,但不如数据库查询严格可靠。
53. GraphRAG 中为什么仍然需要原文引用?¶
实体关系和摘要可能由模型抽取或生成,存在错误。原文引用用于验证事实、支持答案和满足审计要求。 没有原文证据,GraphRAG 容易变成不可验证的生成系统。
54. 为什么图结构不能保证答案一定正确?¶
图可能抽取错、消歧错、关系过时、社区摘要幻觉,生成模型也可能误读图证据。图结构提升组织能力,但不是事实正确性的保证。 仍需评估和验证。
F. 评估、权限与生产化¶
55. GraphRAG 图构建阶段应评估哪些指标?¶
应评估实体 precision/recall、关系 precision/recall、实体消歧准确率、claim faithfulness、来源覆盖率和社区划分质量。 这些决定图索引上限。
56. GraphRAG 检索阶段应评估哪些指标?¶
包括 entity hit rate、path recall、community relevance、evidence coverage、local/global search 命中率和检索延迟。 不同问题类型要分开评估。
57. GraphRAG 生成阶段应评估哪些指标?¶
包括答案正确性、faithfulness、citation accuracy、global coverage、synthesis quality、拒答准确率和安全性。 全局答案还要评估覆盖度和组织质量。
58. 全局问题为什么比局部事实问题更难评估?¶
全局问题通常没有唯一标准答案,要求覆盖多个主题并做合理综合。答案可能有多种组织方式,不能只用精确匹配。 需要 rubric、人工评估或 LLM judge,并检查证据覆盖。
59. GraphRAG 中权限控制为什么更复杂?¶
因为敏感信息可能出现在原文、实体描述、关系、claim、社区摘要和最终答案中。即使不显示原文,图结构也可能泄露关系。 权限必须贯穿构建、检索和生成。
60. 为什么社区摘要也可能造成权限泄露?¶
社区摘要可能综合了用户无权访问的文档内容。即使不引用原文,也可能泄露敏感实体关系或结论。 因此社区报告应按权限隔离或在查询时过滤。
61. GraphRAG 更新时会遇到哪些问题?¶
新文档引入新实体和关系,旧关系过期,实体消歧结果变化,社区结构变化,社区摘要需要重写,权限也可能变化。 增量更新比普通向量索引更复杂。
62. 如何做 GraphRAG 的增量更新?¶
对新增/更新文档重新抽取实体关系,合并到图中,更新受影响实体、边、社区和社区摘要。对大变化可周期性全量重建。 需要版本号和来源追踪,支持回滚。
63. GraphRAG 的主要成本来自哪里?¶
来自 LLM 抽取实体关系、实体消歧、图构建、社区发现、社区摘要生成、查询时多步检索和生成。 全局搜索还可能需要 map-reduce 多次 LLM 调用。
64. 如何降低 GraphRAG 构建和查询成本?¶
可使用小模型抽取、批处理、缓存、增量更新、只对高价值文档构图、限制社区层级、复用社区摘要、按问题类型选择 local/global search。 不要对简单问题启用昂贵全局搜索。
G. 排错与系统设计¶
65. 如果 GraphRAG 回答遗漏关键实体,你会如何排查?¶
检查原文是否包含实体、text unit 是否覆盖、实体抽取是否漏掉、实体消歧是否拆错、检索是否命中相关社区、最终 prompt 是否包含该实体。 按构建、检索、生成分层定位。
66. 如果 GraphRAG 输出错误关系,你会如何排查?¶
检查关系抽取 prompt/schema、来源证据、实体是否误合并、关系方向是否错、社区摘要是否错误概括、生成阶段是否幻觉。 错误关系必须追溯到原文证据。
67. 如果 Global Search 回答过于空泛,你会如何优化?¶
提高社区报告质量,选择更相关社区,加入原文证据和关键 claim,改进 map-reduce prompt,要求具体引用和示例,或切换到 hybrid/DRIFT 搜索补充局部证据。 全局摘要需要足够具体的证据支撑。
68. 如果 Local Search 漏掉跨社区证据,你会如何优化?¶
增加跨社区边扩展、使用多跳路径搜索、结合向量检索召回相关 text units、使用 DRIFT/hybrid search,或调整社区层级。 Local Search 不应被单一社区边界限制。
69. 请设计一个企业知识库 GraphRAG 系统,说明索引构建、local/global search、权限、引用和评估。¶
离线阶段加载企业文档,切 text units,保留权限和来源;用 LLM/小模型抽取实体、关系、claim;做实体消歧;构建图;运行社区发现并生成带来源的社区报告;同时建立实体、报告、原文的向量和全文索引。 在线阶段先做用户鉴权和问题分类。实体/局部问题走 Local Search,定位实体并扩展邻域;全局问题走 Global Search,选择社区报告并 map-reduce 综合;复杂问题走 hybrid/DRIFT。最终答案必须引用原文或社区报告来源。评估上分别看实体/关系抽取质量、local/global 检索命中率、答案正确性、faithfulness、citation accuracy、权限泄露率和成本延迟。
70. 请系统总结 GraphRAG 的原理、优势、限制、适用场景和面试表达要点。¶
GraphRAG 的原理是从文档中抽取实体、关系和 claim,构建知识图谱,通过社区发现和社区摘要支持全局搜索,通过实体邻域支持局部搜索,再结合 LLM 生成答案。优势是能处理多实体关系、多跳推理、跨文档综合和全局主题问题。限制是构建成本高、抽取和消歧错误会传播、社区摘要可能幻觉、权限和更新复杂。 适用场景包括企业知识网络、项目依赖、组织关系、安全情报、供应链、法律案件和论文主题网络。面试表达要强调:GraphRAG 不是普通 RAG 的替代品,而是引入图结构补充向量相似检索;生产中通常要结合向量检索、BM25、rerank、原文引用和权限控制。
预览时标签不可点
<div class="