LlamaIndex:向 LLM 添加个人数据

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 osos.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, SimpleDirectoryReaderresume = 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_storagestorage_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 Pathimport requestsresponse = 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 Audiodocuments = 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 oselevenlabs_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://xiahunao.cn/news/3270043.html

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

相关文章

【.NET 6 实战--孢子记账--从单体到微服务】--开发环境设置

在这一小节&#xff0c;我们将设置开发环境。 一、安装SDK 咱们的项目使用的是 .NET6&#xff0c;开发前我们需要从官网上下载.NET6 SDK&#xff08;点击下载&#xff09;&#xff0c;这里要注意的是我们需要下载.NET6 SDK&#xff0c;而不是 .NET6 Runtiem 。SDK 包含 Runti…

PyCharm 常用 的插件

Material Theme UI Lite&#xff1a;‌提供多种不同的页面风格&#xff0c;‌为PyCharm界面增添个性化元素。‌Chinese (Simplified) Language Pack&#xff1a;‌为中文用户提供简体中文的界面、‌菜单、‌提示信息&#xff0c;‌提升使用体验。‌Tabnine&#xff1a;‌基于人…

C# 开发监控方法执行耗时

MethodTimer.Fody 是一个功能强大的库,可以用于测量 .NET 应用程序中的方法的执行时间。允许你在不修改代码的情况下,自动地测量和记录方法的执行时间。 这个工具是基于.NET的 weaving 技术,通过修改IL(Intermediate Language,中间语言)代码来插入计时逻辑,从而在方法调…

Mac应用快速启动器:Alfred 5 for Mac 激活版

Alfred 5 是一款专为 macOS 系统设计的效率提升工具。这款软件以其快速启动和高效操作功能著称&#xff0c;通过使用快捷键来呼出输入界面&#xff0c;用户可以快速完成各种任务。 最新版本 Alfred 5.5 引入了一些新功能。其中包括整合了 ChatGPT 和 DALL-E&#xff0c;这意味…

ROS2入门到精通—— 2-13 ROS2实战:实现机器人多目标点导航(附ROS C++代码以及脚本实现)

0 前言 实现机器人多目标点导航是非常常见的需求,本文将介绍ROS2和Shell脚本两个方法实现多目标点导航,读者可以根据需求对接仿真和实车。 1 yaml-cpp介绍 YAML是专门用来写配置文件的语言,实质上是一种通用的数据串行化格式 1.1 yaml-cpp安装 git clone https://github…

kail-linux如何使用NAT连接修改静态IP

1、Contos修改静态IP vi /etc/sysconfig/network-scripts/ifcfg-ens33&#xff0c; 标记红色处可能序号会变动 参考linux配置网络不通解决方案_kylinv10sp2 网关不通-CSDN博客https://tanrt06.blog.csdn.net/article/details/132430485?spm1001.2014.3001.5502 Kail时候NAT连…

Java SE 文件上传和文件下载的底层原理

1. Java SE 文件上传和文件下载的底层原理 文章目录 1. Java SE 文件上传和文件下载的底层原理2. 文件上传2.1 文件上传应用实例2.2 文件上传注意事项和细节 3. 文件下载3.1 文件下载应用实例3.2 文件下载注意事项和细节 4. 总结&#xff1a;5. 最后: 2. 文件上传 文件的上传和…

ElasticSearch(三)—文档字段参数设置以及元字段

一、 字段参数设置 analyzer&#xff1a; 指定分词器。elasticsearch 是一款支持全文检索的分布式存储系统&#xff0c;对于 text类型的字段&#xff0c;首先会使用分词器进行分词&#xff0c;然后将分词后的词根一个一个存储在倒排索引中&#xff0c;后续查询主要是针对词根…

模拟实现c++中的vector模版

目录 一vector简述&#xff1a; 二vector的一些接口函数&#xff1a; 1初始化&#xff1a; 2.vector增长&#xff1a; 3vector增删查改&#xff1a; 三vector模拟实现部分主要函数&#xff1a; 1.size,capacity,empty,clear接口&#xff1a; 2.reverse的实现&#xff1…

