核心要点

  • 查询重写属于 RAG 的 pre-retrieval(检索前)模块:在向量检索之前对用户原始 query 做预处理,提升召回质量。

  • Spring AI 提供 QueryTransformer 接口及多种实现:RewriteQueryTransformer(改写澄清、去口语化以提升检索精度)。

  • CompressionQueryTransformer 把多轮对话历史压缩成一句自包含的独立 query;TranslationQueryTransformer 做跨语言翻译对齐

  • 还可用 QueryExpander(如 MultiQueryExpander)把一个 query 扩展成多个变体并行检索,提高覆盖面。

标准回答

为什么要在检索前改写 query 13RAG 的效果高度依赖检索质量,而用户的原始提问往往口语化、有指代、依赖上文,直接拿去做向量检索容易召回不准。 pre-retrieval(检索前处理)就是在查询打到向量库之前,先把 query 加工成更利于检索的形式。Spring AI 把这类能力抽象成 QueryTransformerQueryExpander QueryTransformer:一进一出的查询变换QueryTransformer 接口接收一个 Query、返回一个改写后的 Query。Spring AI 内置三种常用实现:

  • RewriteQueryTransformer: 用 LLM 把模糊、啰嗦或口语化的提问改写成清晰、聚焦关键词的检索式 query,提升检索精度。
    -CompressionQueryTransformer在多轮对话里,把历史对话 + 当前追问压缩成一句自包含的独立 query435,解决「它/那个」这类指代和省略问题。
    -TranslationQueryTransformer把 query 翻译成知识库主要语言,做跨语言检索对齐(比如中文提问、英文文档库)。 QueryExpander:一进多出,多查询扩展
    QueryExpander(如 MultiQueryExpander)则是把一个 query 扩展成多个语义相近的变体,并行检索后合并去重结果。这能覆盖同一意图的不同表达,缓解单条 query 召回不全的问题。怎么接进检索链路这些组件位于 RAG 流水线的检索前阶段,可在 RetrievalAugmentationAdvisor 等模块里配置:用户 query 先经过一个或多个 Transformer / Expander 处理,得到优化后的 query 再去向量库检索。它们大多内部调用一次 LLM,所以要在「检索质量提升」和「额外延迟/成本」之间权衡,按场景选择启用。

常见误区

⚠️ 常见踩坑

别把所有 Transformer 无脑全开——每个 Rewrite/Compression/Translation 通常都要额外调一次 LLM,叠加会显著增加延迟和成本,还可能把原意改偏导致检索更差。应按场景选用:单轮简单问答可不改写,多轮对话才需要 Compression;也别忘了改写后的 query 仍要保留用户核心意图,过度「规整」会丢失关键限定词。

追问

追问 1CompressionQueryTransformer 和 RewriteQueryTransformer 有什么区别,分别用在什么场景?

Rewrite 关注「把一句话本身改清楚」——去口语化、补全关键词、聚焦检索意图,适合单轮但表达模糊的提问。Compression 关注「把多轮上下文塞进一句」——它读对话历史,把当前依赖上文的追问(含指代、省略)改写成一句不依赖历史也能独立检索的 query,适合多轮对话式 RAG。简单说:Rewrite 解决「问得不清楚」,Compression 解决「问得不完整、要看上文」。两者可串联使用。

追问 2多查询扩展(QueryExpander)会不会带来重复或噪声结果,怎么处理?

会。多个变体并行检索后结果常有重叠,也可能引入跑题的文档。处理方式是:检索后对命中文档做去重(按文档 id/内容),再做重排序(rerank)或按相似度阈值过滤,只把 top-k 高相关片段送进生成。还要控制扩展数量,变体太多既增加成本又稀释相关性。本质是用「召回换精度」,必须靠后置的去重和重排把精度补回来。

追问 3这些查询变换都要调用 LLM,如何控制额外的延迟和成本?

几个手段:一是按需启用,简单/单轮查询跳过改写;二是用更小更快的模型专门做 query 改写(改写任务不需要顶配模型);三是对常见 query 的改写结果做缓存;四是把多步变换合并或并行化,避免串行累加延迟。还可以加开关做 A/B,验证改写确实带来检索质量提升再上线,否则白白付出延迟成本。

🔗 相似问题

同一考点的不同问法,面试官可能换着问,一起刷更稳

没找到想看的面试题?把你想看的告诉我们 →

延伸学习

按主题分类的相关资源,便于系统复习