返回笔记目录 概念 / 约 4 分钟
Query增强与改写
Query向量化6动作 + 增强6方法 + 改写两路线(seq2seq vs Few-Shot+CoT)
概念 来自 ai-pm-wiki
RAG 在线 Pipeline 1(全景):把用户的"人话"翻译成机器懂的精准检索词。是决定召回上限的第一道关口。
Query 向量化的 6 个动作
| 动作 |
说明 |
| 接收原始 Query |
直接拿到用户输入 |
| Query 清洗 |
去除多余符号、emoji,标准化大小写 |
| 多轮上下文融合 |
把历史对话信息融入当前 Query |
| Query 增强 |
见下文"6 种方法" |
| 调用 Embedding 模型 |
必须与离线 chunk 用同一个模型 |
| 缓存命中 |
高频 Query 直接命中缓存,跳过下游 |
Query 增强 6 种方法
| # |
方法 |
做什么 |
例子 |
| 1 |
语义强化(Synonym Expansion) |
通过同义词扩展、语义改写等手段,丰富 Query 的语义表达,让检索系统更全面理解用户意图 |
"苹果怎么下载软件" → "Apple iPhone / iOS 设备如何安装 / 下载 App 应用程序" |
| 2 |
歧义消解(Clarification) |
识别并消除 Query 中的多义词、指代不明等歧义,确保检索方向精准 |
"Java 怎么泡" → 判断用户意图:编程语言 Java 还是爪哇咖啡?→ 结合上下文/用户画像选择正确方向 |
| 3 |
上下文补全(Context Completion) |
利用对话历史或会话上下文,将省略的信息补回 Query 中,让单轮检索也能获得多轮语境 |
第 1 轮"北京天气怎么样"+ 第 2 轮"明天呢?" → 补全为"北京明天天气怎么样" |
| 4 |
意图拆解(Sub-question) |
将复杂的复合 Query 拆分为多个子意图,分别检索后融合,提高召回精度 |
"对比 React 和 Vue 在大型项目中的性能和生态" → ①React 大型项目性能 ②Vue 大型项目性能 ③React 生态体系 ④Vue 生态体系 |
| 5 |
领域术语适配 |
把口语化表达翻译成专业术语 |
"心跳太快" → "心动过速" |
| 6 |
约束条件强化 |
显式提取或补充 Query 中的时间、地点、数量、格式等约束条件 |
"最近有什么好看的电影" → "2026 年 3-4 月 中国大陆上映 评分 ≥ 7.0 的电影推荐" |
Query 改写两条路线
| 路线 |
原理 |
优缺点 |
| seq2seq(指针生成网络) |
首先识别历史对话中遗漏的单词,然后在组合阶段根据遗漏的单词改写当前的问题 |
优点速度较快;缺点模型复杂,效果相对不尽如人意 |
| Few-Shot + CoT |
基于大模型,应用 Few-shot + CoT 方法训练和推理 |
准确率高;缺点是慢且贵 |
Few-Shot 改写的 Prompt 结构示例
| 段 |
内容 |
| Instruction |
对于给定的对话,请帮助将重新改写,以便在没有上下文的情况下可以充分表达用户的信息需求 |
| Demonstration |
几个完整的 Query + 历史 + Rewrite 三元组示例 |
| Input |
当前 Context(多轮历史)+ Current Question |
| Output |
Rewrite + Reason |
|
|
选型建议
- 高 QPS、延迟敏感 → seq2seq 或缓存策略
- 客单价高、准确率优先 → Few-Shot + CoT
- 大部分工业场景 → 两者混合:seq2seq 兜底 + 关键 Query 用 LLM 改写
PM 怎么用 / 何时用
- 当 RAG"问题问对了却检索不到"时,对照 6 种增强方法定位缺口(同义词没扩、歧义没消、多轮没补全等),提需求给工程。
- 改写路线选型上,按场景给结论:高 QPS/延迟敏感走 seq2seq 或缓存,客单价高/准确率优先走 Few-Shot+CoT,多数场景两者混合。
- 设计多轮对话产品时,把"上下文补全/指代消解"列为必做项,否则单轮检索拿不到完整语境。
相关页面
→ RAG运转流程
→ RAG检索-组装-生成
→ 提示词设计五要素
→ Few-Shot少样本提示
→ AIPM课程 Day8