为了将外部知识库有效引入大模型进行回答,RAG(检索增强生成)被开发。在原始的 RAG(naive RAG) 流程中,外部文档经历切片、检索、生成,获取到最终答案输出。但在处理需要跨文档、或者跨片段的问题时,naive RAG 显得心有余而力不足。因此不同的方法被提出来解决这一问题。我们对相关论文进行了一些汇总。
-
From Local to Global: A Graph RAG Approach to Query-Focused Summarization
- 文本 chunk 总结出实体,获取实体之间的关系,组建图社区,获取社区摘要。
-
MultiHop-RAG: Benchmarking Retrieval-Augmented Generation for Multi-Hop Queries
- 组建了一个 multi-hop query 数据集,将 multi-hop query 分为四类:
推理、比较、时间综合、找不到答案
; - 评估分为了两阶段:检索结果评估、和在
给定上下文条件下
的模型生成质量评估; - 使用 naive RAG 流程进行评估,算法上没有太多可供参考的内容。
- 组建了一个 multi-hop query 数据集,将 multi-hop query 分为四类:
-
GenDec: A robust generative Question-decomposition method for Multi-hop reasoning
- 解决复杂或者 multi-hop 问题的一种方式就是 CoT 或者上下文学习,来迭代分解回答复杂问题,但同时也会存在错误累积传播的问题;
- 在生成子问题 q s u b q_{sub} qsub 时,同时使用了检索到的段落和问题 q q q 来进行生成;
- 文章还自己训了 BART、T5 等模型,为啥不直接用现有的大模型?
-
-
简单的 naive RAG 不适用于 multi-hop query 的原因:
- 检索出来的 top N 文档大量重复;
- 检索结果可能丢失参考信息;
- N 值较难选取。
-
从文本中提取实体和关系构建知识图。知识图则使用
节点
和关系
表征数据; -
许多人期望在 query 阶段解决 multi-hop 查询,但实际上,许多问题都可以在数据预处理和将数据保存到知识图时解决;
-
在使用时,首先使用 LLM 生成一个 “暗号查询”,到知识图中进行检索,然后将问题和查询到的信息送入另一个 LLM 生成答案;
-
结合“暗号查询”和向量相似性进行检索;
-
在思维链中使用知识图:使用思维链进行问题分解,在知识图中获取分解问题的结果,按步骤获取最终答案。
-