37

在多轮对话中,如何处理Query改写(Query Rewriting)以提升RAG检索效果?

RAG检索增强生成中等

📋 面试问题

在多轮对话中,如何处理Query改写(Query Rewriting)以提升RAG检索效果?

✅ 期望回答

多轮对话中,用户Query常含指代(「它的性能怎么样?」),不能直接用做检索Query

处理方案:
  • Query改写:将用户Query与历史对话上下文拼接 -> 让LLM生成完整的检索Query
例:历史「请介绍vLLM」 -> 用户「它的PagedAttention是什么?」

改写后 -> 「vLLM中的PagedAttention是什么?」

  • 上下文窗口检索:不仅用当前Query,还从对话历史中提取近1-3轮的关键实体/话题,联合检索
  • 意图维持:如果用户转换话题,检测到Topic Change则重置上下文

工程实现:
  • 用轻量LLM(如LLaMA-3 8B)做Query改写,成本低延迟小
  • 缓存改写的Query -> 检索 -> 如果Recall@k低于阈值、无结果,重新改写
  • LangChain/LlamaIndex有ConversationalRetrievalChain等现成工具支持
#Query改写#多轮对话#上下文