LlamaIndex 联合创始人下场揭秘:如何使用私有数据提升 LLM 的能力?

news2024/11/19 2:34:19

ChatGPT 的爆火证明了大型语言模型(LLM)在生成知识和推理方面的能力。不过,ChatGPT 是使用公共数据集进行预训练的模型,因此可能无法提供与用户业务相关的特定答案或结果。

那么,如何使用私有数据最大化发挥 LLM 的能力?LlamaIndex 可以解决这一问题。LlamaIndex 是一个简单、灵活、集中的接口,可用于连接外部数据和 LLMs。

近期,Zilliz 与 LlamaIndex 梦幻联动,举办了一次干货满满的网络研讨会。会上,LlamaIndex 的联合创始人兼首席执行官 Jerry Liu 向大家介绍了如何使用 LlamaIndex 通过私有数据提升 LLM 能力。

LlamaIndex:使用私有数据增强 LLM 的神器

“如何使用私有数据增强 LLM”是困扰许多 LLM 开发者的一大难题。在网络研讨会中,Jerry 提出了两种方法:微调和上下文学习。

所谓“微调”是指使用私有数据重新训练网络,但这个方案成本高昂,缺乏透明度,且这种方法可能只在某些情况下才有效。另一种方法是上下文学习。“上下文学习”是指将预训练模型、外部知识和检索模型相结合。这样开发者就能在输入 prompt 的过程中添加上下文。不过,结合检索和内容生成,检索上下文、管理海量源数据方面都会让整个过程显得困难重重,LlamaIndex 系列工具正好可以解决这些问题。

开源工具 LlamaIndex 能够为 LLM 应用提供中央数据管理和查询接口。LlamaIndex 系列工具主要包含三个组件:

  • 数据连接器——用于接收各种来源的数据。

  • 数据索引——用于为不同应用场景调整数据结构。

  • 查询接口——用于输入 prompt 和接收经过知识扩展后生成的结果。

alt |LlamaIndex 的三个主要组件

LlamaIndex 也是开发 LLM 应用的重要工具。它像一个黑匣子,接收详细的查询描述,返回相应回答和丰富的参考资料。LlamaIndex 还可以管理语言模型和私有数据之间的应用集成,从而提供准确的结果。

alt |整个应用流程中的LlamaIndex

LlamaIndex VS 向量检索

LlamaIndex 向量索引的工作原理

LlamaIndex 支持各种索引,包括列表索引、向量索引、树索引和关键字索引。Jerry 在网络研讨会中以向量索引为例,展示了 LlamaIndex 索引的工作原理。向量索引是一种常见的检索和数据整合模式,它能将向量存储库与语言模型进行配对。LlamaIndex 向量索引先接收一组源文档数据,将文档切分成文本片段,并将这些片段存入内置的向量存储库里,每个片段都有相应的向量与之对应。当用户进行查询时,查询问题先转化为向量,然后在向量存储系统中检索 top-k 最相似的向量数据。后续,这些检索出来的相似向量数据将在相应合成模块中用于生成结果。

alt |LlamaIndex 接收数据

alt |通过向量存储系统查询

对于在 LLM 应用中引入相似性检索有刚需的用户而言,向量存储系统的索引是最好的选择。这种索引类型非常适合语义相似性检索,因为它可以比较不同文本。例如,向量存储索引适合搭建问答机器人,回答各种关于特定开源项目的问题(参考 OSSChat)。

集成 Milvus 和 LlamaIndex

