巅峰对决 LlamaIndex 与 OpenAI API大比拼

 我们进行了一项详尽的分析,比较了 OpenAI 助手 API 和 LlamaIndex 在 RAG 性能方面的差异。目的是使用Tonic Validate评估各种RAG系统,该系统是一个RAG评估和基准平台,同时使用开源工具tvalmetrics。本文中使用的所有代码和数据都可以在这里找到。简单来说,Llamaindex目前在速度上大幅领先(尤其是在处理多个文档方面)几个关键的发现包括

多文档处理:在处理多个文档时,助手 API 的表现不尽人意。而 LlamaIndex 在这方面表现出色。

单文档处理:当文档被合并成一个*单一*文档时,助手 API 的性能有显著提升,在这方面略胜一筹于 LlamaIndex。

速度对比:“处理五份文档只用了七分钟,而 OpenAI 的系统在相同条件下几乎要花上一个小时。

稳定性:“相比于 OpenAI 的系统,LlamaIndex 显著降低了崩溃的风险”

介绍

上周,我们测试了OpenAI的Assistants API,并发现其在处理多个文档时存在一些主要问题。然而,为了更好地评估其性能,我将比较OpenAI的Assistants RAG与另一个流行的开源RAG库LlamaIndex。让我们开始吧!测试OpenAI的Assistants RAG 在先前的文章中,我们已经设置了OpenAI的Assistants RAG。您可以在此处查看原始设置。这是一个提醒:我们的测试集使用了212篇Paul Graham的文章。最初,我们尝试将所有212篇文章上传到RAG系统,但发现OpenAI的RAG将上传限制在最多20个文档。为了解决这个问题,我们将这212篇文章分成五组,并为每组创建了一个单独的文件,总共得到了五个文件。我们使用了五个文件而不是20个,因为在更高的文档数量上遇到了可靠性问题,这阻止了我们在20个文件集上运行任何测试。通过这个五文件的设置,我们使用我们的开源RAG基准库tvalmetrics得到了以下结果:

b4f397be57a98ef91730527eeab2aab8.jpeg

在我们的软件包中,得分为0表示没有相似性,而5表示完全相似。上面的结果并不理想,平均相似性得分为2.41,中位数为2。这低分是由于OpenAI的RAG系统无法在文档中找到相关文本,导致系统返回无答案。

dd95135b3b560b1f6fb6deb070593543.jpeg

4f1d06be9f9506768b6e3264e4134286.jpeg

在我们的软件包中,得分为0表示没有相似性,而5表示完全相似。上面的结果并不理想,平均相似性得分为2.41,中位数为2。这低分是由于OpenAI的RAG系统无法在文档中找到相关文本,导致系统返回无答案。

6b05e4914a5f7ea2c8f7328cdd3b5238.jpeg


97df0146aabbec665cb1808056404a66.jpeg

69603defd64e0afbb79c27a1d17134f0.jpeg

为了导入这些文档,我运行了以下代码:

be5f989c4b21bf7abd452fd1384e6662.jpeg

d09343c6f52ded004d4015b945be96fa.jpeg


要查看我如何创建单一和多文档的训练集,以及用作测试集的问题-答案对,您可以在上一篇博客文章中查看我的撰写,点击这里。

检查设置

最后,我们可以进行抽样检查以查看LlamaIndex的表现如何。

12a5494b00e51179e758076a9e0341e3.jpeg

对于五文档设置和单一文档设置,LLM返回了相同的正确答案:

评估RAG系统

现在,让我们使用tvalmetrics进行评分,这是Tonic.ai在测量LLM响应质量方面创建的一个开源库。我使用以下代码对LlamaIndex的响应进行基准测试:

e620f0b12a6a2e906b0800326c09d3f4.jpeg0bd09f36aaba620a65871c8fcf847e5b.jpeg

使用五文档设置,我得到了以下结果:

ef09f4d8b5efd9fbc81c27829eb14efa.jpeg

23eacd180b44fc661a111370d6cb1106.jpeg

使用多个文档,LlamaIndex的表现远远好于OpenAI。其平均相似性得分约为3.8,略高于平均水平,中位数为5.0,非常出色。相较于使用相同设置的OpenAI系统,五个文档的运行时间仅为七分钟,而OpenAI系统几乎需要一个小时。我还注意到,与OpenAI的系统相比,LlamaIndex系统明显不太容易崩溃,这表明OpenAI的可靠性问题更多地与RAG系统本身有关,而不是Assistants API。

982197ec48da45212c1ea4a1a6609f12.jpeg

01ad3a6469122823650aa8354cc9bd2c.jpeg

我应该指出,通过调整一些LlamaIndex参数,包括将块大小更改为80个令牌,块重叠为60个令牌,提供的块数为12,并使用LlamaIndex中的混合搜索选项,我获得了稍微更好的结果。这样做产生的结果更接近于OpenAI,但并不完全一样:

4c3eb3cb3a9d4457e29fbc68a5db572d.jpeg

ca00195888abd2aaa388ecbd73ddc3ce.jpeg 

虽然两个系统之间的性能现在更接近了,但在仅单一文档上,OpenAI仍然稍微领先。请记住,我使用的设置是针对我提出的问题类型进行调整的(即,短问题,其答案在文本中非常明显)。这些设置在所有情景下都不适用,而OpenAI设法在理论上适用于任何情况的设置下实现了良好的性能。尽管由于OpenAI不允许对其设置进行大量定制,您可能正在放弃一些性能。最终,取决于您是否希望通过在某些情景下获得更多定制来获得更好的结果,还是选择一个通用的开箱即用工具,可以在特定情况下取得不错的性能(...仅限于单一文档)。

