微信扫码
与创始人交个朋友
我要投稿
给大模型接上外部记忆,能让他变成律师、医生、或者客服,这就是现在落地最快的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个方向
把问题改写成多个
把问题总结
把问题分解
把问题通过大模型生成答案再检索
不过这5种优化方式只是提供了一种思路,在OpenAI发布的一个成功案例中,里面提到了HyDE的优化方法,但实际效果并不好,所以没有采用。
但多重查询和RAG融合这两种技术,让我感觉这可以扩展成一个大模型集群。
你的RAG效果跑得怎么样,已经够完美了吗?如果它还不够完美,那么,你准备好加入RAG优化的革命了吗?
"在AI的世界里,没有最好,只有更好。让我们一起推动RAG的优化,开启AI 智能化的新篇章!"
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-03-30
2024-04-26
2024-05-10
2024-04-12
2024-05-28
2024-05-14
2024-04-25
2024-07-18
2024-04-26
2024-05-06
2024-12-22
2024-12-21
2024-12-21
2024-12-21
2024-12-21
2024-12-20
2024-12-20
2024-12-19