Note
什么是多次检索和自适应 RAG?
介绍迭代检索、自适应检索等超出单次检索生成流程的范式。
传统的 RAG 流程是“先检索后生成”,你是否了解一些更复杂的 RAG 范式,比如在生成过程中进行多次检索或自适应检索?
是的,传统的“先检索后生成”(Retrieve-then-Read)范式虽然经典,但比较刻板。为了应对更复杂的问题和提升答案质量,研究界已经提出了多种更动态、更智能的RAG范式。
1. 迭代式检索 (Iterative Retrieval) - 例如 Self-RAG, Corrective-RAG
- 核心思想: 将RAG从一个单向的流水线,变成一个循环、自我修正的过程。
- 工作流程:
- 首次检索与生成: 像传统RAG一样,进行检索并生成一个初步的答案。
- 反思与评估(Reflection): LLM会对初步生成的答案和检索到的上下文进行“反思”。它会评估:当前的信息是否足够支撑答案?答案是否还有不确定或缺失的部分?
- 二次检索: 如果认为信息不足,LLM会主动生成一个新的、更具针对性的查询,进行新一轮的检索。例如,如果初步答案是“A公司的CEO是张三”,模型可能会反思“这个信息是否最新?”,然后生成一个新的查询“A公司2025年的CEO是谁?”
- 整合与精炼: LLM会整合新旧检索到的所有信息,生成一个更完善、更准确的最终答案。
2. 自适应检索 (Adaptive Retrieval) - 例如 FLARE, Self-Ask
- 核心思想: 不在生成前一次性检索所有信息,而是在生成过程中“按需”检索,实现“即时”(just-in-time)的信息获取。
- 工作流程:
- 开始生成: LLM根据问题开始直接生成答案。
- 预测不确定性: 它会一边生成,一边预测接下来的内容。当它预测到即将生成一个事实性信息(如人名、日期、地点),但对此不确定(表现为下一个词的概率分布很平坦)时,它会暂停生成。
- 主动提问与检索: 在暂停处,LLM会插入一个特殊的占位符(如
[SEARCH]),并主动提出一个需要查询的问题(例如,“法国的首都是哪里?”)。 - 获取信息并继续: 系统执行这个查询,将检索到的答案(“巴黎”)填入,然后LLM基于这个新信息继续向下生成。
- 优势: 这种方法非常高效,只在需要时才进行检索,避免了预先检索大量无关信息。
3. 多源数据RAG (Multi-Source RAG)
- 核心思想: 让Agent能够智能地从多种不同类型的数据源中进行检索和整合。
- 工作流程: Agent首先对问题进行分解,判断回答这个问题需要哪些信息。然后,它可能会决定:
- 从向量数据库中检索相关的非结构化文档。
- 从知识图谱中查询结构化的实体关系。
- 调用SQL数据库来获取精确的统计数据。
- 甚至调用搜索引擎API来获取实时信息。
- 最后,Agent会将从不同来源获取的所有信息进行综合,生成一个全面的答案。这本质上是一种Agent驱动的RAG。