链载Ai

标题: 【深入浅出RAG】LangChain vs LlamaIndex vs 腾讯向量数据库,谁才是打开RAG的最优解 [打印本页]

作者: 链载Ai    时间: 前天 09:47
标题: 【深入浅出RAG】LangChain vs LlamaIndex vs 腾讯向量数据库,谁才是打开RAG的最优解


在过去很长的一段时间里,只有类似表格这种结构化数据才能为企业产生大量的价值,像财务报表、销售报告等,既方便做成趋势、折线图、也方便通过数据库SQL语言进行查询、过滤。


但在企业内部最占存储空间的,反而是大量的文本文件、图片、视频,这种半结构化以及非结构化数据。这也正印证了28原则,20%的数据带来80%的价值,80%的数据只带来20%的价值。


怎么能从这堆海量数据中提取更多价值一直是诸多企业关心的问题。不过,通过语义检索结合AI大模型,就为这个问题带来了解决方案。


过去的搜索技术都是依赖文本检索,也可以理解为精准检索,比如从这句话 “今天这顿烧烤味道不错” 中只能搜索到烧烤、味道,这类在句子中真实存在的词语。但如果搜索美食、好吃,这类同义词,计算机是无法理解的。


但现在,可以通过把句子、段落、文章、视频、图片,转化成向量(向量就是带有方向的坐标),再通过向量之间的比较,就可以找到结果。


例如分别不同种类的小狗,就可以通过体型大小、毛发长度、鼻子长短等特征来区分。如下面这张照片按照体型排序,可以看到体型越大的狗越靠近坐标轴右边,这样就能得到一个体型特征的一维坐标和对应的数值,从 0 到 1 的数字中得到每只狗在坐标系中的位置。



然而单靠一个体型大小的特征并不够,像照片中哈士奇、金毛和拉布拉多的体型就非常接近,我们无法区分。所以会再增加其他的特征,例如毛发的长短,也进行赋值,这样就得到了一个二维数组的坐标点。



通过这种方法,就可以从文本、图像等原来无法检索的内容中,找到相似的结果了。


RAG的本质就是:先把非结构化数据变成向量,再根据问题找到相似的结果。最终把问题和找到的结果一起丢给大模型,让大模型把这堆内容整理成一段人类可以理解的语言。



在实际的使用中,主要就包含5个步骤,可以分为两个阶段:

准备阶段:先处理文档,对文档进行向量化、然后存放到专门的向量数据库中。

查询阶段:把问题丢给向量数据库,查询到结果之后,把查询结果和最开始的问题统统丢给大模型,得到最终的答案。


比如用户的问题是 :如果我的车辆在保修期外抛锚,领克救援服务是否会提供免费的拖车服务?


从一本领克的售后手册中,直接可以通过大模型生成答案 :领克救援服务通常会在车辆在保修期外抛锚时提供付费的服务,包括拖车但不总是免费。具体服务内容和费用可能需要查询领克的官方服务指南或联系服务中心获取最新信息。


这简直就是一个很不错的官方回答。这种能力在智能客服、投资顾问等很多领域都可以有很好的落地场景。能切实从文档中提炼经验,把经验传递给一线的工作人员或者是最终的客户。



虽然上述几个步骤看似不复杂,但是在实际的情况中,每个步骤都是麻烦事,比如处理视频、音频、pdf、网页、word、ppt,都需要不同的方法。


而且像pdf和ppt中,还经常会带表格,处理起来更是麻烦的事情。那有没有什么好办法能简化这些实际的处理步骤呢?


开源社区和云厂商都提供了不错的解决方案,像最近比较火的 LangChain 和LlamaIndex,都是开源的AI开发框架,把上述提到的几个步骤都封装成模块,方便直接调用。





不过呢,上面提到的几种方案目前也确实是各有优劣,所以~光说不练假把式。







欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5