springboot招生宣传管理系统论文源码调试讲解

2 相关技术 2.1 VUE介绍 Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是&#xff0c;Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c;还便于与第三方库或既有项目…

Github 2024-07-27开源项目日报 Top10

根据Github Trendings的统计,今日(2024-07-27统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量非开发语言项目2C++项目2C项目2TypeScript项目1JavaScript项目1Java项目1Python项目1C#项目1免费编程学习平台:freeCodeCamp.org 创建周期:33…

SpringBoot入门实战:SpringBoot整合Shiro

1.背景介绍 SpringBoot是一个用于快速开发Spring应用程序的框架。它的核心是对Spring框架的一层封装&#xff0c;使其更加简单易用。SpringBoot整合Shiro是一种将SpringBoot与Shiro整合的方法&#xff0c;以实现身份验证和授权功能。 Shiro是一个强大的Java安全框架&#xff0c…

电影院售票网站

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SSM框架 工具&#xff1a;IDEA/Eclipse、Navicat、Maven 系统展示 首页 用户管理界面 正在上映管…

正则表达式 先行/后发断言

参考资料 正则表达式的先行断言(lookahead)和后行断言(lookbehind)正则表达式中分组功能高级用法前瞻断言与后瞻断言初心者歓迎&#xff01;手と目で覚える正規表現入門・その&#xff14;&#xff08;最終回&#xff09;「中級者テクニックをマスターしよう」 目录 一. Posit…

AmyloidPETNet:使用端到端深度学习对脑PET成像中的淀粉样阳性进行分类| 文献速递-AI辅助的放射影像疾病诊断

Title 题目 AmyloidPETNet: Classification of Amyloid Positivity in Brain PET Imaging Using End-to-End Deep Learning AmyloidPETNet&#xff1a;使用端到端深度学习对脑PET成像中的淀粉样阳性进行分类 01 文献速递介绍 阿尔茨海默病 (AD) 的一个病理异常是脑内淀粉样…

JavaScript——常用库

文章目录 绪论jQuery选择器事件修改 css查找ajax setTimeout与setIntervalsetTimeoutsetInterval requestAnimationFrameMap与SetlocalStorageJSONDateWebSocketwindowcanvas结语 绪论 『时间是伟大的作家&#xff0c;总会写下完美的结局。』—— 「秋之回忆」 jQuery 这个是优…

AI绘画:艺术与科技融合的新篇章

随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;AI绘画作为一种新兴的艺术形式&#xff0c;正逐步改变着传统艺术创作的格局。从早期的简单模仿到如今的个性化创作&#xff0c;AI绘画不仅提升了艺术创作的效率和质量&#xff0c;还开辟了全新的应用场景和商…

sizeof和strlen区别

如图&#xff0c;sizeof来计算的时候&#xff0c;得出的是计算机用多少个字节来表示一个地址 而strlen来计算的时候&#xff0c;只是计算出他的有效字符长度 打印出的不同地址就是其不同的区别

【深海王国】小学生都能玩的单片机!番外1:Arduino家族Uno-Mega-Nano-Pro Mini-ATtiny85的使用指南(3)

Hi٩(๑ ^ o ^ ๑)۶, 各位深海王国的同志们&#xff0c;早上下午晚上凌晨好呀~辛勤工作的你今天也辛苦啦 (o゜▽゜)o☆ 今天大都督继续为大家带来单片机的番外系列——小学生都能玩的单片机&#xff01;番外1带你快速学习认识Arduino家族&#xff1a;Uno、Mega、Nano、Pro Mi…

Java小抄|使用StopWatch输出执行耗时

文章目录 背景常用接口定义demo1 统计输出的总耗时demo2 统计最后一个任务的耗时demo3 统计多个任务的耗时占比 背景 StopWatch是spring-framwork提供的一个可以对任务执行时间进行控制的类&#xff0c;方便记录任务的开始时间和结束时间 常用接口定义 getTotalTimeSeconds(…