首页/AI/RAG 与向量库速查/多轮对话的查询改写

多轮对话的查询改写

多轮场景中用户问题常含指代与省略(“它”“那个报错”):先按会话历史把问题改写成自包含查询再检索;改写质量直接决定检索命中,改写版本要纳入日志与评测。

RAG 与向量库速查AI更新于 2026-10-12

改写与检索流程

改写与检索流程
def retrieve_for_turn(history, question):
    stand_alone = llm_rewrite(history, question)   # 合并指代与上下文
    hits = retriever.search(stand_alone)            # 用改写后查询检索
    log(question, stand_alone, [h.id for h in hits])
    return hits

改写提示词要点

改写提示词要点
把用户最新问题改写为不含指代、可独立检索的问题;
保留专名与数字;只输出改写结果。
改写后查询与原问题都写日志:排查“为什么没检索到”时先看改写是否偏离。

易错点

  • 直接拿省略指代的原文检索,关键词对不上导致空结果
  • 改写引入假设信息(用户没说的内容),检索跑偏

数据来源与参考

  • LangChain 官方文档(Conversational RAG / 查询改写)
  • Gao et al., RAG for LLMs: A Survey(多轮场景)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