应用篇| 深入浅出LLM应用之RAG
大模型开发/技术交流
- LLM
9月19日370看过
相信很多人都使用过LLM大模型,但是现有大模型或多或少都有以下问题:
LLM幻觉问题:从《【小白入门篇1】GPT到底是怎样练成?》我们知道虽然大模型现在能力很强,但是本质就是在做文字接龙,而且每次接龙都具有随机性, 导致模型有时候回答, 很容易出现“幻觉”。Meta AI 的研究人员引入了一种叫做检索增强生成(Retrieval Augmented Generation,RAG)的方法来完成这类知识密集型的任务。RAG 把一个信息检索组件和文本生成模型结合在一起 , 作为解决大模型幻觉的一种利器。
数据保鲜度:除此之外, 现在大模型使用离线数据训练出来,对于新的知识0感知, 导致模型直接回答数据过时、不准等问题。
数据安全性:最后也是最重要的是,数据作为很多企业的重要资产,是不能直接上传到互联网上的大模型, 这样会导致不可预测的后果,既要保证安全,又要借助AI能力,那么最好的方式就是把数据全部放在本地,企业数据的业务计算全部在本地完成。而在线的大模型仅仅完成一个归纳的功能,甚至,LLM都可以完全本地化部署。
出于以上三种主要原因, 使得LLM+RAG有用武之地。
01初识RAG架构
RAG基本思路是将背景知识文档预先向量化,存储至向量数据库中,当用户进行提问时,将用户的提问同样向量化后, 通过向量检索算法(比如向量乘积)之后, 得到top-K的文档, 将获取的top-k文档和用户提问都作为大模型输入, 大模型根据输入最终生成回答.这样 RAG 更加适应事实会随时间变化的情况,因为 LLM 的参数化知识是静态的。RAG 让语言模型不用重新训练就能够获取最新的信息,基于检索生成产生可靠的输出。
可以将RAG的架构拆分成以下部分:
-
(1)数据提取: 我们现实生活的场景中大部分是word、pdf、pptx等各种各样的文档数据, 需要各种数据Loader,将数据抽取出来, 分别进行数据清洗
-
(2) 数据分块: 现在所有大模型都有token长度的限制, 包括数据库也有长度限制, 而我们文档数据长度大部分都超过这些限制, 所以我们必须对文档数据进行分块
-
(3) 向量化: 将文本、图像、音频和视频等转化为向量矩阵的过程,也就是变成计算机可以理解的格式,embedding模型的好坏会直接影响到后面检索的质量, 相比传统的关键词匹配更具有理解性,对近义词检索更友好.
-
(4)检索环节: 现在一般检索技术采用的是向量相似度计算, 这个跟第三步我们将文档数据向量化之后存储到向量数据库中。检索效果有时候不佳,此时采用一些重排技术。
-
(5)生成:检索结果排序后丢给LLM进行归纳,根据 LLM 的推理能力,返回给用户。
02 现有RAG成熟产品
RAG有各种开源的RAG工具,成品的RAG像Langchain-chatchat、ragflow、qanything等。不同开源的RAG架构有细微的差别,大体框架如第一章节所介绍的。
当然RAG远不止上面三个框架, 之前在《【大模型应用篇4】普通人构建智能体的工具》介绍中的大部分智能体也内置了RAG的功能,从当前star来看chatchat具有拔得头筹优势, 但是Qanything有网易大厂做背书。那有没有其他方式进行评判, 答案是有的,请继续往下看。
除此之外, 如果以上成熟rag产品还不能满足你的需求, 可以使用基于一些Langchain等工具进行自定义开发。这种方式会更加灵活。比如langchain官网有基于langchain开发rag的简单例子python.langchain.com/v0.1/docs/u…
03 RAG评估
如此之多RAG工具,到底该怎么选?有什么更加量化指标能够评判rag的优劣。大部分RAG评估框架基于答案的相关性、上下文精确度、上下文相关性等上。主要RAG评估框架有以下几种:
有了量化评估工具,我们结合具体指标优化RAG的效果。不再停留拍脑袋的优化环节,帮助大家选择合适的RAG产品、RAG中的LLM模型、向量化模型等选型。
04 总结
虽然RAG能够快速解决LLM幻觉、新鲜度、以及数据安全性问题,但是RAG也有它的局限性,比如
(1) 向量数据库是一个尚未成熟的技术,缺乏处理大量数据规模的通用方案,因此数据量较大时,速度和性能存在挑战。
(2)在推理时需要对用户输入进行预处理和向量化等操作,增加了推理的时间和计算成本。
(3)外部知识库的更新和同步,需要投入大量的人力、物力和时间。
(4) 需要额外的检索组件,增加了架构的复杂度和维护成本。
(5)并不是精确问题,有些领域需要检索出来精确的数据,知识检索阶段依赖相似度检索技术,并不是精确检索,因此有可能出现检索到的文档与问题不太相关。同时每次检索出来给LLM,每次返回给用户并不是一样,会导致用户查询体验问题。
(6)关于查全问题,有些领域需要知识查询要求尽量全 ,RAG本质还是一种信息检索系统,无法做到全部查全。
总体来说RAG作为LLM前景广阔工业化应用,还是值得大家在私域上面进行部署和使用。随着相关RAG研究发展, 会使得RAG大有可为。
a1q7lEaSQh5nVoqyDeiaUUdoZ0ib71twL6CLICmOMJ25UuTFwl6ydwOXFbl8uiaYMAQ/640?wx_fmt=gif)
推荐阅读:
————————————————
版权声明:本文为稀土掘金博主「程序猿阿三」的原创文章
原文链接:https://juejin.cn/post/7381413495331913782
如有侵权,请联系千帆社区进行删除
评论