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 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%免费】🆓

在这里插入图片描述

  • 16
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值