LlamaIndex:向 LLM 添加个人数据

news2024/11/25 16:40:07

LlamaIndex 是您构建基于 LLM 的应用程序的友好数据助手。您可以使用自然语言轻松地获取、管理和检索私有数据和特定领域的数据。

LlamaIndex 是一个针对大型语言模型 (LLM) 应用程序的数据框架。GPT-4 等 LLM 在海量的公共数据集上进行预训练,开箱即用即可实现令人难以置信的自然语言处理能力。然而,如果没有访问您自己的私有数据,它们的实用性就会受到限制。

LlamaIndex 允许您通过灵活的数据连接器从 API、数据库、PDF 等中提取数据。此数据被编入针对 LLM 优化的中间表示中。然后,LlamaIndex 允许通过查询引擎、聊天界面和 LLM 驱动的 data agent 对您的数据进行自然语言查询和对话。它使您的 LLM 能够访问和解释大规模的私有数据,而无需在较新的数据上重新训练模型。

无论您是初学者,正在寻找一种简单的方法来用自然语言查询您的数据,还是高级用户需要深度定制,LlamaIndex 都能提供相应的工具。高级 API 允许您仅使用五行程代码即可开始,而低级 API 允许您完全控制数据提取、索引、检索等。

LlamaIndex 如何工作?

LlamaIndex 使用检索增强生成 (RAG) 系统,该系统将大型语言模型与私有知识库相结合。它通常包括两个阶段:索引阶段和查询阶段。

Image_from_High_Level_Concepts_4f8738b077.png

索引阶段

在索引阶段,LlamaIndex 将有效地将私有数据编入向量索引。此步骤有助于创建特定于您域的可搜索知识库。您可以输入文本文档、数据库记录、知识图谱和其他数据类型。 从本质上讲,索引将数据转换为捕获其语义含义的数字向量或嵌入。它可以在内容中启用快速相似性搜索。

查询阶段

在查询阶段,RAG 管道根据用户的查询搜索最相关的信息。然后将此信息与查询一起提供给 LLM,以创建准确的响应。 此过程允许 LLM 访问其初始训练中可能未包含的当前和更新的信息。 在此阶段的主要挑战是检索、组织和推理潜在的多个知识库。

设置LlamaIndex

在我们深入研究LlamaIndex教程和项目之前,我们必须安装Python软件包并设置API。

我们可以简单地使用pip安装LlamaIndex。

pip install llama-index

默认情况下,LlamaIndex 使用 OpenAI GPT-3 text-davinci-003 模型。要使用此模型,您必须设置 OPENAI_API_KEY。

import os

os.environ["OPENAI_API_KEY"] = "INSERT OPENAI KEY"

此外,请确保已安装 openai 软件包。

pip install openai

使用 LlamaIndex 向 LLM 添加个人数据

在本节中,我们将学习如何使用 LlamaIndex 创建简历阅读器。您可以通过转到 Linkedin 个人资料页面、单击更多,然后保存为 PDF 来下载您的简历。

请注意,我们使用 DataCamp 工作区来运行 Python 代码。您可以在 LlamaIndex: 向 LLM 添加个人数据工作区中访问所有相关代码和输出。

在运行任何操作之前,我们必须安装 llama-index、openai 和 pypdf。我们正在安装 pypdf,以便我们可以读取和转换 PDF 文件。

pip install llama-index openai pypdf

加载数据并创建索引

我们有一个名为“Private-Data”的目录,其中仅包含一个 PDF 文件。我们将使用 SimpleDirectoryReader 读取它,然后使用 TreeIndex 将其转换为索引。

from llama_index import TreeIndex, SimpleDirectoryReader

resume = SimpleDirectoryReader("Private-Data").load_data()
new_index = TreeIndex.from_documents(resume)

运行查询

一旦数据被索引,你可以开始使用 as_query_engine() 提问。此函数使你能够询问有关文档中特定信息的问题,并在 OpenAI GPT-3 text-davinci-003 模型的帮助下收到相应的答复。

注意:你可以按照在 Python 教程中使用 GPT-3.5 和 GPT-4 通过 OpenAI API 在 DataCamp 工作区中设置 OpenAI API。

正如我们所看到的,LLM 模型准确地回答了查询。它搜索了索引并找到了相关信息。

query_engine = new_index.as_query_engine()
response = query_engine.query("When did Abid graduated?")
print(response)

Abid graduated in February 2014.

我们可以进一步了解认证。LlamaIndex 似乎已经全面了解了候选人,这对寻求特定人员的公司来说是有利的。

response = query_engine.query("What is the name of certification that Abid received?")
print(response)