LlamaIndex 集成十分多样且轻量。在本次网络研讨会中,Jerry 强调了 Milvus 和 LlamaIndex 的集成(参考:https://milvus.io/docs/integrate_with_llama.md)。

开源向量数据库 Milvus 可以处理数百万、数十亿甚至数万亿规模的向量数据集。在这个集成中,Milvus 承担了后端向量库的角色,用来存储文本片段和向量。集成 Milvus 和 LlamaIndex 也十分简单——仅需输入几个参数,在向量存储环节中加入 Milvus,通过查询引擎便可获得问题答案。

当然,作为提供全托管云原生 Milvus 服务的 Zilliz Cloud 同样支持集成 LlamaIndex

LlamaIndex 应用案例

在网络研讨会中,Jerry 还分享了许多 LlamaIndex 的典型应用场景,包括:

  • 语义搜索

  • 总结归纳

  • 文本转化为 SQL 结构化数据

  • 合成异构数据

  • 比较/对比查询

  • 多步骤查询

更多用例详情,可以点击观看视频讲解。

精彩问答集锦

  1. 如何看待 OpenAI 的插件?如何使用 OpenAI 插件与 LlamaIndex 协同合作?

Jerry Liu: 这是个好问题。一方面,我们其实就是 OpenAI 的插件之一,可以被任何外部代理调用,无论是 ChatGPT 还是 LangChain,任何外部代理都可以调用我们。客户端代理将一个输入请求发送给我们,我们以最佳的方式执行。比如,在 ChatGPT 的 chatgpt-retrieval-plugin 仓库里就可以找到我们的插件。另一方面,从客户端的角度而言,我们支持与任何软件服务集成,只要这个服务是 [chatgpt-retrieval-plugin] 插件。

  1. 您提到了性能和延迟方面的 tradeoff。在这一方面,你们遇到过哪些瓶颈或挑战?

Jerry Liu: 如果上下文更丰富、文本块更大,延迟也会更高。有人认为文本块越大,生成的结果越准确,也有人持怀疑态度。总之,文本块大小是否影响性能结果还存在争议。

GPT-4 在处理提供更多上下文的问题时就比 GPT-3 的表现要好。但总的来说,我认为文本块大小和性能结果还是正相关的。另一个权衡是任何高级 LLM 系统都需要用链式方法进行调用,这样一来执行所需时间也会变长。

  1. 如果使用外部模型来执行查询,传输私有数据是否安全?

Jerry Liu: 这取决于使用的 API 服务。例如,OpenAI 不会使用 API 数据来训练或者优化其模型。但一些企业仍然会担心 OpenAI 向第三方发送敏感数据。因此,我们最近新增了 PII 模块来应对这一问题。还有一种解决方法就是使用本地模型。

  1. 以下两种方法的优缺点分别是什么?方法一:在 LlamaIndex 上加载数据和建索引之前,利用如 Milvus 之类的向量数据库进行相似性检索和图索引优化。方法二:使用 LlamaIndex 原生的 vector store 集成?

Jerry Liu: 两种方法都可以。我们正在计划整合这两种方法。敬请期待。

如果使用 Milvus 加载数据,用户可以在现有数据上使用 LlamaIndex。如果使用 LlamaIndex 中由 Milvus 提供的向量索引,我们会根据现有数据,重新定义数据结构。前者的好处是用户可以直接使用现有数据,后者的好处是可以定义元数据。

  1. 我需要在本地分析大约 6,000 个 PDF 和 PowerPoint 文件。如果不使用 OpenAI 和 LlamaIndex 的 llama65b 模型,我如何才能获取最佳分析结果?

Jerry Liu: 如果你可以接受 Llama 的许可证,那我还是建议尝试使用 Llama。

点击查看 GitHub 上的开源模型。

🌟【特别提醒】为了让用户更丝滑地使用 Zilliz Cloud,我们也将于今年 6 月底登陆阿里云,与其他几朵云的合作也已提上日程,敬请期待!


  • 如果在使用 Milvus 或Zilliz 产品有任何问题,可添加小助手微信 “zilliz-tech” 加入交流群 ​
  • 欢迎关注微信公众号“Zilliz”,了解最新资讯。 ​ alt

本文由 mdnice 多平台发布

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

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

相关文章

SpringMVC第三阶段:源码解析SpringMVC如何调用Controller目标方法

源码解析SpringMVC如何调用Controller目标方法: 浏览器如何访问到Controller目标方法. 1、所有请求进入时候,会先进入org.springframework.web.servlet.DispatcherServlet前端控制器的doDispatch() 方法 2 、在 1016 行 getHandler() 方法中,会通过请求的资源路径…

【51单片机】万年历功能的数字时钟+倒计时 Proteus仿真 普中板子可用

// 硬件:DS1302、按键、LCD1602、无源蜂鸣器 // 1、具有万年历功能的数字时钟 (本世纪100年通用),能够正确的显示年、月、日、时、分、秒 // 2、按键设置时间(校时) // 3、24小时内至少可设置3个闹钟,并具有不同的闹钟铃声。每个闹钟可以选择…

[链表OJ题 7] 环形链表

目录 题目来源: 代码实现: 思路分析: 实现过程: 题目来源: 力扣 141. 环形链表 题目描述 代码实现: bool hasCycle(struct ListNode* head) {struct ListNode* fast head, * slow head;while (fas…

为什么更新了 DNS 记录不生效?

我们在上网时如果想要访问到另一台机器上的内容,通常只需要直接输入一串地址,例如:www.upyun.com,就能够准确访问到自己想要访问的网站。但是实际上这只是方便我们记忆的字符形式网络标识,真正让我们的机器和另一台机器…

C语言深度解析--函数

函数 函数的定义: 函数,又称为子程序,是一个大型程序中的某部分代码,由一个或多个语句块组成。它负责完成某项特定任务,而且相较于其他代码,具备相对独立性。 一般会有输入参数并有返回值,提供…

关于江苏专转本的十大真相,值得一看

【真相1】专转本考试题主要是大学相关科目的骨干老师出的。他们较长时间从事相应课程教学,专业领域较宽,学术造诣较高。具有副高及以上职称,年龄—般在55周岁以下。VX:hhkb5200【真相2】专转本考试题"紧扣《考试大纲》,大家要…

C++11 新特性

文章目录 🍪统一列表初始化🍪左值引用,右值引用🥛概念和作用🥛使用场景 🍪完美转发🍪可变参数模板 C11是C的一次大更新,出现了很多实用的语法和特性,所以我们很有必要学习…

[网络安全]DVWA之XSS(Stored)攻击姿势及解题详析合集

[网络安全]DVWA之XSS(Stored)攻击姿势及解题详析合集 XSS(Stored)-low level源代码姿势基于Message板块基于Name板块 XSS(Stored)-medium level源代码姿势双写绕过大小写绕过Xss标签绕过 XSS(Stored)-high level源代码姿势:Xss标签绕过 XSS(S…

汇编学习教程:灵活寻址(四)

引言 在上篇博文中,我们学习了 [bxsi] 的灵活寻址形式,由此讲解了汇编中的多重循环实现。那么本篇博文中,我们将继续学习灵活寻址其他实现形式。 本次学习从一道编程案例开始学起。 编程示例如下: assume cs:code,ds:datadata…

【Jmeter第二章】将Jmeter界面切换为中文显示

1、Jmeter临时切换为中文显示 注意:上面的配置只能保证本次运行是中文,如果要永久中文,需要修改Jmeter的配置文件 2、通过修改Jmeter配置文件设置为中文显示 1、在 Jmeter/bin目录下,找到:jmeter.properties 文件 2…

K_A39_012 基于STM32驱动W25Q32 模块读写数据 串口+OLED0.96显示

K_A39_012 基于STM32驱动W25Q32 模块读写数据 串口OLED0.96显示 所有资源导航一、资源说明二、基本参数参数引脚说明 三、驱动说明时序对应程序: 四、部分代码说明1、接线引脚定义1.2、STM32F103C8T6W25Q32 模块 五、基础知识学习与相关资料下载六、视频效果展示与程序资料获取…

LeetCode 429. N 叉树的层序遍历

429. N 叉树的层序遍历 描述 给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。 树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。 示例 示例1 输入&…

货拉拉Java开发实习

目录 1.Java的重载和重写有什么区别2.什么情况下需要用到重载3.有很多个字符串和变量,需要把它们加起来,这时候用String会有什么问题4.有没有其它的替代方案5.StringBuffer和StringBuilder有什么区别6.一个自定义对象,分别创建了两个实例&…

5分钟梳理银行测试,文末附带实战项目

很多银行招聘都要求有相关从业经验,这对于想跨入这个岗位的0经验从业同学可真犯了难 “你都不让我上岗,我哪来的工作经验呢?” 为了解决这个问题,小柠檬整理了本篇文章,从3个方面介绍银行项目是如何进行测试的 银行…

springboot---IoC 和 AOP

目录 引语IoC传统开发模式的弊端控制反转和依赖注入 AOP面向对象的局限性面向切面编程 总结 引语 Inversion of Control,缩写为IoC:控制反转 Aspect-oriented programming,缩写为AOP:面向切面编程 IoC和AOP是spring框架最核心的…

VMware Workstation 与 Device/Credential Guard 不兼容.在禁用 Device/Credenti

这个时候我们需要去关掉几个功能 1、关闭Hyper-V 打开控制面板首页,找到“程序”,然后找到“启用或关闭Windows功能”,找到“Hyper-V”,有勾中的全部都取消掉,如果这一步操作失败,不要紧,继续…

使用马哈鱼SQLFlow分析聚合函数中的数据流列

聚合函数通常将列作为参数,在本文中,我们将讨论在用作函数参数的列和聚合函数之间创建什么样的数据流。 1. COUNT() COUNT()可以采用COUNT(),也可以采用任何列名,甚至可以采用空参数。如果参数为空或为列,则参数和函…

DatenLord前沿技术分享 No.25

达坦科技专注于打造新一代开源跨云存储平台DatenLord,通过软硬件深度融合的方式打通云云壁垒,致力于解决多云架构、多数据中心场景下异构存储、数据统一管理需求等问题,以满足不同行业客户对海量数据跨云、跨数据中心高性能访问的需求。在本周…

【已解决】使用Arduino调试ARM时编译错误error: ordered comparison of pointer with integer zero的解决方法

在使用Arduino的资源库对STM32编程时,出现: error: ordered comparison of pointer with integer zero (byte* {aka unsigned char*} and int) 编译错误的解决方法。 Arduino因其开源和易用性,丰富的三方资源,受到很多人的喜欢…

Android无线调试

1、首先在系统环境变量——》新建——》"ANDROID_ADB_SERVER_PORT",值:手机的端口号 2、通过adb kill-server,adb start-server,重启abd 3、最后使用:adb connect ip:port(如:192.16…