跳转到内容

RAG 检索范式技巧

单次检索召回不全,是 RAG 问答最常见的痛点。本篇给出一个可直接复用的两段式检索范式:用一次便宜的"查询扩写"换多路召回

问题:拿用户原话直接检索,经常查不全

用户的原始提问往往口语化、只有一个视角,与知识库中的表述不匹配 (同义词、专业术语、中英文差异),单次检索召回不全,回答自然不完整。

范式:先扩写关键词,再并行批量查询

先用 Agent 节点把问题扩写成一组查询关键词,再用 Iteration 节点并行批量查询:

Start ─▶ Agent(生成一组查询关键词,输出数组)
      ─▶ Iteration(并行)[ 子流程: Tool 检索(知识库/搜索) ]
      ─▶ LLM(去重合并,基于检索结果作答) ─▶ Answer

要点

  1. 关键词生成节点:提示词中要求输出结构化数组(如 JSON 数组),每个关键词覆盖不同角度 —— 同义改写、上下位概念、专业术语、中英文对照;数量控制在 3~5 组,太多会摊薄单次检索质量并抬高成本
  2. Iteration 开并行模式:批量查询同时发出,速度远快于逐条串行;配置错误处理,单条查询失败不拖垮整体
  3. 汇总节点只基于检索结果作答:提示词明确"数据以检索返回为准,不得编造",并做去重合并
  4. 成本搭配:关键词生成是简单任务,用小参数模型即可;最后的汇总作答再用大模型 (参考 技巧二的分层用模型策略)

这个范式的本质:用一次便宜的"查询扩写"换多路召回,比让单次检索硬扛准确率划算得多。

关联阅读