长上下文语言模型与RAPTOR 方法

在科技领域的前沿,长上下文语言模型(Long Context LLMs)和新兴检索方法如RAPTOR 正在引发广泛关注。本文将围绕这些技术展开讨论,并探讨它们在实际应用中的创新性和科技性。

长上下文语言模型的崛起

近几周来,随着新型长上下文语言模型(如Gemini、Claude 3)的出现,关于“RAG(Retrieval-Augmented Generation)是否已经过时”的讨论甚嚣尘上。这些新模型能够处理高达百万个tokens的上下文,这无疑为我们提供了前所未有的机会。

我最近在某些项目中使用了这些长上下文LLMs,例如我上周发布的代码助手,它使用长上下文LLM回答关于我们文档中L表达式语言的问题。在这个项目中,我们处理了大约60,000个tokens的上下文,将问题和文档结合起来生成答案。这种方法非常简洁,不需要检索,只需将所有文档加载到上下文中并直接生成答案。我个人非常喜欢这种使用长上下文LLMs的方法,但在实际应用中,我们需要考虑一些问题。

评估与性能

为了进行评估,我设置了20个问题并生成了相应的答案。通过LangSmith仪表板,我观察到P50延迟(即50百分位延迟)在35到46秒之间,而P99延迟则高达420秒。这种延迟因试验而异,但总体上是可以预期的。更有趣的是,生成每个答案的成本约为1到1.3美元。

在考虑使用长上下文LLMs时,我们必须权衡这些因素,尤其是与传统的RAG系统相比,后者通过检索更小、更定向的片段来回答问题。

本地LLMs的替代方案

很多人问我是否可以用本地LLM来替代这种方法。我的首选本地LLM是Mistol 7B V2,它具有32,000个token的上下文窗口。然而,这仍然不足以处理我约60,000个tokens的文档。因此,虽然本地LLM在某些场景下是一个可行的替代方案,但在处理超大规模文档时,仍存在一定的局限性。

轻量级检索策略的探索

这些考虑促使我思考是否存在适用于长上下文模型的轻量级检索策略,这些策略既能利用大量上下文,又能解决上述限制。

其中一个观点是可以在文档级别进行索引,将完整的文档直接嵌入,然后利用KNN(K近邻)算法进行检索。这种方法无需对文档进行任何拆分或分块。

另一个有趣的想法是构建文档树。传统的KNN方法在需要整合多个文档的信息时可能不够灵活,而文档树可以通过聚类和递归总结信息来解决这个问题。

RAPTOR 方法的介绍

最近,一篇关于RAPTOR 方法的论文引起了广泛关注,其代码也已开源,这使得Llama Index团队推出了一个相应的Llama包RAPTOR r方法的核心思想是通过递归总结和嵌入文档来构建文档树,从而提高检索性能。

首先,我们将一组文档嵌入,然后对它们进行聚类。接着,我们对每个聚类中的内容进行总结,将这些总结作为更高层次的抽象。这个过程递归进行,直到只有一个聚类为止。最终,我们将这些总结和原始文档一起嵌入并进行检索。

实验与实现

为了验证这个方法的有效性,我使用了Claude 3来进行文档总结,并使用OpenAI的嵌入模型。通过递归聚类和总结,我们构建了一个包含原始文档和总结的向量索引。

实验结果表明,这种方法能够有效地提高检索性能,尤其是在需要整合多个文档信息的情况下。通过结合原始文档和总结,我们可以在不同粒度的抽象层次上进行检索,从而提高答案的准确性和全面性。

总结

长上下文LLMs和RAPTOR 方法为我们提供了新的可能性,特别是在处理大规模文档和复杂信息整合任务时。虽然直接使用长上下文LLMs是一种有效的解决方案,但在某些情况下,结合轻量级检索策略RAPTOR r方法,能够进一步提高性能和灵活性。

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

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

相关文章

在Windows中使用命令行将文件夹内txt文件合并成一个

打开命令提示符窗口导航到包含要合并的TXT文档的文件夹中。命令示例:cd C:\MyFiles在命令提示符窗口中键入以下命令:copy *.txt combined.txt按Enter键运行该命令。所有.TXT文档将合并到名为“Combined.TXT”的新文件中。

基于springboot+vue+uniapp的戏曲文化苑小程序

开发语言:Java框架:springbootuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包&#…

判断一个变量是数组还是对象

很多人看到标题就会想到使用typeof运算符,但是实际上有些它判断不了 var a [1,2,3] console.log(typeof a) // "object"//总结: typeof运算符并不能直接判断一个变量是对象还是数组, //实际上,typeof运算符在判断基本…

Java两表查询的方法(一对一,一对多,多对多)

一、配置环境&#xff1a; 首先我们需要Maven环境; 源码&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"…

vue-router小结

1.什么是vue-router vue-router是vue.js官方给出的路由解决方案&#xff0c;只能结合vue项目进行使用&#xff0c;能够轻松的管理SPA项目中组件的切换 2.vue-router的用法 先安装vue-router &#xff08;npm i vue-router&#xff09; 在新建router/index.js 文件,在文件内导…

yandex图标点选验证码YOLOV8识别案例

注意,本文只提供学习的思路,严禁违反法律以及破坏信息系统等行为,本文只提供思路 如有侵犯,请联系作者下架 某yandex图标点选验证码如下: 使用过yolov8的小伙伴可能都知道,这种直接打个标注,基本上就可以了,至于问题图片由于不能很好的切割做分类,所以干脆也做成目标…

