AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


【深入浅出RAG】RAG提问重写优化:如何提高问题的准确性
发布日期:2024-05-17 07:06:48 浏览次数: 2272


给大模型接上外部记忆,能让他变成律师、医生、或者客服,这就是现在落地最快的RAG技术,现在有各种产品,无需编程就可以快速搭建起本地的RAG助手。


像是网易的QAnything、AnythingLLM、RAGflow等产品,界面精美,搭建简单,绝对是接触RAG的快速上手神器。


不过现实问题是,RAG开源产品虽然搭建简单,但往往因为缺乏深度优化,导致性能并不理想。这就像是给你一辆没有经过调校的赛车,虽然外观炫酷,但无法在赛道上驰骋。


RAG优化是一个全面的过程,它包括数据预处理、优化检索、索引设计等多个方面。这些内容的整合,才能让RAG模型发挥出真正的潜力。


LangChain 团队最近的一场演讲,提供了一系列的优化方法,总共6个部分,主要受限于篇幅问题,今天先聊聊第一部分查询重写。



首先为什么需要查询重写?我觉得主要是两个方面,第一个是很多时候用户的提问是不可控的,如果问题比较模糊,就很容易得不到想要的答案。


第二个方面检索的内容,如果本身资料包含的内容表达也不是很清晰的,比如企业内部的培训文档。那也容易导致匹配失败,最终会让大模型生成的答案不清晰。


为了尽量缓解这些问题,RAG检索的第一步,就是需要对问题进行一定的处理。


LangChain团队给出了5种方法,Step Back、HyDE、多重查询、查询融合、查询分解。



多重查询


多重查询的概念比较容易理解,就是担心一个问题回答的不准确,使用大模型把一个问题变成一堆问题,再进行多次检索。


这种技术就是尝试从多个角度补充原来的问题,变成多个问题尽量全面的从向量数据库中查找结果。目标是细化查询,使其与主题更加相关,从而从数据库中检索更多相关的文档。


LangChain和LlamaIndex都提供了多重查询的方法,直接调用就可以。


RAG融合(RAG-Fusion


RAG融合跟刚才的多重查询类似,不过在多重查询的基础上,在从向量数据库查询到的结果后,把查询结果再进行一次评分,把出现最多的资料排在上面,优先发给大模型。


利用倒数排序融合(RRF)和自定义向量评分加权,生成全面准确的结果。


RAG-Fusion希望弥合用户明确提出的问题和他们(原本的意图)打算提出的问题之间的差距,更接近于发现通常仍然隐藏的知识。


查询分解


查询分解是通过将问题分解为子问题来改善问答效果的策略,分两条实现路径:

(1)序列求解,将上一个子问题的答案与当前问题一并扔给LLM生成答案,再把当前生成答案与下一个子问题一起给LLM生成答案,直到最后一个子问题生成最终答案;

(2)并行的独立回答问题,然后将多路答案合并为最终答案。


Step Back


翻译是退后一步?Step-back prompting(又是一篇来自谷歌的paper,正着玩、反着玩,不给别人留点活路~)。


把问题变得更抽象。为什么要让问题变得更抽象?抽象的目的不是为了让你更迷糊,而是对问题进行了总结,提供了更大范围的检索。


HyDE


HyDE(Hypothetical Document Embeddings),这个最难理解,翻译是假设的含义。


这是先用大模型对问题生成一个假设答案,这个技术是认为假设的答案和文档中检索的答案可能更接近。


HyDE方法适合原始问题一般都比较短的情况,而生成的假设文档可能会更好地与索引文档对齐。


综合来看,问题重写的优化策略基本就是上下左右4个方向

  1. 把问题改写成多个

  2. 把问题总结

  3. 把问题分解

  4. 把问题通过大模型生成答案再检索



不过这5种优化方式只是提供了一种思路,在OpenAI发布的一个成功案例中,里面提到了HyDE的优化方法,但实际效果并不好,所以没有采用。


但多重查询和RAG融合这两种技术,让我感觉这可以扩展成一个大模型集群。


你的RAG效果跑得怎么样,已经够完美了吗?如果它还不够完美,那么,你准备好加入RAG优化的革命了吗?


"在AI的世界里,没有最好,只有更好。让我们一起推动RAG的优化,开启AI 智能化的新篇章!"



53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询