加了Query改写,准确率从71%提到89%
图1 Query改写把客户说的话翻译成搜索引擎能理解的话私信「改写」获取 Query改写Prompt模板 意图词典JSON有一个客户问题我记到现在。“这个保险能退吗”把这句话原样扔进知识库搜索。你猜搜出来什么退保流程。第一步登录APP第二步我的保单第三步选择保单……完完整整的退保操作指南。客户真正想问的是什么“退了我能拿回多少钱。”一个字——“退”——让整个检索跑偏了。这就是RAG最被低估的一环Query改写。 客户说的话不等于他想问的事。RAG链条上最沉默的瓶颈做RAG的人注意力通常在这三个地方Embedding模型用哪个bge还是m3e分块策略上篇讲了Prompt怎么让大模型用对上下文很少有人在Query上花时间。Query进来了原样扔给搜索引擎。搜到什么算什么。但真实世界的客户提问是这样的表1 客户说的话 vs 客户想问的事客户实际说的客户真正想问的“这个保险能退吗”退保能退多少钱“那个红的和蓝的有什么区别”产品A和产品B的保障范围对比“上次你说的那个”历史对话中提到的某条具体信息“我身体不太好”有既往病史能不能投保“划不划算”产品的IRR或现金价值测算每一行的左边直接搜索都会跑偏。这不是Embedding模型的问题。是Query本身就没表达清楚意图。把模糊的问题扔进再好的搜索引擎出来的结果也是模糊的。图2 RAG全链路Query改写是最被低估的一环Query改写的三种方法我实际用下来有三种方法覆盖了80%以上的场景。按实现成本从低到高排列。图3 三种Query改写方法对比方法一同义词扩展10分钟可上线最直接的方法。维护一个同义词词典搜索前自动扩展。{“退”: [“退保”, “退费”, “退款”, “解除合同”, “取消保单”],“交钱”: [“缴费”, “续费”, “保费”, “扣款”, “支付”],“赔”: [“理赔”, “赔付”, “报销”, “索赔”, “出险”],“改”: [“变更”, “修改”, “更新”, “调整”, “更换”]}客户搜怎么退系统自动扩展成「退保 OR 退费 OR 退款」。覆盖率和精度都不错。局限只能解决说法不同的问题。解决不了意图不同的问题。客户说这个保险能退吗和怎么退保在关键词层面差不多——但意图完全不同。方法二意图识别 改写Prompt核心方法这才是真正解决问题的那一步。思路检索之前先让大模型把客户的原话翻译成搜索引擎能理解的标准查询。Prompt模板你是一个保险客服的查询理解助手。客户会用口语化的方式提问你的任务是把客户的话改写成适合知识库搜索的标准查询。规则识别客户真正的意图是问流程问价格问规则还是比较补全省略的信息这个保险→具体产品名如果上下文有的话把口语化表达转成书面表达输出1-3个不同角度的搜索查询不要编造客户没问的信息客户原话{user_input}输出格式意图类型[流程咨询/费用查询/规则解释/产品对比/其他]改写查询xxxxxxxxx用这个Prompt客户问「这个保险能退吗」→意图类型费用查询改写查询退保能退多少钱 现金价值计算退保条件 犹豫期退保 正常退保退保需要什么材料 退保流程第1条和第2条直接命中正确的知识库条目。而不是像原问题那样搜出退保操作指南。方法三多轮对话上下文进阶这是处理「上次你说的那个」「和刚才那个有什么区别」这类问题的。思路把对话历史传给Query改写步骤让它理解那个指什么。对话历史用户分红型终身寿险有哪些客服目前主要有A款和B款两种…用户这两个有什么区别改写后的QueryA款分红型终身寿险 和 B款分红型终身寿险 保障范围 收益方式 区别对比三种方法可以组合使用同义词扩展打底 Prompt改写做核心 多轮上下文做进阶。 实现顺序也是这个顺序。图4 Query改写工作流程从客户原话到标准查询实测数据100个问题改之前和改之后我把同一批100个真实客户问题分别用原样搜索和Prompt改写后搜索各跑了一遍。同一套知识库1200条客服QA同一个Embedding模型同一个分块配置。表2 Query改写前后效果对比指标无Query改写有Query改写提升Top-1命中率46%71%25ppTop-3命中率71%89%18pp平均回复相关度3.1/54.4/51.3完全答非所问率18%4%-14pp图5 四项核心指标改写前后对比完全答非所问从18%降到4%。 这个数字最关键。因为答非所问是最伤害用户信任的——比没搜到更糟糕。我拆开看了一下Query改写效果最好的三类问题口语化问题“这玩意能退不→改写为退保条件退保金额”命中率 38%→82%模糊指代“那个红的→结合上下文改写为XX产品”命中率 25%→76%多意图混合能不能换人换了之后保费变不变→拆成两个独立查询命中率 52%→91%效果最差的一类客户自己都不知道想问什么的问题。 比如「我就是想了解一下」。这类问题占测试集的6%Query改写也救不了——只能用多轮对话慢慢引导。一个Prompt模板覆盖80%的场景上面的Prompt可以直接用。但要发挥最大效果有几个细节细节一一定要输出多个改写查询不是只输出一个原因是一个改写可能方向对了但措辞不对。3个不同角度的查询相当于给了搜索引擎3次尝试的机会。实测3个查询的命中率比1个高14个百分点。细节二意图类型要包含在你的知识库分类体系里如果你用的是LlamaIndex可以把意图类型映射到metadata filter在检索时加过滤条件如果意图是费用查询优先检索费用相关的文档if intent “费用查询”:retriever index.as_retriever(similarity_top_k5,filters{“category”: “费用”})这相当于给搜索引擎加了导航——不仅告诉它搜什么还告诉它去哪搜。细节三不要把Query改写当成独立的预处理步骤把它嵌在检索流程里改写和搜索交替进行改写Query→搜索→如果结果置信度不够→用搜索结果再改写→再搜索。这个来回最多两次成本几乎不增加但效果能再提3-5个点。三个常见的坑坑一改写得太聪明Prompt写得过于详细大模型开始编造客户没问的条件。比如客户问这个能退吗改写后变成某分红型终身寿险犹豫期内退保现金价值计算——产品名和犹豫期都是大模型自己加上去的。解法Prompt里明确要求不要添加客户没说过的具体信息。坑二改写延迟太长Query改写步骤本身需要调用一次大模型API增加0.5-2秒延迟。如果每次搜索都等这个延迟交互体验很差。解法流式处理。改写和搜索并行——先用原Query搜一版结果展示同时后台跑改写改写完成后再搜第二版替换。用户感知不到延迟。坑三多轮对话的改写越改越偏对话超过5轮后上下文太长大模型开始猜客户的意图越猜越歪。解法限制上下文窗口为最近3轮对话。超过3轮的旧信息不传给改写Prompt。总结Query改写是RAG里成本最低、效果最快的优化手段。不用改Embedding模型不用重建索引不用调整分块。加一个Prompt模板改几行代码。客户说的话和系统搜的东西之间差的不只是一个同义词词典。差的是一个理解客户真正想问什么的步骤。这个步骤就是Query改写。知识库实战系列持续更新⑦《知识库不是文件堆——RAG准确率60%→92%》→ 私信「知识库」⑭《分块不是越小越好——改了分块大小准确率跳了18%》→ 私信「分块」⑧《AI答对没有我搭了一套自动评测》→ 私信「评测」关注公众号「客经AI实战派」私信「改写」获取本文配套 Query改写Prompt模板 意图词典JSON。学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】