
在RAG检索增强生成流程中第一步通常是对用户的提问query进行改写。这是因为用户提问的方式与他们期望的答案之间可能存在差距。由于每个用户的提问方式可能千差万别因此对问题进行改写可以帮助系统更好地理解问题并返回更相关的答案从而提升RAG系统的鲁棒性和扩展性。用户提出的问题通常存在两类问题信息不完整用户的提问没有表达清楚所有的关键信息噪声问题提问中可能包含了与答案无关的内容1.1 历史会话改写在对话中前后文是相互关联的。如果仅凭当前的query进行检索可能会导致召回精度大幅下降因为query中往往缺少重要的上下文信息。以下是一个具体的例子用户华为meta70手机的性能怎么样 系统华为meta70手机搭载了强大的处理器和先进的摄像系统性能表现非常优秀。 用户与上一代相比它有哪些改进 系统华为meta70相较于meta60在处理器性能、摄像头优化和电池续航方面都有显著提升。 用户摄像头方面具体改进了什么 --改写前摄像头方面具体改进了什么 --改写后华为meta70手机的摄像头相比meta60有哪些具体改进1.2 关键词扩写用户在搜索时常常输入的关键词较为简短并且缺乏足够的上下文信息这会影响语义检索向量检索的效果导致召回的相关性较低。因此需要对用户的原始关键词进行扩展和丰富。用户输入“机器学习 实践” 改写后的 Query“机器学习在实际应用中的案例有哪些哪些工具和方法适用于机器学习实践”1.3 伪答案改写假设问题检索伪答案改写通过在原始查询中加入一种假设性答案来增强查询的语义丰富性从而提高检索或回应的精准度。伪答案并非真实的答案而是一个设想的内容用于帮助系统更好地理解并检索相关信息。用户输入“如何提高企业的市场竞争力” 改写后的 Query“如何提高企业的市场竞争力比如通过创新产品、优化营销策略或提升客户服务等手段。”1.4 缩写词改写用户在查询时常常使用缩写而许多相关文档通常会使用完整的术语因此需要对缩写进行扩展以便更好地匹配相关内容。用户输入“VR 技术在教育中的应用” 改写后的 Query“虚拟现实 (Virtual Reality) 技术在教育中的应用有哪些可以举一些实际的应用案例吗”1.5 一般去噪改写回溯问题检索通过去除查询中的无关成分如多余的修饰语、模糊表达或不相关的背景信息简化并优化查询使其更加精确和可操作。这种方法有助于提高检索的准确性和效率。用户输入“我最近在准备算法面试不知道要准备哪些内容感觉很懵总感觉对于算法的理解还不太够能推荐一些有效的学习资源吗” 改写后的 Query“有哪些有效的学习资源可以帮助提高算法理解”去除与问题无关的背景信息“我最近在准备算法面试不知道要准备哪些内容感觉很懵总感觉对于算法的理解还不太够”。直接提取核心意图“帮助提高算法理解”。1.6 子查询改写子查询检索当查询涉及对比多个实体时可能会产生相互干扰的情况。对比类查询通常包含多个元素这些元素如果直接放在一个查询中可能会导致信息重叠影响检索的准确性。为了避免干扰可以将对比类查询拆分成多个独立的查询每个查询聚焦于其中一个实体这样可以减少信息混淆获得更准确的结果。用户输入“C 和 Go 哪个更适合做系统编程” 拆分后的查询“C 适合做系统编程的优点有哪些”“Go 适合做系统编程的优点有哪些”拆分原因• 直接对比 C 和 Go 的优劣可能使得系统无法有效地提取每种语言的特点。拆分后系统可以分别检索 C 和 Go 在系统编程中的优点避免信息混乱。