手把手教学实现基于GPT建立在自己文档基础上的聊天机器人
与ChatGPT聊天既有趣又富有信息性——我过去一直在与它闲聊,探索一些新的学习想法。但这些更多是日常使用情况,新鲜感可能很快消退,特别是当你意识到它可能会产生幻觉时。
我们如何更有效地使用ChatGPT呢?随着OpenAI最近发布了GPT 3.5系列API,我们可以做的不仅仅是闲聊。其中一个非常有用的用例是QA(问题回答)——您可以用自然语言询问机器人有关您自己的文档/数据的问题,它可以快速从文档中检索信息并生成响应[1]。您可以将其用于客户支持、综合用户研究、个人知识管理等方面!
在本文中,我将探讨如何基于自己的数据构建自己的问答聊天机器人,包括为什么某些方法不可行以及使用 llama-index 和 GPT API 以高效方式构建文档问答聊天机器人的逐步指南。(如果您只想知道如何构建问答聊天机器人,可以直接跳转到"逐步构建文档问答聊天机器人"一节。)探索不同的方法
当ChatGPT推出时,我立即想到了使用它作为助手,帮助我综合客户反馈或找到与我正在开发的功能相关的旧产品文档的想法。
我最初考虑的是使用自己的数据对GPT模型进行微调以实现这一目标。但微调需要花费相当大的资金,并需要一个具有示例的大型数据集。每次文档发生变化时微调也是不可能的。更为关键的是,微调只是让模型掌握了新的技能,而不能让模型"了解"文档中的所有信息。因此,对于(多个)文档问答,微调不是正确的方法。
我想到的第二种方法是通过在提示中提供上下文来进行提示工程。例如,我可以在实际问题之前附加原始文档内容。但是GPT模型的关注范围有限——它只能在提示中接收几千个单词(约4000个标记或3000个单词)。考虑到我们有成千上万的客户反馈邮件和数百份产品文档,让模型在提示中接收所有上下文是不可能的。如果您将长上下文传递到API,那么成本也很高,因为计费是基于您使用的标记数量。I will ask you questions based on the following context: — Start of Context — YOUR DOCUMENT CONTENT — End of Context— My question is: "What features do users want to see in the app?"
(如果你想了解有关GPT的微调和提示工程的更多信息,可以阅读这篇文章:https://medium.com/design-bootcamp/3-ways-to-tailor-foundation-language-models-like-gpt-for-your-business-e68530a763bd)
因为提示的输入标记数有限,所以我想到了一个想法,先使用算法搜索文档并挑选相关摘录,然后只将这些相关上下文与我的问题一起传递给GPT模型。当我正在研究这个想法时,我遇到了一个名为gpt-index(现在更名为LlamaIndex)的库,它正好可以实现我的想法,并且使用起来非常简单。
在接下来的部分,我将给出一个使用LlamaIndex和GPT来构建自己数据的问答聊天机器人的逐步教程。逐步构建文档问答聊天机器人
在这个部分,我们将使用 LlamaIndex 和 GPT(text-davinci-003)基于现有文档构建一个基于文档的问答聊天机器人,这样你就可以用自然语言提问并从聊天机器人得到答案。先决条件
在我们开始教程之前,我们需要准备一些东西:你的 OpenAI API Key,可以在 https://platform.openai.com/account/api-keys 找到。你的文档数据库。LlamaIndex 支持多种数据源,比如 Notion、Google Docs、Asana 等,在本教程中,我们将使用一个简单的文本文件进行演示。一个本地 Python 环境或在线的Google Colab notebook.(https://colab.research.google.com/)。工作流程
工作流程很简单,只需要几个步骤:使用 LlamaIndex 建立文档数据的索引用自然语言查询索引LlamaIndex 将检索到的相关部分传递给 GPT使用相关上下文问 GPT 并构建响应
LlamaIndex 的作用是将原始文档数据转换为向量化的索引,非常高效地进行查询。它将使用此索引根据查询和数据的相似性找到最相关的部分。然后,它将所检索到的内容插入到将要发送给 GPT 的提示中,以便 GPT 有上下文来回答您的问题。设置
首先,我们需要安装库。在您的终端或 Google Colab Notebook中运行以下命令即可。这些命令将安装 LlamaIndex 和 OpenAI 两个库。!pip install llama-index !pip install openai
下一步,我们将在 Python 中导入库,并在一个新的 .py 文件中设置您的 OpenAI API 密钥。# Import necessary packages from llama_index import GPTSimpleVectorIndex, Document, SimpleDirectoryReader import os os.environ["OPENAI_API_KEY"] = "sk-YOUR-API-KEY"构建索引并保存
在安装所需的库并导入它们之后,我们需要构建文档的索引。
要加载文档,可以使用LlamaIndex提供的SimpleDirectoryReader方法,也可以从字符串中加载。# Loading from a directory documents = SimpleDirectoryReader("your_directory").load_data() # Loading from strings, assuming you saved your data to strings text1, text2, ... text_list = [text1, text2, ...] documents = [Document(t) for t in text_list]
LlamaIndex提供了多种数据连接器,包括Notion、Asana、Google Drive、Obsidian等。您可以在https://llamahub.ai/找到可用的数据连接器。
在加载完文档后,我们可以使用以下命令简单构建索引:# Construct a simple vector index index = GPTSimpleVectorIndex(documents)
如果你想要保存这个index,以便将来使用,你可以使用以下的方法:# Save your index to a index.json file index.save_to_disk("index.json") # Load the index from your saved index.json file index = GPTSimpleVectorIndex.load_from_disk("index.json")查询索引并获得响应
查询索引很简单# Querying the index response = index.query("What features do users want to see in the app?") print(response)
完成!你将获得打印出来的答案。在幕后,LlamaIndex会接收你的提示,从索引中搜索相关的片段,并将你的提示和相关的片段传递给GPT。高级用法的一些注意事项
上述步骤仅显示了使用LlamaIndex和GPT进行问答的简单入门用法。但是你可以做得比这更多。实际上,你可以配置LlamaIndex以使用不同的大型语言模型(LLM),为不同的任务使用不同类型的索引,使用新索引更新现有索引等。如果你感兴趣,可以阅读他们的文档https://gpt-index.readthedocs.io/en/latest/index.html。
在本文中,我们看到了如何使用LlamaIndex和GPT结合构建文档问答聊天机器人。虽然GPT(和其他LLM)本身就很强大,但是如果我们将其与其他工具、数据或流程结合起来,其功能可以得到很大增强。
您会用文档问答聊天机器人来做什么?
再看红高粱倔强背后的家国情怀电视剧红高粱已经播出将近十年了,可是每一次观看,都有不一样的感受,但唯一不变的是浓浓的家国情怀。许多人说余占鳌配不上九儿,九儿为他付出了那么多,换来的却是余占鳌带走了丫鬟恋儿。刚开
美国拆散欧盟之心不死,朔尔茨想改革,三次灭国的波兰跳出来了欧盟内部存在帝国主义!当反俄急先锋波兰突然调转枪口,对准欧盟内部输出,深处能源困境和通货膨胀的欧盟又开始新一轮内讧了。近日,波兰总理莫拉维茨基一通檄文投到德媒世界报,痛斥欧盟正在实
卢本伟真要复出了?开通直播间3天涨粉8万,上千人发言全体起立最近LOL电竞的大事件可谓不少,除了LPL职业联赛的季后赛名额争夺之外,LDL赛区再次出现假赛,在网上引起了极大的讨论度,而官方这一次的处罚力度也是前所未有,两支参与假赛的战队,直
不可一世的金星,也走到了这一步文文艺范编辑小丁有人曾说名声是一把双刃剑,哪怕只有一点点,都需要你时时刻刻为它付出代价。众所周知,人的性别是一出生就已经决定的,但随着科技的发展和进步,性别也成了能改变人的因素。如
领证生子就是不办婚礼的5位明星,最后都离婚了,早有预谋吗孙怡董子健离婚的消息惊呆众人,毫无预兆就这么离婚了?23岁相恋,24岁结婚生子,29岁离婚,他们在生命中最美好的时光相遇,结婚五年,最令人遗憾的是董子健至今欠孙怡一场婚礼。普通人结
看不过来?10月新番,炸开锅大家好,这里是简漫社!不出意外的话,今年的十月又将在动漫市场创造一个令人难忘的神仙打架名场面,单是如今已经确定的新番阵容,就已经足以让不少漫迷狂欢了,更别说后面可能出现的惊喜。激动
佩洛希窜台导致台海局势紧张,台湾民众普遍无感?来看看原因据台湾众多媒体人的报道和自述,台湾笼罩着对大陆的行为有所不满的氛围。我们来分析一下原因1佩洛希访台之后,大陆对台企业经济制裁以及联合军演持续进行,岛内人员实际上认为事不关己,据众多
全球身价最高的大码模特180斤性感美模!没有赘肉,曲线完美真正震撼人心的美,总是与内心深处的自我肯定与自我接纳息息相关。比如美国的大码模特阿什利格雷厄姆(AshleyGraham),身高177cm体重180斤,但并没有影响她成为性感超模,
重磅白皮书!国务院台湾事务办公室国务院新闻办公室10日发表台湾问题与新时代中国统一事业白皮书。全文如下台湾问题与新时代中国统一事业(2022年8月)中华人民共和国国务院台湾事务办公室国务院新闻
才27岁,就已缴纳了16年社保,怎么回事?近日,一名男子表示自己今年27岁,社保缴费记录已经达到了16年,而且实际工作只有6年,这是怎么回事呢?刚看到这个消息的时候,也是一头雾水,想着这里面又是有什么猫腻。不过,详细看了报
米国真的会断供我们芯片么?从米国制裁华为开始,无耻的大棒一天比一天更叫嚣。没办法,生产的制造技术在别人手中,我们只能设计,肯定是不行的。就像我们拿到了食谱,却买不到蔬菜和粮食来做饭一样,巧妇难为无米之炊。米