Data Scientist Professional


保存和加载上下文

创建索引是一个耗时的过程。我们可以通过保存上下文来避免重新创建索引。默认情况下,以下命令会将索引存储保存在 ./storage 目录中。

new_index.storage_context.persist()


creating_an_index_5e775e343b.png

一旦完成,我们可以快速加载存储上下文并创建一个索引。

from llama_index import StorageContext, load_index_from_storage

storage_context = StorageContext.from_defaults(persist_dir="./storage")
index = load_index_from_storage(storage_context)


为了验证它是否正常工作,我们将向查询引擎询问简历中的问题。看来我们已经成功加载了上下文。

query_engine = index.as_query_engine()
response = query_engine.query("What is Abid's job title?")
print(response)


Abid's job title is Technical Writer.


聊天机器人

除了问答之外,我们还可以使用 LlamaIndex 创建一个个人聊天机器人。我们只需要使用 as_chat_engine() 函数初始化索引。 我们将提出一个简单的问题。

query_engine = index.as_chat_engine()
response = query_engine.chat("What is the job title of Abid in 2021?")
print(response)


Abid's job title in 2021 is Data Science Consultant.


并且在不提供附加语境的情况下,我们将询问后续问题。

response = query_engine.chat("What else did he do during that time?")
print(response)


In 2021, Abid worked as a Data Science Consultant for Guidepoint, a Writer for Towards Data Science and Towards AI, a Technical Writer for Machine Learning Mastery, an Ambassador for Deepnote, and a Technical Writer for Start It Up.


很明显,聊天引擎运行正常。

在构建语言应用程序后,时间表上的下一步是了解在云中使用大型语言模型 (LLM) 与在本地运行大型语言模型的利弊。这将帮助你确定哪种方法最适合你的需求。

使用 LlamaIndex 构建 Wiki 文本转语音

我们的下一个项目涉及开发一个可以回答来自维基百科的问题并将其转换为语音的应用程序。 代码源和附加信息可在以下 DataCamp Workspace 中获得。

网络抓取维基百科页面

首先,我们将从意大利 - 维基百科网页中抓取数据,并将其保存为 data 文件夹中的 italy_text.txt 文件。

from pathlib import Path

import requests

response = requests.get(
    "https://en.wikipedia.org/w/api.php",
    params={
        "action": "query",
        "format": "json",
        "titles": "Italy",
        "prop": "extracts",
        # 'exintro': True,
        "explaintext": True,
    },
).json()
page = next(iter(response["query"]["pages"].values()))
italy_text = page["extract"]

data_path = Path("data")

if not data_path.exists():
    Path.mkdir(data_path)

with open("data/italy_text.txt", "w") as fp:
    fp.write(italy_text)


加载数据并构建索引

接下来,我们需要安装必要的软件包。elevenlabs 软件包允许我们使用 API 轻松地将文本转换为语音。

pip install llama-index openai elevenlabs


通过使用 SimpleDirectoryReader,我们将加载数据,并使用 VectorStoreIndex 将 TXT 文件转换为矢量存储。

from llama_index import VectorStoreIndex, SimpleDirectoryReader
from IPython.display import Markdown, display
from llama_index.tts import ElevenLabsTTS
from IPython.display import Audio

documents = SimpleDirectoryReader("data").load_data()
index = VectorStoreIndex.from_documents(documents)


查询

我们的计划是询问有关该国家/地区的一般性问题,并从 LLM query_engine 接收响应。

query = "Tell me an interesting fact about the country?"
query_engine = index.as_query_engine()
response = query_engine.query(query)

display(Markdown(f"<b>{query}</b>"))
display(Markdown(f"<p>{response}</p>"))


文本转语音

之后,我们将使用 llama_index.tts 模块来访问 ElevenLabsTTS api。你需要提供 ElevenLabs API 密钥来启动音频生成功能。你可以在 ElevenLabs 网站上免费获取一个 API 密钥。

import os

elevenlabs_key = os.environ["ElevenLabs_key"]
tts = ElevenLabsTTS(api_key=elevenlabs_key)


我们将添加对 generate_audio 函数的响应以生成自然语音。要收听音频,我们将使用 IPython.display 的 Audio 函数。

audio = tts.generate_audio(str(response))
Audio(audio)


这是一个简单的例子。你可以使用多个模块来创建你的助手,比如 Siri,它可以通过解释你的私人数据来回答你的问题。有关更多信息,请参阅 LlamaIndex 文档。 除了 LlamaIndex,LangChain 还允许你构建基于 LLM 的应用程序。此外,你可以阅读《LangChain 数据工程和数据应用程序简介》来了解你可以使用 LangChain 做什么,包括 LangChain 解决的问题和数据用例示例。

