使用LlamaIndex和GPT创建文档问答聊天机器人的分步教程

释放双眼,带上耳机,听听看~!
本教程介绍了如何使用LlamaIndex和GPT基于文档创建问答聊天机器人,使用自然语言进行查询和回复。通过简单的步骤,您可以轻松地构建一个基于您自己的数据的自然语言问答系统。

与 ChatGPT 聊天是有趣且丰富的,过去一段时间我一直在与它闲聊并探索新的想法。但这些都是比较随意的用例,新奇感很快就减弱,尤其是当你意识到它可以产生幻觉的时候。

我们如何以更高效的方式使用它?随着 OpenAI 最近发布的 GPT 3.5 系列 API,我们能做的事远不止是闲聊。对于企业和个人使用来说更高效的用例是 QA (问答)—— 你用自然语言向机器人询问你自己的文档/数据,它可以通过从文档中检索信息并生成回应以快速地回答你为个人业务量身定制的基础语言模型(如GPT)的3种方法

由于提示对输入 token 数量有限制,所以我想出了一个主意,首先使用算法搜索文档并选择相关的摘要,然后只将这些相关的内容以及我的问题传递给 GPT。当我研究这个想法的时候,我偶然发现一个叫 gpt-index 的库(现在更名为 LlamaIndex),这个库完全符合我的想法,而且使用简单www.flaticon.com/

在下一节中,我将给出一个使用 LlamaIndex 和 GPT 来创建基于您自己的数据的问答聊天机器人的分步教程。

逐步创建文档问答聊天机器人

在本节中,我们将基于现有的文档用 LlamaIndex 和 GPT (text-davinci-003) 创建一个问答聊天机器人,这样你可以就你的文档提出问题,并从聊天机器人获得答案,全部都是使用自然语言。

前提条件

在开始之前,我们需要准备一些东西:

  • 你的 OpenAI API Key,可以在 platform.openai.com/account/api… 中找到。
  • 你的文档的数据库。LlamaIndex 支持多种不同的数据来源,比如 Notion、Google Docs、Asana 等等 [3]。在本教程中,我们只使用一个简单的 text 文件来做示范。
  • 一个本地 Python 环境或者在线 Google Colab notebook

工作流程

这个工作流程简单易懂,只需要几个步骤:

  1. 使用 LlamaIndex 创建文档数据的索引。
  2. 使用自然语言查询索引。
  3. LlamaIndex 将检索相关部分并传递给 GPT 提示。
  4. 结合相关上下文询问 GPT,并构建回复。

LlamaIndex 所做的是将原始的文档数据转化为矢量索引,这会使查询变得非常高效。LlamaIndex 将基于查询和数据的相似性来使用这个索引去找到最相关的部分。再将检索到的信息插入到提示中发送给 GPT,这样 GPT 就有了回答问题的上下文。

设置

我们需要先安装 LlamaIndex,只需要在终端或者 Google Colab notebook 中运行以下命令。这些命令会安装 LlamaIndex 和 OpenAI。

!pip install llama-index!pip install openai

下一步,我们将在 python 中导入这些库,然后在一个新的 .py 文件中设置你的 OpenAI API key。

from llama_index import GPTSimpleVectorIndex, Document, SimpleDirectoryReaderimport osos.environ['OPENAI_API_KEY'] = 'sk-YOUR-API-KEY'

构建索引并保存

在安装以及导入了所需的库之后,我们需要去构建文档的索引。

我们可以使用 LllamaIndex 提供的 SimpleDirectoryReader 方法来加载文档,或者也可以从字符串中加载。

documents = SimpleDirectoryReader('your_directory').load_data()text_list = [text1, text2, ...]documents = [Document(t) for t in text_list]

LlamaIndex 也提供多种不同的数据连接器,包括 Notion,Asana,Google Drive,Obsidian 等等。你可以在 llamahub.ai/ 中找到可用的数据连接器。

在文档加载后,我们可以用以下方法简单地构建索引

index = GPTSimpleVectorIndex(documents)

如果你想要保存索引以便后续加载使用,你可以使用以下方法

index.save_to_disk('index.json')index = GPTSimpleVectorIndex.load_from_disk('index.json')

查询索引并获取响应

查询索引是很简单的

response = index.query("What features do users want to see in the app?")print(response)

使用LlamaIndex和GPT创建文档问答聊天机器人的分步教程

一个回复案例。

然后就可以了!你就能得到回答了。在后台,LlamaIndex 会接受你的提示并在索引中搜索相关的语块,然后将你的提示以及相关的语块传递给 GPT。

一些关于高级使用的说明

上面的步骤仅仅展示了 LlamaIndex 和 GPT 非常简单的回答问题的入门用法。但你可以做更多。事实上,你可以配置 LlamaIndex 去使用不同的大型语言模型(LLM),使用不同类型的索引去做不同的任务,用一个新的索引来更新现有的索引等等。如果你感兴趣,可以阅读他们的文档 gpt-index.readthedocs.io/en/latest/i…

结语

在这篇文章中,我们看到了如何将 GPT 与 LlamaIndex 结合起来,来建立一个文档问答聊天机器人。虽然 GPT(和其他 LLM)本身就很强大,但如果我们把它与其他工具、数据或流程结合起来,它的能力就可以大大放大。

你会用一个文档问答聊天机器人做什么?

  1. What Is Question Answering? — Hugging Face. 5 Dec. 2022
  2. Liu, Jerry. LlamaIndex. Nov. 2022. GitHub

如果发现译文存在错误或其他需要改进的地方,欢迎到 掘金翻译计划 对译文进行修改并 PR,也可获得相应奖励积分。文章开头的 本文永久链接 即为本文在 GitHub 上的 MarkDown 链接。

掘金翻译计划 是一个翻译优质互联网技术文章的社区,文章来源为 掘金 上的英文分享文章。内容覆盖 AndroidiOS前端后端区块链产品设计人工智能等领域,想要查看更多优质译文请持续关注 掘金翻译计划官方微博知乎专栏

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

GPT生成式预训练模型详解:工作原理、优化方法与训练步骤

2023-12-19 15:32:00

AI教程

如何更自然地与AI交流:优化沟通效果的方法和技巧

2023-12-19 15:37:00

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索