手把手教学实现基于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)本身就很强大,但是如果我们将其与其他工具、数据或流程结合起来,其功能可以得到很大增强。
您会用文档问答聊天机器人来做什么?
看狂飙上头,看李一桐的公主切也上头啊!热衷网上冲浪的编辑最近已经刷到了不少博主的公主切发型,而前不久在狂飙中饰演孟钰的李一桐,她的公主切酷飒与甜美兼具,让人十分心动!从去年火到今年的发型都有什么魅力?一起往下看看大家喜
剧王狂飙中令人深思的十大金句头条创作挑战赛01人后的苦尚能克服,人前的尊严却无比脆弱。02在我们面前的是一头怪兽,它只不过微不足道地向我们亮一亮牙齿,就足够撕碎我们普通人的一切,生命尊严亲人朋友爱人你所在乎的
流浪地球衍生品爆红满江红却红到发黑LV坚决打击代购行为春节档电影已经过去,但是热度还是继续。最大赢家之一流浪地球不仅赢了票房,还通过一波操作,奠定了自己国风IP的地位。此前,阿里鱼旗下的娱乐电商平台造点新货以众筹形式推出了流浪地球2的
原神V3。4角色计算夜兰天赋加点武器圣遗物选择命座提升大家好,这里是蒙德蒲公英酒。本期攻略计算一下夜兰的伤害,总共为五个方面的计算,分别为天赋武器圣遗物套装圣遗物主词条命座,通过计算对比可以很直观的得到一些结论,即天赋加点顺序武器选择
管理效率提升5倍!平安健康AI健管师助力慢病管理更智慧ChatGPT横空出世,让曾经隐在各行各业背后的AI技术再次浮出水面,更多普通大众切身体验到飞速发展的AI技术潜移默化地改变着人们的生活。记者今天从平安健康医疗科技有限公司了解到,
87款游戏获批!网易腾讯在列2月10日,国家新闻出版署官网发布2023年2月份国产网络游戏审批信息,共87款游戏获批,其中手游占79款,客户端游戏占7款,游戏机Switch占1款。厂商方面,网易旗下的梦幻西游
未来2至3年,人工智能最近chatGPT全球大火,中国这边由于特殊原因,绝大多数网民没有真正用过chatGPT,大都是根据媒体描述有个大致的了解。面对人工智能展现出来的能力,不少人感到兴奋,想的是怎么利
问CHATGPT外星生物的存在及应对对chatgptAI提出的问题宇宙中到底有没有外星人?如果没有的话人类是否是孤独的?或者我们的科技达到什么程度才能发现外星人?如果真有外星人,他们在某一天对人类进行打击的时候,我们
明显的信号!阿里和杭州又签一个协议,释放出的信息让人意外最近的一个新闻,杭州余杭区人民政府与阿里巴巴签署全方位战略伙伴合作协议。根据协议,双方将在推进重大科研打造高能级产业生态圈构建高层次人才蓄水池支持数字经济新业态等十个方面加深合作。
基于云的SIEM(安全信息和事件管理)平台,微软Azure哨兵MicrosoftSentinel是一个基于云的SIEM(安全信息和事件管理)平台,旨在帮助企业实时检测调查和应对威胁。它是一个全面的安全解决方案,提供一系列功能,帮助企业保护其资
乌鲁木齐高新区(新市区)扎实推进高企倍增行动天山网讯(记者高峰报道)乌鲁木齐高新技术产业开发区(新市区)健全科技型中小企业高新技术企业创新型领军型企业的梯度培育机制,建立高新技术企业后备培育库,形成高新技术企业从小到大的成长