查询重构与扩展:子问题分解、假设性文档嵌入与多轮对话改写
RAG系统的检索质量,决定了大模型回答的上限。而查询重构与扩展,正是打破这个上限的核心利器。一、问题:为什么你的RAG检索总在“答非所问”?做过检索增强生成(Retrieval-Augmented Generation,RAG)的人大概都遇到过这样的情况:用户问了一个完全合理的问题,但检索就是漏掉了最相关的信息。基础RAG的流程很简单:用户查询 → 向量化 → 向量检索 → 返回文档块 → LLM生成答案。但问题恰恰出在第一步——查询质量直接决定了检索质量。查询模糊、表述不当,或者用户对问题的抽象层次把握不准,检索结果就会出偏差,LLM拿到的上下文也跟着失真。用一句经典的话说:垃圾输入,垃圾输出,这个规律在RAG场景里同样成立。更具体地说,传统检索面临三类典型问题:词汇鸿沟:用户查询的措辞与文档中的表述不一致。比如问“How can LangSmith help monitor LLM applications?”,如果文档里从未出现过“monitor”“tracking”或“observability”,哪怕内容相关也检索不到。短查询信息密度不足:用户往往输入简短的查询词,而向量数据库里存的是完整文档。查询和文档在嵌入空间中的距离天然疏远。复杂查询无法一次覆盖:有些查询本身包含多个子问题