跳到主内容

什么是查询改写?让搜索更懂你的问题

2026-10-06 发布 来源:我告诉你AI导航 阅读

在带检索的大模型应用里,用户问一句「它多少钱」,系统不会直接把这句话丢给搜索引擎。检索前通常先经过一步查询改写:把问题补全、拆开、改写成更容易命中的检索式。这一步做得怎么样,直接决定最终答案准不准。

在带检索的大模型应用里,用户问一句「它多少钱」,系统不会直接把这句话丢给搜索引擎。检索前通常先经过一步查询改写:把问题补全、拆开、改写成更容易命中的检索式。这一步做得怎么样,直接决定最终答案准不准。

它在检索前做了什么

查询改写是检索环节的一道预处理。用户自然说出来的话,往往和资料里写成文字的方式对不上:口语里说「它」「那个」,资料里写的是完整名词;口头问「A 和 B 有什么区别」,资料里分别存着 A 和 B 两条内容。查询改写就是架在两者之间的翻译,把「人说的话」整理成「检索系统好搜的样子」。

它通常发生在语义理解之后、检索之前:先判断用户想查什么,再生成一批候选检索式,交给向量库或搜索引擎去召回。很多检索增强生成(RAG)系统里,这一步是召回质量和最终回答质量之间的一道闸门。检索器看到的不是原始提问,而是改写后的版本。

四种改写动作

常见动作可以归纳为四类:

  • 指代消解:把「它」「这个」「那家」替换成前面提到的具体对象,让检索式有明确主语。
  • 问题拆解:把「A 和 B 有什么区别」拆成分别检索 A、分别检索 B,再合并结果。
  • 多路改写:对同一问题生成几种不同说法,各检索一次再合并,提高命中概率。
  • 术语对齐:把口语表达换成资料里的专业表述,比如「怎么退」对齐成「退款流程」。

这四类动作可以叠加使用:一次查询可能先做指代消解,再拆成两个子问题,每个子问题又生成两三种说法并行检索。改写是单一变换的说法并不准确,它更像一条可组合的处理链。同样的「把自然语言翻译成机器好处理的形态」这条思路,在别的环节也成立,比如运镜词是怎么被模型理解的。

为什么这一步能提升命中率

核心原因在于表达方式的不一致。用户习惯说「怎么退」,资料里写的是「退款流程」「退换货政策」;用户说「它怎么弄」,资料里只有完整的功能名称。改写把口语映射到资料词汇,命中率自然提升。

一个可带走的判断:召回质量的上限,往往由「问题说清楚没有」决定,其次才是检索算法。改写解决的是前者。想进一步理解改写背后的模型能力,可以先看什么是大语言模型的解释。

下面这张表把四类动作和它们的典型场景对应起来。

改写动作解决什么问题典型例子
指代消解「它」没有指向「它多少钱」→「这台笔记本多少钱」
问题拆解一个大问题含多个子问题「A 和 B 区别」→ 分别查 A、查 B
多路改写单一说法覆盖不全「怎么退款」和「退款流程」一起查
术语对齐口语和资料词汇不一致「怎么退」→「退款政策」

它带来的收益

改写得当,收益体现在三处:召回率提升,换个说法也能搜到;多轮对话更顺,指代问题被解决;复杂问题处理更好,大问题拆成小问题分别查。这三项共同指向一个结果:用户感受到的「搜得准」,相当一部分来自这一步。

速查

  • 改写发生在检索之前,不改原始问题本身。
  • 四类动作:指代消解、问题拆解、多路改写、术语对齐。
  • 代价:多一次模型调用,成本和延迟都会上升。
  • 提升的是命中率,弥补的是表达差距,填补不了资料缺口。

什么时候会跑偏

查询改写有它的失效场景,这一点往往被忽略。改写本身要调用模型,如果模型理解错了意图,改写方向就错了,检索跟着错,答案是错上加错。多一次处理也意味着多一份延迟和成本。更重要的是,改写无法凭空理解用户没表达出来的信息:用户自己都没说清要什么,改写再强也猜不准。

还有一个边界:改写提升的是「命中」,是内容质量以外的部分。如果知识库里压根没有相关资料,改写出一百种说法也搜不到。它补的是表达差距,不是资料缺口。同样,改写也替代不了知识库本身的质量,资料写得含糊,检索命中后也答不好。

提问时你能做的三件事

普通用户控制不了系统内部的改写逻辑,但可以顺着它的机制反向优化自己的提问。其一,把指代说清楚,与其说「它怎么弄」,不如说「这个功能的权限怎么设置」。其二,一次只问一个问题,避免把多个诉求塞进一句话。其三,用资料里可能出现的词,少用纯口语缩写。你自己先把问题说完整,比指望系统猜更可靠。

查询改写是检索质量里的隐形环节。理解了它,你就知道为什么「把问题问清楚」这件事,比换一个更强的模型更直接有效。和它类似的文本预处理思路,在语音合成的文本前端里也能看到。

反馈页面信息

请描述需要更正的地方,页面标题和网址会自动附上。

也可以发邮件至 [email protected]