探索更高效的语言模型提示-Anthropic的元提示工具

中午看到一个视频 视频地址&#xff1a; https://youtu.be/Evg4HXvsYVY?siWZLYw7lYPXttHUyw 该视频介绍了Anthropic的元提示工具&#xff0c;可以帮助用户更好地使用他们的语言模型&#xff0c;并提供了示例和指导。该工具可用于创建更好的提示&#xff0c;从而获得更具体和…

基于图卷积神经网络(GCN)的高光谱图像分类详细教程(含python代码)

目录 一、背景 二、基于卷积神经网络的代码实现 1、安装依赖库 2、建立图卷积神经网络 3、建立数据的边 4、训练模型 5、可视化 三、项目代码 一、背景 图卷积神经网络&#xff08;Graph Convolutional Networks, GCNs&#xff09;在高光谱图像分类中是一种有效的方法…

CSS实现文本溢出处理

1.单行文本溢出 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-wid…

Dependency Injection: 如何解决依赖注入失败问题

Dependency Injection: 如何解决依赖注入失败问题 &#x1f489; **Dependency Injection: 如何解决依赖注入失败问题 &#x1f489;**摘要引言正文内容1. 依赖注入的基础概念代码示例&#xff1a;构造函数注入 2. 依赖注入失败的常见原因2.1 未能找到依赖的实例2.2 循环依赖2.…

Gogs搭建免费好用的Git服务器

1、说明 代码托管系统是开发中一个不可缺少的工具&#xff0c;通过代码托管系统可以方便协同开发&#xff0c;代码权限控制&#xff0c;代码异地灾备、版本管理、问题跟踪、项目文档管理等等项目管理所必须的工具。在项目的任何一个过程中&#xff0c;代码托管系统始终有着重要…

Axios的几种不同的responseType处理响应,以及blob与arraybuffer的解析

在使用 Axios 时&#xff0c;你可以通过设置 responseType 选项来指定如何处理响应数据。Axios 提供了几种不同的 responseType 选项&#xff0c;每种选项都会影响响应数据的格式。 以下是这些选项及其示例&#xff1a; 1. responseType: json 这是默认选项&#xff0c;表示…

App测试分发的秘密:如何让你的应用程序快速上线

App测试分发的重要性 在移动应用程序的开发过程中&#xff0c;测试分发是一个非常重要的环节。它可以帮助开发者快速地将应用程序推广到目标用户手中&#xff0c;收集反馈&#xff0c;进行bug修复和优化&#xff0c;从而提高应用程序的质量和用户体验。但是&#xff0c;测试分…

创业团队如何选择DevOps工具?

极狐GitLab 正式推出 499/人/年的 SaaS 团队版&#xff0c;AI DevOps 专业技术服务支持&#xff0c;让软件研发效率起飞&#xff01;官网链接&#xff1a;https://dl.gitlab.cn/tfk6s7bh 首先要考虑创业团队关心的点&#xff0c;主要包括以下几个&#xff1a; 价格便宜 对于创…

Android分区管理工具sgdisk使用

#有时df -h查看分区信息无法满足需求# 借助Android系统自带的sgdisk可以查看详细的分区信息&#xff0c;类似fdisk命令&#xff0c;sgdisk同样可以创建分区&#xff0c;功能也很强大。 一、sgdisk帮助信息 127|console:/ # sgdisk USAGE: sgdisk [OPTION...] <device>…

linux脚本:自动检测的bash脚本,用于检查linux的系统性能

目录 一、要求 二、脚本介绍 1、脚本内容 2、解释 3、使用方法&#xff1a; &#xff08;1&#xff09;脚本文件 &#xff08;2&#xff09;赋予权限 &#xff08;3&#xff09;执行结果 三、相关命令介绍 1、top &#xff08;1&#xff09;定义 &#xff08;2&…

Layui修改表格分页为英文

Layui修改表格分页为英文 1.前言2.Laypage属性 1.前言 主要记录初次使用Layui没有好好看官方文档踩坑&#xff0c;修改了源码才发现可以自定义 使用的Layui版本2.9.14 2.Laypage属性 Laypage属性中带的有自定义文本的属性 示例代码 table.render({.......page: {skipText: …

【Python】numpy库中上难度例题4道+详解考察点(多维数组+多层嵌套循环)

题目一&#xff1a;灰度图像中识别并统计特定像素模式的出现次数 题目: 假设你正在开发一个图像处理算法&#xff0c;需要在一个较大的灰度图像中识别并统计特定像素模式的出现次数。给定一个大图像 large_image 和一个较小的模板图像 template&#xff0c;编写一个 Python 函…

2.4GHz射频前端集成芯片:AT2401C芯片中文资料

关于AT2401C的基本资料&#xff1a; AT2401C是一款面向Zigbee&#xff0c;无线传感网络以及其他2.4GHz频段无线系统的全集成射频功能的射频前端单芯片。 那么射频放大器的作用是什么&#xff1f;它是用来放大来自射频信号源的低功率信号&#xff0c;放大到较高的功率后&#xf…

7. 运行时数据区-栈

栈的分类 栈分为Java虚拟机栈还有本地方法栈&#xff1a; Java虚拟机栈&#xff1a;用于保存Java中的方法相关的内容本地方法栈&#xff1a;用于保存在Java中使用native 标记的用C来实现方法 由于hotspot的作者发现使用一个栈就可以保存以上两个部分的内容&#xff0c;所以在…