结论

OpenAI的RAG系统似乎很有前途,但在处理多个文档时的性能问题显著降低了其实用性。他们的系统在单一文档上运行良好。然而,大多数人可能希望在一系列不同文档上运行他们的RAG系统。虽然他们可以把所有文档塞进一个单一的、庞大的文档中,但那只是一种技巧,不应该是一个性能良好、易于使用的RAG系统所需要的。再加上20个文件的限制,这让我不太愿意建议任何人立即用OpenAI的RAG替换其现有的RAG流水线。然而,正如我之前所说,OpenAI仍有改进的潜力。在对其GPT的RAG系统进行一些抽样检查时,我注意到在处理多个文档时性能要好得多。糟糕的性能仅限于Assistants API本身。如果OpenAI努力提高Assistants API的质量,使其达到GPT的水平并消除文件限制,那么我可以想象公司可能会考虑迁移到OpenAI的RAG,前提是他们愿意放弃LlamaIndex提供的一些可定制性。然而,在那一天到来之前,我建议继续使用LlamaIndex。本文中使用的所有代码和数据都可以在这里找到。我很想听听您对OpenAI Assistants、GPT和tvalmetrics的看法! 

                                                                            

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/224636.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GaussDB数据库SQL系列-触发器

目录 一、前言 二、触发器概念 三、GaussDB数据库中的触发器 1、语法格式 2、创建步骤 3、注意事项 4、附:表和视图上支持的触发器种类 四、GaussDB数据库中的示例 示例一、在GaussDB数据库中创建一个触发器,以便在插入新记录时自动将记录的创建…

Rocky Linux 9.3 为 PowerPC 64 位带回云和容器镜像

RHEL 克隆版 Rocky Linux 9.3 今天发布了,作为红帽企业 Linux 发行版 CentOS Stream 和 Red Hat Enterprise Linux 的免费替代版本,现在可供下载。 Rocky Linux 9.3 是在 Rocky Linux 9.2 发布 6 个月之后发布的,它带回了 PowerPC 64 位 Lit…

Vatee万腾的数字创新征途:vatee科技力量的独特奇点

在数字化的时代浪潮中,Vatee万腾如一颗耀眼的明星,以其独特的科技奇点引领着数字创新的征途。无论是在人工智能、大数据、云计算,还是智能化领域,Vatee万腾都展现出了与众不同的创新力量,为科技征途描绘了独一无二的奇…

【开源】基于Vue+SpringBoot的学校热点新闻推送系统

项目编号: S 047 ,文末获取源码。 \color{red}{项目编号:S047,文末获取源码。} 项目编号:S047,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 新闻类型模块2.2 新闻档案模块2.3 新…

[ CSS ] 内容超出容器后 以...省略

内容超出容器后 以…省略 当前效果 代码 <template><div class"box">有志者&#xff0c;事竟成&#xff0c;破釜沉舟&#xff0c;百二秦关终属楚; 有心人&#xff0c;天不负&#xff0c;卧薪尝胆&#xff0c;三千越甲可吞吴</div> </templa…

Linux - 动静态库(下篇)

前言 在上篇博客当中&#xff0c;对静态库是什么&#xff0c;怎么使用&#xff0c;简单实现自己的静态库&#xff0c;这些做了描述&#xff0c;具体请看上篇博客&#xff1a; 本篇博客将会对 动态库是什么&#xff0c;怎么使用&#xff0c;简单实现自己的动态库&#xff0c…

Linux—进程状态、僵尸进程、孤独进程、优先级

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、进程状态二、僵尸进程、孤儿进程1、Z(zombie)-僵尸进程2、僵尸进程危害3、孤儿进程 三、进…

基于振弦式轴力计和采集仪的安全监测解决方案

基于振弦式轴力计和采集仪的安全监测解决方案 振弦式轴力计是一种测量结构物轴向力的设备&#xff0c;通过测量结构物上的振弦振幅变化&#xff0c;可以确定结构物轴向力的大小。采集仪是一种用于采集和存储传感器数据的设备&#xff0c;通常与振弦式轴力计一起使用&#xff0c…

Java 简易版王者荣耀

所有包和类 GameFrame类 package newKingOfHonor;import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.io.File; import java.util.ArrayList;im…

steam搬砖如何选品?选品软件和教程靠谱吗?

说到steam搬砖项目&#xff0c;目前平台最火的就是CSGO游戏搬砖。在steam搬砖项目中&#xff0c;选品是一个至关重要的环节&#xff0c;直接影响到利润。而选品软件可以帮助我们更快地了解市场变化、计算成本利润等关键信息&#xff0c;提高选品的效率和准确性。可靠的选品软件…

Python中调用VisualStudio创建的DLL库

1、创建DLL 打开VisualStudio2022&#xff0c;创建新项目 动态链接库-下一步 设置项目名称、项目位置、创建 单击头文件、添加、新建项 选择.h、设置名称、添加 同样的在源文件新建项&#xff0c;创建 代码&#xff1a; test.h #pragma once#ifdef BUILD_TEST #define API_S…

08 木谷博客系统RBAC权限设计

这节内容说一下木谷博客系统的权限设计,采用现在主流的权限模型RBAC,对应关系如下: 以上5张表都在mugu_auth_server这个库中 该部分的服务单独定义在user-boot这个模块中。 将角色、权限对应关系加载到Redis 木谷博客系统在认证中心颁发令牌的时候是将用户的角色保存到令牌…