LlamaIndex:赋能大型语言模型的数据框架
LlamaIndex是一个基于大型语言模型(LLM)的应用数据框架。像GPT-4这样的LLM预先训练了海量公共数据集,开箱即用地提供强大的自然语言处理能力。然而,如果没有访问您自己的私有数据,它们的效用将受到限制。
LlamaIndex允许您通过灵活的数据连接器,从API、数据库、PDF等多种来源摄取数据。这些数据被索引成针对LLM优化的中间表示。然后,LlamaIndex允许通过查询引擎、聊天界面和LLM驱动的智能体与您的数据进行自然语言查询和对话。它使您的LLM能够大规模访问和解释私有数据,而无需对模型进行重新训练。
无论您是寻求简单自然语言查询数据方法的初学者,还是需要深度定制的高级用户,LlamaIndex都能提供相应的工具。高级API让您只需五行代码即可上手,而低级API则允许您完全控制数据摄取、索引、检索等更多功能。
LlamaIndex使用检索增强生成(RAG)系统,该系统将大型语言模型与私有知识库相结合。它通常包括两个阶段:索引阶段和查询阶段。
图片来自高级概念
在索引阶段,LlamaIndex会将私有数据高效地索引到向量索引中。此步骤有助于创建特定于您领域的、可搜索的知识库。您可以输入文本文档、数据库记录、知识图谱和其他数据类型。
本质上,索引将数据转换为数值向量或嵌入,以捕捉其语义含义。它能够快速进行跨内容的相似性搜索。
在查询阶段,RAG管道根据用户的查询搜索最相关的信息。然后,将这些信息与查询一起提供给LLM,以创建准确的响应。
此过程允许LLM访问其初始训练中可能未包含的当前和更新的信息。
此阶段的主要挑战是从可能存在的多个知识库中检索、组织和推理信息。
在我们的PineCone检索增强生成代码示例中了解更多关于RAG的信息。
在我们深入LlamaIndex教程和项目之前,我们必须安装Python包并设置API。
我们可以使用pip简单地安装LlamaIndex。
<code>pip install llama-index</code>
默认情况下,LlamaIndex使用OpenAI GPT-3 text-davinci-003模型。要使用此模型,您必须设置OPENAI_API_KEY。您可以创建一个免费帐户,并通过登录OpenAI的新API令牌来获取API密钥。
<code>pip install llama-index</code>
此外,请确保您已安装openai包。
<code>import os os.environ["OPENAI_API_KEY"] = "INSERT OPENAI KEY"</code>
在本节中,我们将学习如何使用LlamaIndex创建一个简历阅读器。您可以通过访问LinkedIn个人资料页面,单击“更多”,然后“保存为PDF”来下载您的简历。
请注意,我们使用DataLab运行Python代码。您可以在LlamaIndex:向LLM添加个人数据工作簿中访问所有相关的代码和输出;您可以轻松创建自己的副本以运行所有代码,而无需在您的计算机上安装任何内容!
在运行任何内容之前,我们必须安装llama-index、openai和pypdf。我们安装pypdf以便我们可以读取和转换PDF文件。
<code>pip install openai</code>
我们有一个名为“Private-Data”的目录,其中只包含一个PDF文件。我们将使用SimpleDirectoryReader读取它,然后使用TreeIndex将其转换为索引。
<code>%pip install llama-index openai pypdf</code>
一旦数据被索引,您就可以开始通过使用as_query_engine()提问。此函数使您可以询问文档中特定信息的问题,并在OpenAI GPT-3 text-davinci-003模型的帮助下获得相应的响应。
注意:您可以按照在Python教程中使用GPT-3.5和GPT-4通过OpenAI API的说明,在DataLab中设置OpenAI API。
正如我们所看到的,LLM模型准确地回答了查询。它搜索了索引并找到了相关信息。
<code>from llama_index import TreeIndex, SimpleDirectoryReader resume = SimpleDirectoryReader("Private-Data").load_data() new_index = TreeIndex.from_documents(resume)</code>
<code>query_engine = new_index.as_query_engine() response = query_engine.query("When did Abid graduated?") print(response)</code>
我们可以进一步询问认证信息。似乎LlamaIndex已经完全了解了候选人,这对于寻找特定人才的公司来说可能是有利的。
<code>Abid graduated in February 2014.</code>
<code>response = query_engine.query("What is the name of certification that Abid received?") print(response)</code>
创建索引是一个耗时的过程。我们可以通过保存上下文来避免重新创建索引。默认情况下,以下命令将保存存储在./storage目录中的索引存储。
<code>Data Scientist Professional</code>
完成后,我们可以快速加载存储上下文并创建索引。
<code>new_index.storage_context.persist()</code>
为了验证它是否正常工作,我们将向查询引擎提出简历中的问题。看来我们已经成功加载了上下文。
<code>from llama_index import StorageContext, load_index_from_storage storage_context = StorageContext.from_defaults(persist_) index = load_index_from_storage(storage_context)</code>
<code>query_engine = index.as_query_engine() response = query_engine.query("What is Abid's job title?") print(response)</code>
除了问答之外,我们还可以使用LlamaIndex创建个人聊天机器人。我们只需要使用as_chat_engine()函数初始化索引即可。
我们将问一个简单的问题。
<code>Abid's job title is Technical Writer.</code>
<code>query_engine = index.as_chat_engine() response = query_engine.chat("What is the job title of Abid in 2021?") print(response)</code>
并且无需提供额外的上下文,我们将提出后续问题。
<code>Abid's job title in 2021 is Data Science Consultant.</code>
<code>response = query_engine.chat("What else did he do during that time?") print(response)</code>
很明显,聊天引擎运行完美无缺。
构建语言应用程序后,您时间轴上的下一步是阅读关于在云中使用大型语言模型(LLM)与在本地运行它们的优缺点。这将帮助您确定哪种方法最适合您的需求。
我们的下一个项目涉及开发一个可以响应来自维基百科的问题并将它们转换为语音的应用程序。
代码源和附加信息可在DataLab工作簿中找到。
首先,我们将从意大利 - 维基百科网页抓取数据,并将其保存为data文件夹中的italy_text.txt文件。
<code>pip install llama-index</code>
接下来,我们需要安装必要的包。elevenlabs包允许我们使用API轻松地将文本转换为语音。
<code>import os os.environ["OPENAI_API_KEY"] = "INSERT OPENAI KEY"</code>
通过使用SimpleDirectoryReader,我们将加载数据并将TXT文件转换为使用VectorStoreIndex的向量存储。
<code>pip install openai</code>
我们的计划是询问有关该国的一般性问题,并从LLM query_engine获得答复。
<code>%pip install llama-index openai pypdf</code>
之后,我们将使用llama_index.tts模块访问ElevenLabsTTS api。您需要提供ElevenLabs API密钥才能启动音频生成功能。您可以在ElevenLabs网站上免费获得API密钥。
<code>from llama_index import TreeIndex, SimpleDirectoryReader resume = SimpleDirectoryReader("Private-Data").load_data() new_index = TreeIndex.from_documents(resume)</code>
我们将response添加到generate_audio函数中以生成自然语音。为了收听音频,我们将使用IPython.display的Audio函数。
<code>query_engine = new_index.as_query_engine() response = query_engine.query("When did Abid graduated?") print(response)</code>
这是一个简单的示例。您可以使用多个模块来创建您的助手,例如Siri,它通过解释您的私有数据来回答您的问题。有关更多信息,请参阅LlamaIndex文档。
除了LlamaIndex之外,LangChain还允许您构建基于LLM的应用程序。此外,您可以阅读数据工程和数据应用程序的LangChain入门,以了解您可以使用LangChain执行的操作概述,包括LangChain解决的问题和数据用例示例。
LlamaIndex提供了一个完整的工具包来构建基于语言的应用程序。最重要的是,您可以使用Llama Hub中的各种数据加载器和智能体工具来开发具有多种功能的复杂应用程序。
您可以使用一个或多个插件数据加载器将自定义数据源连接到您的LLM。
来自Llama Hub的数据加载器
您还可以使用智能体工具来集成第三方工具和API。
来自Llama Hub的智能体工具
简而言之,您可以使用LlamaIndex构建:
要详细了解这些用例,请访问LlamaIndex文档。
LlamaIndex提供了一个强大的工具包,用于构建检索增强生成系统,该系统结合了大型语言模型和自定义知识库的优势。它能够创建一个特定领域数据的索引存储,并在推理过程中利用它,为LLM提供相关的上下文以生成高质量的响应。
在本教程中,我们学习了LlamaIndex及其工作原理。此外,我们仅使用几行Python代码就构建了一个简历阅读器和文本转语音项目。使用LlamaIndex创建LLM应用程序非常简单,它提供了一个庞大的插件、数据加载器和智能体库。
要成为一名专家级LLM开发人员,下一步是参加大型语言模型概念大师课程。本课程将使您全面了解LLM,包括它们的应用、训练方法、伦理考虑和最新研究。
以上是LlamainDEX:基于大语模型(LLM)应用程序的数据框架的详细内容。更多信息请关注PHP中文网其他相关文章!