AI知识库

53AI知识库

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


如何提升大模型RAG系统的效果?RAG框架 and 落地选型 (一)
发布日期:2024-09-07 07:27:08 浏览次数: 1576



本文Key Takeaway:

  • RAG整体框架
  • 论文证实有用的RAG trick:Query改写PE/HyDE/LLM ReRank
  • 工业落地的一些实际选型:意图分流;领域BGE;RAG Fusion;多路召回


01



背景


为什么要写RAG?
RAG的各种优化眼花缭乱,公众号、论文都多的看不过来了,需要进行一个梳理,挑点重点能落地的进行尝试。之所以有这么多方式,本质还是因为rag是一个系统,包含非常多的模块所以针对不同模块自然有与众不同的组合。同时,如果搭建了一个整体的框架,那么对于这些新出的方法,无非是在之前的大框架里雕花而已,无需头脑混乱。

RAG在各家公司都十分被重视去尝试?
RAG是一个落地非常好的场景,问答系统是非常多公司都离不开的场景,据个人所知,像很多内部的业务咨询、技术咨询、有很多做智能客服的公司,都在百花齐放的尝试RAG

知识到底如何注入大模型?
增量预训练 VS 微调 VS RAG?RAG效率更高、RAG能减少模型幻觉,提供知识来源、RAG能提供动态的知识,提供良好的可解释性。借用一张图来展示RAG和微调的差异:




但其实,大家对比的时候常比较的是IFT或SFT跟RAG,增量预训练比较少,而实际上个人觉得这一环可能对很多领域知识任务的提升更大,尤其是跟通用语料差异较大的部分,Yi 技术报告里有提到增量预训练对于上下文窗口也有很大的帮助,所以对于很多领域来说,在考虑RAG或SFT之前,请先考虑增量预训练。对于注入知识和长度拓展都有很大的益处。推荐增量预训练(较少频次)->SFT->RAG 迭代式优化。


02



RAG框架


Naive RAG、Advanced RAG和Modular RAG。一图胜千言,同济这个综述图建议反复看,增强框架记忆。实际企业中,可能大部分都在Advanced RAG中进行检索器细节的打磨,对于召回的效果,以及LLM总结推理生成效果的调优。



03



几个Advanced RAG方法


所谓高级,自然是针对不同的问题得到了很好的解决。例如:

  • 内容缺失:检索不出正确答案=》召回准确性

  • 漏掉排名靠前的文档:Top K的召回率需要保证百分百=》rank准确性

  • 推理能力:哪些文档要,哪些文档不要,根据文档准确精简回答问题=》推理总结准确性


为什么只提到几个的原因在于,这篇论文
《ARAGOG: Advanced RAG Output Grading》提到其实很多(Thousands of的夸张说法)高级做法并没有多好的效果,所以不见得方法多是好事,要辩证去实践。

回答第一个问题:这里介绍几个Prompt Engineerin Base的Query改写或扩展的方法:

  • HyDE:使用大模型回答Query生成《假设文档》,再用 《假设文档》去库里搜

  • Step-back Prompting: 从具体问题到抽象问题去问

  • Meta Cove :对于复杂Query,验证的方式是通过将问题拆的比较细,然后分开去找答案,这样获取到的知识更全面,比一个query去召回肯定更好


思考:其实这几个思路,都是在把复杂的难以理解的用户问题,转化为大模型或者检索系统更好理解的“黑话“,降低理解成本,效果自然就上来了。


针对第二个问题,其实就是精细化文档排序问题:

  • LLM ReRank:看到的比较少,大部分还是直接拿API级别的对召回文档排序。

  • BGE ReRanker:FlagEmbedding开源的交叉编码器模型

    bge-reranker,具有比向量模型更强大的排序能力。官方建议使用或者微调它来重新排序向量模型返回的top-k文档,提高最终结果的相关性。工业界用的还是比较多,代码使用起来也非常方便,推荐!


针对第三个问题,其实看大家讨论的比较少,主要是有了知识后的回答总结,看起来是个润色的工作, 但实际还有很多推理的事情。例如:

问题:如何安装充电桩,需要布线11米怎么收费?

文档:5米-10米需要xx的钱,10米以上打九折......等

那就得理解这样得逻辑,不只是知识密集型了。这一类得问题目前经验是只有API级别的如GPT4 、KimiChat这些才有可能解决得比较好,其他方法也在思考中,如您有想法也可留言提出。


这些方法其实很多,这里就不全部介绍了,只是近期比较感兴趣以及几篇论文里测过这几个比较有效就介绍下,实际可能需要都进行尝试。不过所有的方法,只要理解好了在前述特定的框架中就知道优化的方向。


04



落地的一些选型



个人比较倾向于技术落地,所以会关注各家的实际技术选型,这里列一些常见方案供参考。


技术问答机器人

  • 意图识别:/

  • 检索召回:使用BGE Embedding进行检索,为提升效果,使用RetroMAE方式(如图所示使用全参数的bert作为encoder加上单层的transformer layer作为decoder,预测mask词)进行领域增强



  • 排序生成:检索结果优化使用RAG-Fusion (Fusion如图所示,由LLM生成不同query1 query2 ... query n 后按RRF打分;RRF打分是按如图所示对多个检索渠道按排名的倒数综合打分)& Re-rank(BGE-ReRank)



RAG平台

  • 意图识别:使用意图识别进行场景分流:采用bge_large_en向量模型 + 大模型的技术方案检索召回:

    使用Cohere Embedding (100+ Multilingual能力)进行检索;工程上使用OpenSearch多路混合召回(向量和关键字), 同时包含Sparse Vector Retrieval(term expansion)

  • 排序生成:使用BGE进行ReRank 如亚马逊这个example:

    private-llm-qa-bot/notebooks/embedding/bge_zh_research.ipynb at main · aws-samples/private-llm-qa-bot · GitHub

  • 知识库:LLM自有知识->网络搜索->内部知识库 的ReRank方向


baichuan

  • 意图识别:未知。不过baichuan2论文里有提及对齐过程包含了非常多层级意图分类,所以猜测会做很细粒度的工作

  • 检索召回:query扩展使用Meta CoVe以及Think Step-Further(前文有介绍);检索策略选择稀疏检索+向量检索(自研baichuan-text-embedding

  • 排序生成: 未知rerank模型;self-crituque:让大模型基于 Prompt、从相关性和可用性等角度对检索回来的内容自省,与 Prompt 最匹配、最优质的候选内容

注:”/“ 表明不清楚这块的优化。


05



总结


正如前文所说,RAG是一套系统,并非什么新的技术,只不过在大模型时代,这套系统显得格外的重要。所以会出现层出不穷的文章和最佳实践,我们需要做的,就是在实际项目中快速落地并针对自己的场景进行调优,有了很多心得之后自然可以成体系。本文也只是介绍了rag中的大体框架和一些优化方法,没有涉及的方面如 多模态、语料到知识库的清洗,rag系统的正确评估、自动生成引文等等还有非常多,希望后面结合一些落地的场景和paper有继续深入的介绍。


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

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

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

联系我们

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

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询