LlamaIndex 用例

LlamaIndex 提供了一套完整的工具包,用于构建基于语言的应用程序。最重要的是,您可以使用 Llama Hub 中的各种数据加载器和代理工具来开发具有多种功能的复杂应用程序。 您可以使用一个或多个插件数据加载器将自定义数据源连接到您的 LLM。

简而言之,你可以使用 LlamaIndex 来构建:

  • 文档问答
  • 聊天机器人
  • 代理
  • 结构化数据
  • 全栈 Web 应用程序
  • 私有设置 如需详细了解这些用例,请前往 LlamaIndex 文档。

结论

LlamaIndex 提供了一个功能强大的工具包,用于构建检索增强生成系统,该系统将大型语言模型的优势与自定义知识库相结合。它能够创建特定于领域的索引数据存储,并在推理期间利用它,为 LLM 提供相关上下文,以生成高质量的响应。

在本教程中,我们了解了 LlamaIndex 及其工作原理。此外,我们仅使用几行 Python 代码构建了一个简历阅读器和文本转语音项目。使用 LlamaIndex 创建 LLM 应用程序非常简单,它提供了大量的插件、数据加载器和代理。

如何学习AI大模型?

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

在这里插入图片描述

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

在这里插入图片描述

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

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

相关文章

微凌客旅游管理系统uniapp源码搭建教程

一.搭建教程环境 系统环境&#xff1a;CentOS、 运行环境&#xff1a;宝塔 Linux 网站环境&#xff1a;Nginx 1.15.10 MySQL 5.6.46 PHP-7.1-7.3 常见插件&#xff1a;fileinfo &#xff1b; redis 三.系统搭建图片

优化算法|自适应大邻域搜索算法及MATLAB代码实现

回来填坑了&#xff0c;本篇推文将详细讲解ALNS算法求解VRP问题及MATLAB代码实现。 算法介绍 节约算法构造初始解 function routessaving_init(DistMatrix, Demand, Cap) C_EPS1e-1;Nsize(DistMatrix,1); routescell(numel(2:N),1); for i1:numel(routes) % 每个节点单独一条…

c生万物系列(继承)

上一节笔者用宏和文件模拟了封装&#xff0c;这一节笔者继续使用c语言模拟继承。 简单介绍就是&#xff1a;在结构体里面重新定义需要继承的结构体。 调用时&#xff0c;使用&obvir,可以想象我们定义数组*p&#xff0c;p表示该数组第一个成员&#xff0c;这是因为结构体声…

【教程】vscode添加powershell7终端

win10自带的 powershell 是1.0版本的&#xff0c;太老了&#xff0c;更换为powershell7后&#xff0c;在 vscode 的集成终端中没有显示本篇教程记录在vscode添加powershell7终端的过程 打开vscode终端配置 然后来到这个页面进行设置 查看 powershell7 的安装位置&#xff…

【计算机毕业设计】869渔具在线销售网站

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

【调色板软件】免费、开源的调色板软件,焰火十二卷,提供了多种功能来生成一组调和色彩NO.108

本文一共:316 个字,需要阅读:1 分钟,更新时间:2024年7 月27日,部分内容具有时效性,如有失效请留言,阅读量:0 使用平台&#xff1a; Windows/macOS/CentOS/Ubuntu 由于我不是很懂&#xff0c;有需要的人自己摸索吧 资源来源于网络&#xff0c;免费分享仅供学习和测试使用&…

秒懂C++之string类(下)

目录 一.接口说明 1.1 erase 1.2 replace&#xff08;最好别用&#xff09; 1.3 find 1.4 substr 1.5 rfind 1.6 find_first_of 1.7 find_last_of 二.string类的模拟实现 2.1 构造 2.2 无参构造 2.3 析构 2.4.【】运算符 2.5 迭代器 2.6 打印 2.7 reserve扩容 …

Linux嵌入式学习——数据结构——概念和Seqlist

数据结构 相互之间存在一种或多种特定关系的数据元素的集合。 逻辑结构 集合&#xff0c;所有数据在同一个集合中&#xff0c;关系平等。 线性&#xff0c;数据和数据之间是一对一的关系。数组就是线性表的一种。 树&#xff0c; 一对多 图&#xff0c;多对多 …

金螳螂家整装新品GH7隆重发布:引领家居美学新风尚,重塑性价比标杆

