RAG 通过结合大型语言模型 (LLM) 的生成能力和外部知识库的检索能力,能够生成更准确、更可靠、更具信息量的响应。然而,当用户查询包含多个语义或较为复杂时,RAG 系统的检索效果往往会受到影响。查询改写 (Query Rewriting) 作为一种有效的优化手段,可以通过将复杂查询转化为更易于检索的形式,显著提升 RAG 系统的性能。
1. 为什么需要查询改写?
在 RAG 系统中,检索模块负责根据用户查询从知识库中检索相关文档。检索的质量直接影响最终生成结果的质量。然而,用户查询往往存在以下问题,导致检索效果不佳:
- 语义多样性:用户查询可能包含多个方面的含义,例如 “iPhone 13 Pro Max 的拍照效果和电池续航怎么样?”。
- 语义模糊性:用户查询可能表达不够清晰或存在歧义,例如 “苹果手机拍照最好的型号”。
- 隐式信息:用户查询可能省略了一些背景信息或常识,例如 “流浪地球 2 的评价” (隐含了查询电影评价的意图)。
- 口语化表达:用户查询可能使用非正式的、口语化的表达方式,例如 “我想找个能玩大型游戏的手机,不要太贵的”。
- 复杂逻辑关系: