基于开源AI数据框架LlamaIndex构建上下文增强型LLA应用

引言

“将你的企业数据转化为可用于实际生产环境的LLM应用程序,”LlamaIndex主页用60号字体这样高亮显示。其副标题是“LlamaIndex是构建LLM应用程序的领先数据框架。”我不太确定它是否是业内领先的数据框架,但我认为它是一个与LangChain和Semantic Kernel一起构建大型语言模型应用的领先数据框架。

LlamaIndex目前提供两种开源语言框架和一个云端支持。一种开源语言是Python;另一种开源语言是TypeScript。LlamaCloud(目前处于个人预览版本)通过LlamaHub提供存储、检索、数据源链接,以及针对复杂文档的付费方式的专有解析服务LlamaParse,该服务也可作为独立服务提供。

LlamaIndex在加载数据、存储和索引数据、通过编排LLM工作流进行查询以及评估LLM应用程序的性能方面都具有优势。当前,LlamaIndex集成了40多个向量存储、40多个LLM和160多个数据源。其中,LlamaIndex Python代码存储库已获得超过30K的星级好评。

典型的LlamaIndex应用程序会执行问答、结构化提取、聊天或语义搜索,和/或充当代理。它们可以使用检索增强生成(RAG)技术将LLM与特定的数据源联系起来,这些源通常不包括在模型的原始训练集中。

显然,LlamaIndex框架将会与LangChain、Semantic Kernel和Haystack等框架展开市场竞争。不过,并非所有这些框架都有完全相同的应用范围和功能支持,但就流行程度而言,LangChain的Python代码仓库有超过80K的星级好评,几乎是LlamaIndex(超过30K的星级好评)的三倍,而相对最晚出现的Semantic Kernel已经获得超过18K的星级好评,略高于LlamaIndex的一半,Haystack的代码仓库有超过13K的星级好评。

上述好评结果是与代码仓库的年龄密切相关的,因为星级好评会随着时间的推移而积累;这也是为什么我用“超过”来修饰星级好评数的原因。GitHub上的星级好评数与历史进程中的流行度存在松散的相关性。

LlamaIndex、LangChain和Haystack都拥有许多大公司作为用户,其中一些公司使用了不止一个这样的框架。Semantic Kernel来自微软,除了案例研究之外,微软通常不会公布用户数据。

LlamaIndex框架可帮助你将数据、嵌入、LLM、向量数据库和求值连接到应用程序中。这些支持可以用于问答、结构化提取、聊天、语义搜索和代理等环境。

LlamaIndex框架的功能

从高层面来看,LlamaIndex框架的开发主旨在帮助你构建上下文增强的LLM应用程序,意味着你可以将自己的私有数据与大型语言模型相结合。上下文增强LLM应用程序的示例包括问答聊天机器人、文档理解和提取以及自动化代理等领域。

LlamaIndex提供的工具可执行数据加载、数据索引和存储、使用LLM查询数据以及评估LLM应用程序的性能:

  • 数据连接器从其本机源和格式中获取现有数据。
  • 数据索引,也称为嵌入,以中间表示形式构建数据。
  • 引擎提供对数据的自然语言访问。其中包括用于回答问题的查询引擎,以及用于与你的数据进行多消息对话的聊天引擎。
  • 代理是LLM驱动的知识工具,结合其他软件工具增强性能。
  • 可观察性/评估集成使你能够对应用程序进行实验、评估和监控。

上下文增强

LLM受过大量文本的训练,但不一定是关于你的领域的文本信息。当前,存在三种主要方法可以执行上下文增强并添加有关域的信息,即提供文档、执行RAG和微调模型。

首先,最简单的上下文扩充方法是将文档与查询一起提供给模型,为此你可能不需要LlamaIndex。除非文档的总大小大于你正在使用的模型的上下文窗口;否则,提供文档是可以正常工作的,这在最近还是一个常见的问题。现在,有了具有百万个标记上下文窗口的LLM,这可以使你在执行许多任务时避免继续下一步操作。如果你计划对一百万个标记语料库执行许多查询,那么需要对文档进行缓存处理;但是,这是另外一个待讨论的话题了。

检索增强生成在推理时将上下文与LLM相结合,通常与向量数据库相结合。RAG过程通常使用嵌入来限制长度并提高检索到的上下文的相关性,这既绕过了上下文窗口的限制,又增加了模型看到回答问题所需信息的概率。

从本质上讲,嵌入函数获取一个单词或短语,并将其映射到浮点数的向量;这些向量通常存储在支持向量搜索索引的数据库中。然后,检索步骤使用语义相似性搜索,通常使用查询嵌入和存储向量之间的角度的余弦,来找到“附近”的信息,以便在增强提示中使用。

微调LLM是一个有监督的学习过程,涉及到根据特定任务调整模型的参数。这是通过在一个较小的、特定于任务或特定于领域的数据集上训练模型来完成的,该数据集标有与目标任务相关的样本。使用许多服务器级GPU进行微调通常需要数小时或数天时间,并且需要数百或数千个标记的样本。

安装LlamaIndex

你可以通过三种方式安装Python版本的LlamaIndex:从GitHub存储库中的源代码,使用llama index starter安装,或者使用llama-index-core结合选定的集成组件。starter方式的安装如下所示:

pip install llama-index

除了LlamaIndex核心之外,这种安装方式还将安装OpenAI LLM和嵌入。注意,你需要提供OpenAI API密钥(请参阅链接https://platform.openai.com/docs/quickstart),然后才能运行使用这种安装方式的示例。LlamaIndex starter程序示例非常简单,基本上仅包含经过几个简单的设置步骤后的五行代码。在官方的代码仓库中还提供了更多的例子和有关参考文档。

进行自定义安装可能看起来像下面这样:

pip install llama-index-core llama-index-readers-file llama-index-llms-ollama llama-index-embeddings-huggingface

这将安装一个Ollama和Hugging Face嵌入的接口。此安装还提供一个本地starter级的示例。无论从哪种方式开始,你都可以使用pip添加更多的接口模块。

如果你更喜欢用JavaScript或TypeScript编写代码,那么你可以使用LlamaIndex.TS。TypeScript版本的一个优点是,你可以在StackBlitz上在线运行示例,而无需任何本地设置。不过,你仍然需要提供一个OpenAI API密钥。

LlamaCloud和LlamaParse

LlamaCloud是一个云服务,允许你上传、解析和索引文档,并使用LlamaIndex进行搜索。当前,该项服务仍处于个人alpha测试阶段,我无法访问它。

LlamaParse作为LlamaCloud的一个组件,允许你将PDF解析为结构化数据;它可以通过REST API、Python包和Web UI获得。这个组件目前处于公测阶段。在每周前7K页的免费试用之后,你可以注册使用LlamaParse,只需支付少量的使用费。官网上提供的有关针对苹果10K大小文件基础上的对于LlamaParse和PyPDF比较的例子令人印象深刻,但我自己没有测试过。

LlamaHub

LlamaHub让你可以访问LlamaIndex的大量集成,其中包括代理、回调、数据加载程序、嵌入以及大约17个其他类别。通常,这些集成内容位于LlamaIndex存储库、PyPI和NPM中,你可以使用pip-install或NPM-install加载使用。

create-llama CLI

create-lama是一个命令行工具,用于生成LlamaIndex应用程序。这是开始使用LlamaIndex的快速方法。生成的应用程序中包含一个Next.js驱动的前端和三种后端方案可供选择。

RAG-CLI

RAG CLI也是一个命令行工具,用于与LLM交流你在计算机上本地保存的文件。这只是LlamaIndex的众多使用场景案例之一,不过这种情况非常普遍。

LlamaIndex组件

LlamaIndex组件指南会为你提供有关LlamaIndex各个部分的具体帮助。下面的第一个屏幕截图显示了组件指南菜单。第二个显示了提示的组件指南,滚动到关于自定义提示的部分。

LlamaIndex组件指南记录了构成框架的不同部分,其中介绍了相当多的组件。

我们正在研究这种提示词的使用模式。这个特殊的例子展示了如何自定义问答提示,以莎士比亚戏剧的风格回答问题。值得注意的是,这是一个零样本提示,因为它没有提供任何示例。

学习LlamaIndex

一旦你阅读、理解并用你喜欢的编程语言(Python或TypeScript)运行了入门示例,我建议你尽可能多地阅读、理解和尝试其他看起来更有趣的一些示例。下面的屏幕截图显示了通过运行essay.ts并使用chatEngine.ts询问相关问题来生成一个名为essay的文件的结果。这是一个使用RAG进行问答的示例。

其中,chatEngine.ts程序使用LlamaIndex的ContextChatEngine、Document、Settings和VectorStoreIndex等组件。当我分析其源代码时,我看到它依赖于OpenAI gpt-3.5-turb-16k模型;这种情况可能会随着时间的推移而改变。如果我对文档的分析是正确的话,那么VectorStoreIndex模块使用了开源的、基于Rust的Qdrant向量数据库。

在用我的OpenAI密钥设置了终端环境后,我运行essay.ts来生成一个散文题材的文件,并运行chatEngine.ts来实现有关此文章的查询。

为LLM提供上下文

正如你所看到的,LlamaIndex非常容易用于创建LLM应用程序。我能够针对OpenAI LLM和RAG Q&A应用程序的文件数据源进行测试。值得注意的是,LlamaIndex集成了40多个向量存储、40多个LLM和160多个数据源;它适用于几种使用场景,包括Q&A问答、结构化提取、聊天、语义搜索和代理应用等。

最后,我建议你认真评估LlamaIndex与LangChain、Semantic Kernel和Haystack等框架。这其中的一个或多个很可能会满足你的需求。当然,我不能笼统地推荐其中某一个,因为不同的应用程序会有不同的要求。

LlamaIndex优点
  1. 帮助创建问答、结构化提取、聊天、语义搜索和代理等类型的LLM应用程序
  2. 支持Python和TypeScript
  3. 框架是免费和开源的
  4. 提供大量示例和集成组件
LlamaIndex不足
  1. 云环境仅限于私人预览
  2. 营销有点言过其实
LlamaIndex费用

开源:免费。

LlamaParse导入服务:每周免费支持7K页的文档,然后每1000页需要支付3美元。

平台支持

支持Python和TypeScript,以及云端SaaS(目前处于私人预览状态)。

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

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

相关文章

快行线冷链——创新仓配、共赢未来 主题沙龙在京成功举办

2024年7月7日下午,由京营建联盟、北京市大兴区餐饮行业协会、北京快行线冷链物流联合主办的“创新仓配,共赢未来——相信拥抱的力量”主题沙龙活动在北京篝野城市露营空间隆重举行。本次活动定向邀请了餐饮老板、餐饮企业供应链负责人及冻品经销商和相关…

电子电气架构 --- 智能座舱万物互联

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

C语言指针函数指针

跟着这篇文章重新理解了一下:彻底攻克C语言指针 有一个例子感觉可以拿出来看看: char *(*c[10])(int **p); * 这段声明定义了一个长度为10的数组c,数组中的每个元素都是指向函数的指针。每个函数接受一个类型为int **(指向指向…

拆分Transformer注意力,韩国团队让大模型解码提速20倍|大模型AI应用开始小规模稳步爆发|周伯文:大模型也有幻觉,全球AI创新指数公布

拆分Transformer注意力,韩国团队让大模型解码提速20倍AI正在颠覆AI上市不到两年,蜗牛游戏可能要退市了?世界人工智能大会结束了,百花齐放,但也群魔乱舞“串联OLED”被苹果带火了,比OLED强在哪里&#xff1f…

智能物联网鱼缸

硬件部分及接线图 工具 继电器、开发板、物联网os、云平台 微信小程序 结构&#xff1a;images、pages两个为主体。 标题头部分 <view class"container"> <view class"head_box"> <image src"/images/面性鱼缸.png"><…

【C++】 解决 C++ 语言报错:Invalid Use of Incomplete Type

文章目录 引言 在 C 编程中&#xff0c;“Invalid Use of Incomplete Type” 是一种常见错误。此错误通常在程序试图使用未完全定义的类或结构时发生。这种错误不仅会导致编译失败&#xff0c;还可能导致程序行为不可预测。本文将详细探讨无效使用不完整类型的成因、检测方法及…

【Threejs进阶教程-优化篇】4.Vue/React与threejs如何解决冲突和卡顿(续)

Vue/React与threejs如何解决冲突和卡顿-续 使用说明核心思路环境搭建(vuethree)vue运行机制分析业务分离使用threejs做背景 3D模块封装使用ES6的Class来让逻辑性更强Threejs尽量按需引入创建一个类扩展写法本次代码执行顺序 扩展内容添加orbitControls和辅助线解决事件覆盖 与V…

Java请求webService,IDEA生成客户端调用代码

Axis是Apache开放源代码组织的一个项目&#xff0c;全称为Apache Extensible Interaction System&#xff0c;简称Axis。它是一个基于Java的SOAP&#xff08;Simple Object Access Protocol&#xff0c;简单对象访问协议&#xff09;引擎&#xff0c;提供创建服务器端、客户端和…

LabVIEW的Actor Framework (AF) 结构介绍

LabVIEW的Actor Framework (AF) 是一种高级架构&#xff0c;用于开发并发、可扩展和模块化的应用程序。通过面向对象编程&#xff08;OOP&#xff09;和消息传递机制&#xff0c;AF结构实现了高效的任务管理和数据处理。其主要特点包括并发执行、动态可扩展性和强大的错误处理能…

ROS——多个海龟追踪一个海龟实验

目标 通过键盘控制一个海龟&#xff08;领航龟&#xff09;的移动&#xff0c;其余生成的海龟通过监听实现追踪定期获取领航龟和其余龟的坐标信息&#xff0c;通过广播告知其余龟&#xff0c;进行相应移动其余龟负责监听 疑惑点&#xff08;已解决&#xff09; int main(int…

程序员学长 | 快速学会一个算法,xLSTM

本文来源公众号“程序员学长”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;快速学会一个算法&#xff0c;xLSTM 今天给大家分享一个超强的算法模型&#xff0c;xLSTM。 xLSTM&#xff08;Extended Long Short-Term Memory&…

Spring Boot的无缝衔接:深入解析与实践

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ &#x1f680;The begin&#x1f697;点点关注&#xff0c;收藏不迷路&#x1f6a9; 引言 在快速迭代的软件开发环境中&#xff0c;无缝衔接是提升开发效率、降低维护成本、增强系统稳定性的关键。Spring Boo…

轻松上手MYSQL:MYSQL事务隔离级别的奇幻之旅

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》《MYSQL》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 ✨欢迎加入探索MYSQL索引数据结构之旅✨ &#x1f44b; 大家好&#xff01;文本学习…

【话题】IT专业入门,高考假期预习指南

IT专业入门&#xff0c;高考假期预习指南 亲爱的高考学子们&#xff0c; 七月的阳光&#xff0c;如同你们的梦想&#xff0c;炽热而明亮。当你们手中的笔落下最后一道题的答案&#xff0c;那不仅仅是对过去十二年寒窗苦读的告别&#xff0c;更是对未知世界探索的启程号角。你们…

ExtruOnt——为工业 4.0 系统描述制造机械类型的本体

概述 论文地址 &#xff1a;https://arxiv.org/abs/2401.11848 原文地址&#xff1a;https://ai-scholar.tech/articles/ontology/ExtruOnt 在工业 4.0 应用场景中&#xff0c;以机器可解释代码提供的、语义丰富的制造机械描述可以得到有效利用。然而&#xff0c;目前显然还缺…

【数智化人物展】天云数据CEO雷涛:大模型连接数据库 为数智化提供高价值数据...

雷涛 本文由天云数据CEO雷涛投递并参与由数据猿联合上海大数据联盟共同推出的《2024中国数智化转型升级先锋人物》榜单/奖项评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 这几天&#xff0c;奥特曼讲SQL数据库和大模型结合起来会产生什么样的化学变化引起行业关注。为…

大模型备案全网最详细流程【附附件】

本文要点&#xff1a;大模型备案最详细说明&#xff0c;大模型备案条件有哪些&#xff0c;《算法安全自评估报告》模板&#xff0c;大模型算法备案&#xff0c;大模型上线备案&#xff0c;生成式人工智能(大语言模型)安全评估要点&#xff0c;网信办大模型备案。 大模型备案安…

中国石油大学(华东)24计算机考研数据速览,计科学硕复试线288分!

中国石油大学&#xff08;华东&#xff09;计算机与通信工程学院是中国石油大学(华东)十三个教学院部之一&#xff0c;其前身是创建于1984年的计算机科学系&#xff0c;2001年撤系建院。伴随着学校50多年的风雨历程&#xff0c;计算机与通信工程学院也已经有了20多年的发展历史…

5.pwn Linux的延迟绑定机制

动态链接库 我们程序开发过程中都会用到系统函数&#xff0c;比如read&#xff0c;write&#xff0c;open等等 这些系统函数不需要我们实现&#xff0c;因为系统已经帮你完成这些工作&#xff0c;只需要调用即可&#xff0c;存放这些函数的库文件就是动态链接库。 通常情况下&…

[激光原理与应用-100]:南京科耐激光-激光焊接-焊中检测-智能制程监测系统IPM介绍 - 4 - 3C电池行业应用 - 不同的电池类型、焊接方式类型

目录 前言&#xff1a; 一、激光在3C行业的应用概述 1.1 概述 1.2 激光焊接在3C-电池行业的应用 1.3 动力电池的激光焊接工艺 1.3.1 概述 1.3.2 动力电池常见的焊接应用 1.电池壳体与盖板焊接 2.电池防爆阀密封 焊接 二、不同的电池的外形 2.1 软包锂电池 2.1.1 概述…