Skip to content

RAG查询质量优化

通过提示词优化

多查询重写提示词策略

利用大语言模型对原始问题进行扩展、分解或抽象,生成多个语义相关但视角不同的子查询,从而提高检索系统对用户意图的覆盖能力。在多查询重写策略中,每个子问题都会检索出相应的文档片段,从而更全面的获得检索信息。

text
你的任务是为给定的用户问题生成3 - 5个语义等价但表述差异化的查询变体,目的是帮助用户克服基于距离的相似性搜索的一些局限性,以便从向量数据库中检索相关文档。  
以下是原始问题:  
<question>  
{{question}}  
</question>  
请生成3 - 5个语义与原始问题等价,但表述不同的查询变体,用换行符分隔这些替代问题。  
请在<查询变体>标签内写下你的答案。
我的输入问题是:如何提高英语写作能力

/// 输出
<查询变体>
有哪些方法可以提升英语写作水平
怎样增强英语写作的能力
如何让英语写作能力得到提高
怎样提高英语写作方面的能力
有什么办法能够提升英语写作能力
</查询变体>

问题分解策略

面对非常复杂且包含一定推理性的原始问题时,使用多查询重写策略也很难在向量数据中找到关联性高的文档,导致RAG系统效果偏差。这时我们需要尝试问题分解策略。将一个复杂问题分解成多个子问题或者子步骤。

text
你的任务是针对输入的问题生成多个相关的子问题或子查询,将输入问题分解成一组可以独立回答的子问题或子任务。  
以下是输入的问题:  
<question>  
{{question}}  
</question>  
请生成3 - 5个与该问题相关的搜索查询,并使用换行符进行分割。生成的子问题/子查询应具有明确的主题和可独立回答的特点。  
请在<子问题>标签内写下生成的子问题/子查询。
我的输入问题是:如何提高小型企业的市场竞争力?

/// 输出
<子问题>
小型企业提高产品质量的方法有些
小型企业如何制定有效的营销策略
小型企业降低运营成本的途径有哪些
小型企业提升客户服务水平的策暗是什么
小型企业吸引和留住人才的措施有哪些
</子问题>

利用GraphRAG

传统RAG的局限

  1. 检索精度随着文本长度增加而降低;
  2. 匹配度较低的问题无法进行精确问答;
  3. 围绕长文本的综合性问题无法进行有效回答;
  4. 跨文本段实体信息无法回答…

GraphRAG

GraphRAG 检索特点与传统RAG相比,GraphRAG检索具有如下特点:

  1. 高精度高消耗(构建知识图谱要消耗大量模型token)
  2. 受模型底层性能影响较大
  3. 灵活度较高,受知识图谱构建策略影响较大

利用搜索引擎

接入开放的搜索引擎 API 服务,如 serper.dev(一家专注于提供低成本、高性能谷歌搜索 API 的平台,允许开发者调用它的 API,以结构化数据的方式返回内容,包括答案框、知识图谱以及自然搜索结果等)

参考资料

大模型真好玩