近日&#xff0c;家装行业知名品牌金螳螂家隆重发布高端性价比数智整装新品——GH7&#xff0c;一款集设计美学、极致性价比与高度确定性于一身的产品&#xff0c;旨在为中国有改善型需求的家庭带来前所未有的家居生活体验。 以用户需求为核心&#xff0c;重塑家装设计新高度 …

Harmony学习(三)

1.模版字符串 let name:string 模版字符串 let age:number 18 console.log(字符串:,${name}和${age})2.字符串和数字互相转换 //字符串转数字 let str1:string 1.1 console.log(转换,Number(str1)) //output: 1.1 console.log(转换,parseInt(str1)) //output: 1 conso…

线上环境服务器CPU飙升排查

前因 收到线上服务器CPU使用率100%的告警信息。 环境 jdk1.8CentOS Linux &#xff1b;CentOS Linux 排查 查看服务器CPU使用率 果然cpu已经达到了100%了 命令 top 使用arthas工具 使用方式 arthas 执行命令java -jar arthas-boot.jar 然后执行命令 thread 看到有两个…

《如何找到自己想做的事》

Arouse Enthusiasm, Give Scope to Skill, Explore The Essence *摘其两纸 我喜欢打篮球&#xff0c;并不是我真的喜欢这项运动&#xff0c;而是我喜欢团队竞技。我喜欢看书&#xff0c;并不是我真喜欢阅读&#xff0c;而是我想要了解世界运行逻辑。寻找热爱&#xff0c;探寻本…

旅游城市晚高峰延长2小时见证消费新活力 啤酒节滴滴打车需求上涨超300%

进入盛夏&#xff0c;各地夜生活“花式上新”&#xff0c;夜间出行链接夜食、夜游、夜购等多元消费业态&#xff0c;激发经济活力。滴滴出行数据显示&#xff0c;7月以来&#xff0c;哈尔滨、珠海、贵阳、西安等多个城市打车晚高峰延长2小时以上。 22点后打车需求上涨最高 “夜…

使用阿里云云主机通过nginx搭建文件服务器

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、准备基础环境二、安装配置nginx三、阿里云安全组配置安全组配置 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/4ee96f38312e4771938e40f463987…

【Java Bean 映射器】通过 MapStruct 和 BeanUtils 拷贝对象的区别

目录 &#x1f44b;前言 &#x1f440;一、环境准备 &#x1f331;二、拷贝工具使用 2.1 BeanUtils 使用 2.2 MapStruct 使用 &#x1f49e;️三、对比 &#x1f4eb;四、章末 &#x1f44b;前言 小伙伴们大家好&#xff0c;最近在一些技术文章中看到了开发时经常接触的对…

小论文写不出来?一文告别没思路!SCI级新算法闪耀登场,完整代码及应用直接获取

最近稍微有点忙&#xff0c;事情比较多&#xff0c;构思灵感花费了不少时间。这次发布的算法和前几个基于数学基本思想开发的算法不一样&#xff0c;是一种基于动物的一种算法&#xff0c;从动物的本能和行为中汲取灵感。本算法的开发&#xff0c;灵感撰写以及完整的算法已经全…

【“微软蓝屏”事件暴露了网络安全哪些问题?】建设安全稳固的网络基础设施

目录 前言一、软件更新流程中的风险管理和质量控制机制&#xff08;一&#xff09;测试流程及风险识别&#xff08;二&#xff09;风险管理策略&#xff08;三&#xff09;质量控制措施 二、预防类似大规模故障的最佳方案或应急响应对策&#xff08;一&#xff09;冗余系统设计…

0722_驱动1 字符设备驱动框架

一、字符设备驱动框架 字符设备驱动按照字节流进行访问&#xff0c;并且只能顺序访问 设备号一共有32位&#xff0c;主设备号&#xff08;高12位&#xff09;次设备号&#xff08;低20位&#xff09; 二、注册/注销字符设备驱动API接口 2.1、注册字符设备驱动(入口) #include &…

小白学习webgis的详细路线

推荐打开boss直聘搜索相关岗位&#xff0c;查看岗位要求&#xff0c;对症下药是最快的。 第一阶段&#xff1a;基础知识准备 计算机基础 操作系统&#xff1a;理解Windows、Linux或macOS等操作系统的基本操作&#xff0c;学会使用命令行界面。网络基础&#xff1a;掌握TCP/I…

【netty系列-05】深入理解直接内存与零拷贝

Netty系列整体栏目 内容链接地址【一】深入理解网络通信基本原理和tcp/ip协议https://zhenghuisheng.blog.csdn.net/article/details/136359640【二】深入理解Socket本质和BIOhttps://zhenghuisheng.blog.csdn.net/article/details/136549478【三】深入理解NIO的基本原理和底层…