巅峰对决 LlamaIndex 与 OpenAI API大比拼

news2024/11/26 20:42:49

 我们进行了一项详尽的分析,比较了 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.coloradmin.cn/o/1259856.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Gitee上传代码教程

1. 本地安装git 官网下载太慢,我们也可以使用淘宝镜像下载:CNPM Binaries Mirror 安装成功以后电脑会有Git Bush标识,空白处右键也可查看。 2. 注册gitee账号(略) 3. 创建远程仓库 4. 上传代码 4.1 在项目文件目录…

扩散模型,快速入门和基于python实现的一个简单例子(复制可直接运行)

提示:内容丰富,收藏本文,以免忘记哦 文章目录 一、扩散模型二、一个简单的迭代式扩散模型的例子温度扩散模型python代码实现差分近似模拟拉普拉斯算子 三、扩散模型和深度学习进行结合简介用python和torch的代码实现 四、扩散模型与生成模型第…

Android Bitmap 模糊效果实现 (二)

文章目录 Android Bitmap 模糊效果实现 (二)使用 Vukan 模糊使用 RenderEffect 模糊使用 GLSL 模糊RS、Vukan、RenderEffect、GLSL 效率对比 Android Bitmap 模糊效果实现 (二) 本文首发地址 https://blog.csdn.net/CSqingchen/article/details/134656140 最新更新地址 https:/…

Java之API(上):Integer

前言: 这一次内容主要是围绕Java开发中的一些常用类,然后主要是去学习这些类里面的方法。 一、高级API: (1)介绍:API指的是应用程序编程接口,API可以让编程变得更加方便简单。Java也提供了大量API供程序开发者使用&…

Vue框架学习笔记——侦听(监视)属性watch:天气案例+immediate+deep深度监听

文章目录 前文提要天气案例描述样例代码呈现效果:事件的响应中可以写一些简单的语句(不推荐) 侦听(监视)属性watch结合天气案例的第一种写法(New Vue)immediate: 侦听(监…

【Java数据结构 -- 包装类和泛型】

包装类和泛型 1. 包装类1.1 基本数据类型和对应的包装类1.2 装箱和拆箱1.3 自动装箱和自动拆箱1.4 自动装箱实际上是调用了valueOf()1.5 Integer包装类赋值注意点 2 什么是泛型3 引出泛型4 泛型的使用4.1 语法4.2 类型推导 5 裸类型6 泛型如何编译6.1 擦…

2019年8月21日 Go生态洞察:迁移到Go模块

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

【从删库到跑路 | MySQL总结篇】表的增删查改(进阶上)

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】🎈 本专栏旨在分享学习MySQL的一点学习心得,欢迎大家在评论区讨论💌 目录 一、数据…

数据增强让模型更健壮

在做一些图像分类训练任务时,我们经常会遇到一个很尴尬的情况,那就是: 明明训练数据集中有很多可爱猫咪的照片,但是当我们给训练好的模型输入一张戴着头盔的猫咪进行测试时,模型就不认识了,或者说识别精度很低。 很明显,模型的泛化能力太差,难道戴着头盔的猫咪就不是猫…

坚鹏:贵州银行西南财经大学零售业务数字化转型与场景营销策略

中国银保监会2022年1月正式发布了中国银保监会发布《关于银行业保险业数字化转型的指导意见》,这标准着中国银行业从局部的数字化转型向全面的数字化转型转变,进一步加速了银行数字化转型高潮的到来。 《关于银行业保险业数字化转型的指导意见》提出明确…

一次脚本测试的内存增长问题

问题背景 问题描述:进入应用的视频素材剪辑页面然后退出,脚本循环执行500次,内存增长156M 问题分析 分析增长曲线图 曲线反映了从0到500次脚本执行过程中adb shell dumpsys meminfo抓取内存的增长情况,可以看出是Native内存一直…

JavaScript解构对象

之前介绍了数组解构,本文来介绍一下对象如何解构; 前言 现在我们有这样的一个数组: const restaurant {name: Classico Italiano,location: Via Angelo Tavanti 23, Firenze, Italy,categories: [Italian, Pizzeria, Vegetarian, Organic…

LINUX入门篇【10】---进程篇【2】---进程状态

前言: 有了上一篇关于进程的初步认识和我们的PCB第一个数据段–标识符的讲解,接下来我们将继续讲解PCB的其他数据段,本篇要讲的是进程状态。 进程状态: 就像我们写贪吃蛇的时候,构建的游戏状态来判定游戏结束的方式…

1-1、汇编语言概述

语雀原文链接 文章目录 1、机器语言2、汇编语言(Assembly Language)汇编语言工作过程汇编语言三类指令 3、学习资料电子PDF课件论坛视频教程 1、机器语言 机器语言是机器指令的集合。机器指令展开来讲就是一台机器可以正确执行的命令。电子计算机的机器…

【uniapp】微信运行报错TypeError_ Cannot read property ‘FormData‘ of undefined

文章目录 一、报错详情:二、解决: 一、报错详情: 二、解决: npm install axios0.27.2 #或者 npm install axios1.3.4

SpringBoot——国际化

优质博文:IT-BLOG-CN 一、Spring 编写国际化时的步骤 【1】编写国际化配置文件; 【2】使用ResourceBundleMessageSource管理国际化资源文件; 【3】在页面使用ftp:message取出国际化内容; 二、SpringBoot编写国际化步骤 【1】创…

【算法优选】 动态规划之路径问题——壹

文章目录 🎋前言🎋[不同路径](https://leetcode.cn/problems/unique-paths/)🚩题目描述:🚩算法思路:🚩代码实现 🎋[不同路径二](https://leetcode.cn/problems/unique-paths-ii/desc…

金蝶Apusic应用服务器 任意文件上传漏洞复现

0x01 产品简介 金蝶Apusic应用服务器(Apusic Application Server,AAS)是一款标准、安全、高效、集成并具丰富功能的企业级应用服务器软件,全面支持JakartaEE8/9的技术规范,提供满足该规范的Web容器、EJB容器以及WebSer…

使用echars实现数据可视化

生活随笔 展翅飞翔之际 请下定决心不再回头 echars实现数据可视化 在搭建后台页面时,可能会遇到很多的表格,但有时表格所展现的数据并不能直观的体现出当前用户的宏观信息,所以就可以引入一个新的表格插件——echars 快速上手 - Handbook…

客户关系管理系统功能清单

客户关系管理系统功能清单 一、客户信息管理 1. 客户基本信息:包括客户名称、地址、电话、电子邮件等。 2. 客户关系信息:包括客户的购买历史、服务记录、支持案例等。 3. 客户分类信息:根据客户的重要程度、购买行为、偏好等因素&#xff…