AI知识库

53AI知识库

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


【深入浅出RAG】如何构建生产级的RAG
发布日期:2024-05-15 07:07:07 浏览次数: 1827


关注 ▲AI模数师▲ 探索AI生活,驱动数据智能


欢迎来到AI模数师,这里是 深入浅出RAG系列 的第3篇原创


如果您刚开始接触AI ,欢迎订阅小白学AI系列,零基础搞定大模型!    

不用编程!零基础学AI系列


另外~~跟大家宣布个重要的事情!
我已经把自己变成了一个万能的超级智能体,可以在后台问我各种问题~~还可以陪你玩成语接龙 和 末日生存游戏 !欢迎后台私信体验啊~~



RAG绝对是企业打开大模型成本最低、见效最快的方式,通过把文档、报告、图片进行向量化处理,就能快速打造企业专属的智能客服、智能顾问。


而且相比于微调技术,还具备可观测性、可解释性等优势,还可以有效降低大模型的幻觉问题,让人用得放心、用得舒心。


另外一点, RAG 应用的搭建非常简单,通过LlamaIndex、LangChian这些开发框架,或者像LangChain-Chatchat,RAGflow,QAnything这些开源的RAG产品,几分钟都可以在自己笔记本上跑起来一个有模有样的 RAG Demo 原型。


不过可以这种 RAG 原型丢几个文档验证一下就能发现一个严重的事情:除了不准,没毛病


想要打造一个真正生产级、表现良好、稳定且可扩展的 RAG 程序,那可就不是一件轻松的事了。至少需要让 RAG 具备以下能力:

  1. 数据兼容性:并且能处理多种数据类型

  2. 回答准确性:要回答准确,不能胡说八道

  3. 扩展性:处理大量数据


所以一个生产级 RAG 的最终目标就是优化检索和生成的性能,更准确地回答更多查询,处理更复杂的数据集,而不产生幻觉。


先回顾下整个RAG的流程,具体解释可以参考

【深入浅出RAG】LangChain vs LlamaIndex vs 腾讯向量数据库,谁才是打开RAG的最优解



左边的标号代表了RAG的三个主要阶段,索引、检索、生成,为了便于识别,相关的每个步骤也都进行了编号。


要想让大模型回答得准确,里面还真有不少坑。比如文档解析的有问题,从源头就出错,那大模型再神也不可能回答正确。


再比如用户提的问题不太准确,或者提了一个完全无关的问题;或者从向量数据库中检索的结果不对;还有可能在把文档切分的时候把一句话切成了两半,这些都会造成最终的回答不准确。

针对上面的问题,现在也有了不少优化方法,LangChain 和 LlamaIndex 团队都提出了一些优化方案,下面是构建生产级 RAG 时需要重点考虑的一些因素:

  1. 使用比较好的嵌入模型

  2. 给检索结果补充上下文

  3. 选择适合的检索方式

  4. 对大数据增加结构化检索



  • 使用比较好的嵌入模型

这个方法绝对是见效最快的,比如网易QAnything的效果比较好就是因为采用了bge-large-zh-v1.5的嵌入模型,经过验证,只改变嵌入模型就可以大幅提升RAG整体的效果。


网易发布的测试结果,bge-large-zh-v1.5在中文数据集上还是有明显优势的,相关模型可以通过ollama,或者魔搭社区(modelscope.cn)都可以下载。


  • 给检索结果补充上下文

在实际情况中,经常会发生向量数据库只检索出某一句话,但是缺乏这句话的前后背景信息,把这个结果丢给大模型生成答案的话,会造成答案不准确。


这个优化方法就是在检索到结果之后,把段落的前后背景分别补充上,一起给大模型。


还有另一种方法是在最开始处理文档的时候,对段落进行总结,然后把总结好的结果跟相关信息一起存放到向量数据库中。在遇到问题检索时一起提取出来。


这样把前后文的背景信息或者总结的摘要信息,带上检索出来的结果和问题,一起丢给大模型,回答的质量可以明显提高。


  • 选择适合的检索方式


跟关系型数据库中的检索不同,从向量数据库中检索的结果是前几条最相似的信息。


但有时候用户的提问有可能是有明确答案的,比如鲁迅的诞辰是哪一年,阿里巴巴公司是在哪一年成立的。


这种有明确答案的问题不一定合适再用向量数据库检索,更适合到关系型数据库或者图数据库中查询。不能用战术的勤奋解决战略的懒惰,是不是应该到向量数据库查询,其实是拿到问题需要考虑的第一个问题。


  • 对大数据量增加结构化检索


标准RAG(top-k 检索 + 基本文本分割)面临的一个大问题是随着文档数量的增加,它的表现会下降——例如有 100 个不同的 PDF 文档。


在这种情况下,面对一个问题,最好的方式是先把问题圈定在少数的相关文件中。这时候还是需要使用结构化信息来帮助更精确地检索;


例如用户提问的是一个清朝的历史,就不适合在所有文档中查询,先把查询书名或者标签,把查询范围限定在清朝的历史相关的文档,这样能大幅提高检索效率。(不过带来的新问题就是怎么给文档打标签了



目前来看,面对大量数据怎么能高效地检索出准确的结果目前还没有达成一个业界成熟通用的解决方案。 


RAG虽然是大模型在企业中最快能落地的一项技术,但是目前还处于一个发展期,后面的文章也会给大家汇报持续的探索结果,辛苦我一个,幸福送大家


如果您也在AI学习的路上,欢迎关注我,获取更多关于AI的资讯和教程。让我们一起探索智能科技的无限可能!


觉得我的文章对你有帮助的话,请不要吝啬你的点赞、在看和转发~


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

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

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

联系我们

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

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询