Note

什么是多次检索和自适应 RAG?

介绍迭代检索、自适应检索等超出单次检索生成流程的范式。

传统的 RAG 流程是“先检索后生成”,你是否了解一些更复杂的 RAG 范式,比如在生成过程中进行多次检索或自适应检索?

是的,传统的“先检索后生成”(Retrieve-then-Read)范式虽然经典,但比较刻板。为了应对更复杂的问题和提升答案质量,研究界已经提出了多种更动态、更智能的RAG范式。

1. 迭代式检索 (Iterative Retrieval) - 例如 Self-RAG, Corrective-RAG

  • 核心思想: 将RAG从一个单向的流水线,变成一个循环、自我修正的过程。
  • 工作流程:
    1. 首次检索与生成: 像传统RAG一样,进行检索并生成一个初步的答案。
    2. 反思与评估(Reflection): LLM会对初步生成的答案和检索到的上下文进行“反思”。它会评估:当前的信息是否足够支撑答案?答案是否还有不确定或缺失的部分?
    3. 二次检索: 如果认为信息不足,LLM会主动生成一个新的、更具针对性的查询,进行新一轮的检索。例如,如果初步答案是“A公司的CEO是张三”,模型可能会反思“这个信息是否最新?”,然后生成一个新的查询“A公司2025年的CEO是谁?”
    4. 整合与精炼: LLM会整合新旧检索到的所有信息,生成一个更完善、更准确的最终答案。

2. 自适应检索 (Adaptive Retrieval) - 例如 FLARE, Self-Ask

  • 核心思想: 不在生成前一次性检索所有信息,而是在生成过程中“按需”检索,实现“即时”(just-in-time)的信息获取。
  • 工作流程:
    1. 开始生成: LLM根据问题开始直接生成答案。
    2. 预测不确定性: 它会一边生成,一边预测接下来的内容。当它预测到即将生成一个事实性信息(如人名、日期、地点),但对此不确定(表现为下一个词的概率分布很平坦)时,它会暂停生成。
    3. 主动提问与检索: 在暂停处,LLM会插入一个特殊的占位符(如 [SEARCH]),并主动提出一个需要查询的问题(例如,“法国的首都是哪里?”)。
    4. 获取信息并继续: 系统执行这个查询,将检索到的答案(“巴黎”)填入,然后LLM基于这个新信息继续向下生成。
  • 优势: 这种方法非常高效,只在需要时才进行检索,避免了预先检索大量无关信息。

3. 多源数据RAG (Multi-Source RAG)

  • 核心思想: 让Agent能够智能地从多种不同类型的数据源中进行检索和整合。
  • 工作流程: Agent首先对问题进行分解,判断回答这个问题需要哪些信息。然后,它可能会决定:
    • 从向量数据库中检索相关的非结构化文档。
    • 从知识图谱中查询结构化的实体关系。
    • 调用SQL数据库来获取精确的统计数据。
    • 甚至调用搜索引擎API来获取实时信息。
  • 最后,Agent会将从不同来源获取的所有信息进行综合,生成一个全面的答案。这本质上是一种Agent驱动的RAG。