1. Query 多样性
在检索增强生成(RAG)系统中,查询(Query)的多样性直接影响召回内容的覆盖范围。传统的搜索 Query 扩展技术包括基于用户日志挖掘、文档关联及统计机器翻译(SMT)的方案。进入大模型时代,LLM 极大地降低了 Query 改写的难度并拓展了可能性。
基于 LLM 的 RAG 系统召回多样性优化主要涉及查询扩展与索引扩展两大方向。查询扩展包括语义改写、双向改写及强化学习优化,旨在生成更多样化的检索词以覆盖不同语义空间。索引扩展则通过引入离散关键词索引、多路向量模型及轻量级 Adapter 微调来弥补单一向量的不足。实践中需权衡改写带来的延迟成本与召回收益,结合混合检索策略提升最终效果。

在检索增强生成(RAG)系统中,查询(Query)的多样性直接影响召回内容的覆盖范围。传统的搜索 Query 扩展技术包括基于用户日志挖掘、文档关联及统计机器翻译(SMT)的方案。进入大模型时代,LLM 极大地降低了 Query 改写的难度并拓展了可能性。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
早期研究如雅虎 2016 年的 Learning to Rewrite Queries 已探索过基于 Seq2Seq LSTM 的改写方案。近期清华提出的 webcpm 也利用大模型进行 Query 改写以提升长文问答的内容召回。LangChain 等框架也已集成类似功能。核心逻辑是将用户 Query 改写成多个语义相近的变体,并行进行召回,从而增加命中相关文档的概率。
微软的 Query2doc 提出了一种独特的改写思路:将 Query 改写为 Document。通过 4-shot prompt 让 LLM 基于 Query 生成伪文档(pseudo-document),再利用生成的文本进行召回。该方案优势明显:
然而,缺点同样显著:伪文档可能产生语义漂移或幻觉,引入错误关键词降低准确率,且解码耗时较长。
反向思路 Doc2Query 则为每篇文档生成 N 个关联 Query(pseudo-query),使用这些关联 Query 的 Embedding 表征文档。谷歌的研究对比了 Query2Doc、Query2Keyword 及 Query2COT 等多种方案,发现当模型规模足够大时,Query2COT(思维链)展现出更优效果,其多步拆解过程能生成更有效的关键词,且无需依赖外部文档即可释放模型知识。
上述无监督改写虽能提升效果,但无法保证改写后的 Query 搜索效果一定更好。引入目标函数进行定向优化是更优解。谷歌 2018 年曾尝试使用强化学习,将搜索系统视为环境,Seq2Seq 模型生成改写候选作为动作,以排序模块 TopK 内容中改写 Query 的召回率作为奖励信号更新模型。
在大模型时代,微软提出的 rewrite-retrieve-read 框架使用 PPO 微调改写模型,Reward 目标设定为推理内容与真实答案的 Exact Match 和 F1。针对开放式问答场景,可类比传统方案,使用大模型推理时的引用率作为 Reward 目标,这与精排原理相似。
当前多数 RAG 系统的召回索引仍以单一 Embedding 向量模型为主,存在以下局限:
传统搜索中的离散索引在垂直领域常与向量召回形成互补。常见的 Query 理解生成离散索引方案包括:
大模型在关键词扩展方面表现优异。例如 ChatLaw 法律大模型利用 LLM 生成法律条文联想关键词,结合 Ensemble Embedding 或直接关键词召回,在法律领域取得了显著效果。尽管部分研究显示 Query2Keyword 效果略逊于 Query2Doc,但其低耗时特性使其在特定场景下极具价值。
向量索引的扩展可通过多种路径实现:
微软近期提出了一种轻量级方案,类似 LoRA 微调思路,不动基座模型,仅微调 Adapter 来优化 Query 与 Document 的匹配效果。该方法采用向量加法,在原始 D 维 embedding 基础上增加 Residual,Residual 计算通过 Key-Value lookup 函数实现。微调损失函数使用对比学习的 GlobalNegative Loss,目标是最大化 Query 与正样本相似度,最小化与负样本相似度。
# 伪代码示例:Adapter 微调逻辑示意
def adapter_forward(base_embedding, k_matrix, v_matrix):
residual = k_matrix @ v_matrix.T
return base_embedding + residual
在实际落地 RAG 系统时,召回多样性优化需综合考虑性能与收益。
Query 改写和多路召回会显著增加系统延迟。对于实时性要求高的场景,建议优先采用轻量级的关键词扩展或单路向量召回;对于离线分析或允许秒级延迟的场景,可启用多路混合检索与 LLM 改写。
除了常规的 Recall@K 和 MRR,应关注改写后的 Query 是否引入了噪声。可通过人工抽检或自动化评估脚本,对比改写前后 TopN 结果的相关性分布。若改写导致无关文档比例上升,则需调整 Prompt 或降级策略。
单一维度往往难以满足复杂需求。推荐采用'向量 + 关键词'的混合检索架构。向量负责语义泛化,关键词负责精确匹配。权重分配可根据业务数据动态调整,初期可采用等权,后期通过贝叶斯优化寻找最佳平衡点。
RAG 系统的召回多样性优化是一个系统工程,涉及 Query 理解、索引构建及排序策略的协同。通过 Query 改写扩大语义覆盖,通过索引扩展弥补单一向量缺陷,是当前提升 RAG 效果的主流路径。未来随着多模态大模型的发展,图文混合检索及跨模态对齐将成为新的优化方向。开发者应根据具体业务场景,灵活组合上述策略,在成本可控的前提下最大化信息获取效率。