使用GPT基于您自己的文档构建聊天机器人的分步指南
与 ChatGPT 聊天既有趣又有益——过去一段时间我一直在用它闲聊并探索一些新的想法来学习。但这些都是更随意的用例,新奇感很快就会消失,尤其是当你意识到它会产生幻觉时。
我们如何以更高效的方式使用它?随着 OpenAI 最近发布的 GPT 3.5 系列 API,我们可以做的不仅仅是聊天。QA(问答)是企业和您个人使用的一个非常有效的用例—— 您用自然语言向机器人询问您自己的文档/数据,它可以通过从文档中检索信息并生成响应来快速回答您 [1 ]. 您可以将其用于客户支持、综合用户研究、您的个人知识管理等等!
向机器人询问与文档相关的问题。使用稳定扩散生成的图像。
在本文中,我将探讨如何根据自己的数据构建自己的问答聊天机器人,包括为什么某些方法不起作用,以及使用 llama 高效构建文档问答聊天机器人的分步指南-索引和 GPT API。
(如果你只想知道如何搭建问答聊天机器人,可以直接跳到"一步步搭建文档问答聊天机器人"部分) 探索不同的方法
我的日常工作是产品经理——阅读客户反馈和内部文件占据了我生活的很大一部分。当 ChatGPT 出来时,我立刻想到了用它作为助手来帮助我综合客户反馈或查找有关我正在开发的功能的相关旧产品文档的想法。
我首先想到的是用自己的数据微调GPT模型来达到目的。但是微调需要花费相当多的钱,并且需要一个带有示例的大数据集。也不可能每次文档发生变化时都进行微调。更关键的一点是,微调根本不能让模型"知道"文档中的所有信息,而是教会模型一种新技能。因此,对于(多)文档 QA,微调不是可行的方法。
我想到的第二种方法是通过在提示中提供上下文来进行提示工程。例如,我可以在实际问题之前附加原始文档内容,而不是直接提出问题。但是 GPT 模型的注意力跨度有限——它只能在提示中接受几千个单词(大约 4000 个标记或 3000 个单词)。如果我们有数千封客户反馈电子邮件和数百份产品文档,就不可能在提示中给出所有上下文。如果您将长上下文传递给 API,成本也会很高,因为定价是基于您使用的令牌数量。 我会根据以下上下文问您问题: — 上下文开始 — 您的文档内容 — 上下文结束 — 我的问题是:"用户希望在应用程序中看到哪些功能?"
(如果想了解更多关于GPT的微调和提示工程,可以阅读文章:https ://medium.com/design-bootcamp/3-ways-to-tailor-foundation-language-models-like -gpt-for-your-business-e68530a763bd )
由于提示对输入标记的数量有限制,我想到了首先使用算法搜索文档并挑选出相关摘录,然后仅将这些相关上下文与我的问题一起传递给 GPT 模型。当我研究这个想法时,我遇到了一个名为 gpt-index(现在更名为 LlamaIndex)的库,它正是我想做的,而且使用起来很简单 [2]。
从文档中提取相关部分,然后将它们提供给提示。来自https://www.flaticon.com/的图标
在下一节中,我将提供有关使用 LlamaIndex 和 GPT 在您自己的数据上构建问答聊天机器人的分步教程。 逐步构建文档问答聊天机器人
在本节中,我们将基于现有文档使用 LlamaIndex 和 GPT (text-davinci-003) 构建一个问答聊天机器人,以便您可以提出有关文档的问题并从聊天机器人那里获得答案,所有这些都使用自然语言。 先决条件
在我们开始教程之前,我们需要准备一些东西: 您的 OpenAI API 密钥,可在https://platform.openai.com/account/api-keys找到。 您的文件的数据库。LlamaIndex 支持许多不同的数据源,如 Notion、Google Docs、Asana 等 [3]。对于本教程,我们将只使用一个简单的文本文件进行演示。 本地 Python 环境或在线Google Colab 笔记本。 工作流程
工作流程很简单,只需几个步骤: 使用 LlamaIndex 为您的文档数据建立索引 用自然语言查询索引 LlamaIndex 将检索相关部分并将它们传递给 GPT 提示符 使用相关上下文询问 GPT 并构建响应
LlamaIndex 所做的是将您的原始文档数据转换为矢量化索引,查询效率非常高。它将使用该索引根据查询和数据的相似性找到最相关的部分。然后,它将检索到的内容插入将发送给 GPT 的提示中,以便 GPT 具有回答您问题的上下文。
配置
我们需要先安装库。只需在您的终端或 Google Colab 笔记本上运行以下命令。这些命令将同时安装 LlamaIndex 和 OpenAI。 !pip 安装 llama-index !pip 安装 openai
接下来,我们将在 python 中导入库并在新的 .py 文件中设置您的 OpenAI API 密钥。 #从llama_index导入必要的包import GPTSimpleVectorIndex, Document, SimpleDirectoryReader import os os.environ[ "OPENAI_API_KEY" ] = "sk-YOUR-API-KEY"
构建索引并保存
安装并导入所需的库后,我们需要为您的文档构建索引。
要加载文档,您可以使用 LllamaIndex 提供的 SimpleDirectoryReader 方法,也可以从字符串加载它。 # 从目录加载 documents = SimpleDirectoryReader( "your_directory" ).load_data() # 从字符串加载,假设您将数据保存到字符串 text1, text2, ... text_list = [text1, text2, ...] documents = [ text_list中t的文档 (t) ]
LlamaIndex 还提供了多种数据连接器,包括 Notion、Asana、Google Drive、Obsidian 等。您可以在https://llamahub.ai/找到可用的数据连接器。
加载文档后,我们可以简单地构建索引 # 构造一个简单的向量索引 index = GPTSimpleVectorIndex(documents)
如果你想保存索引并加载它以供将来使用,你可以使用以下方法 # 将索引保存到 index.json 文件 index.save_to_disk( "index.json" ) # 从保存的 index.json 文件加载索引 index = GPTSimpleVectorIndex.load_from_disk( "index.json" )
查询索引并获得响应
查询索引很简单 # 查询索引 response = index.query( "用户希望在应用中看到什么功能?" ) print (response)
瞧!您将打印出您的答案。在幕后,LlamaIndex 将接受您的提示,在索引中搜索相关块,并将您的提示和相关块传递给 GPT。
高级用法的一些注意事项
上面的步骤仅显示了使用 LlamaIndex 和 GPT 进行问答的非常简单的入门用法。但您可以做的远不止于此。事实上,您可以将 LlamaIndex 配置为使用不同的大型语言模型 (LLM),为不同的任务使用不同类型的索引,使用新索引更新现有索引等。如果您有兴趣,可以阅读他们的文档https://gpt-index.readthedocs.io/en/latest/index.html。 一些最后的话
在本文中,我们了解了如何结合使用 GPT 和 LlamaIndex 来构建文档问答聊天机器人。虽然 GPT(和其他 LLM)本身很强大,但如果我们将它与其他工具、数据或流程相结合,它的力量会大大增强。
您会使用文档问答聊天机器人做什么?
广州最古老的庙会!黄埔波罗诞来啦2月23日,黄埔区广州开发区举办第16届广州民俗文化节暨黄埔波罗诞千年庙会新闻发布会,黄埔区文化广电旅游局副局长羿采妍介绍,第16届广州民俗文化节暨黄埔波罗诞千年庙会活动将于3月2
花漾之旅漫山樱花盛放!深圳最佳赏樱宝藏地,等你迟日江山丽,春风花草香初春的深圳一波波赏花潮已经来了二月,爱月一想到浪漫谁不想在春天拥有一场樱花雨呢?小游寻遍深圳各处的樱花在周末来一场浪漫的樱花之旅吧小三洲塘的樱花现在已进入盛花
善治长安丨南巷村护河队,河你在一起素月分辉,明月共影,表里俱澄澈如此优美的诗句用来描绘如今的南巷河景色一点也不为过。如果不信,你可以到白鹤镇南巷村来瞧瞧。当你来到南巷村,漫步在河道旁,就能切身感受到小河之韵美。远看
花期预告这一场花事只在春天为你放映一年一度的浪漫风景普朱,花开了微风轻拂,春意盎然普陀山朱家尖处处繁花似锦唤醒你我内心的温柔今年春天,相约于此一起聆听花开的声音感受岁月静好01梅花梅为花魁,春从梅始莫愁冬日寒入骨,
俄罗斯旅游业极端不景气,急需司马南先生振臂一呼了!任何一场战争都会深刻的影响到社会的方方面面,有的行业会在战争中赚得盆满钵满,也必然会有很多行业彻底的衰败,这就是大家常说的几家欢乐几家愁啊。对于受到影响的行业,在这个时候,最需要的
秋田冬季旅3天2夜攻略冰上钓鱼雪地露营雪上摩托车体验!冬天最适合去日本自由行赏雪玩雪,到东北地区玩法更多元!世界遗产白神山地所在的秋田白神地区,除了滑雪之外,还可体验雪上摩托车冰上垂钓与雪地露营!想要挑战更多雪上活动的人,快来参考文章
万宁石梅湾旅游热附近村道不堪重负镇政府回应来了新海南客户端南海网南国都市报2月21日消息(记者张野)春节过后,万宁石梅湾旅游热度不减,距离石梅湾最近的石梅村委会乌石村在喜迎八方客的同时,出行之扰也在这个春节越发明显。村内停车位
萌宠乐园旅游近年来,城市微度假市场不断扩大。尤其是后疫情时代,城郊微假期越来越受到消费者的青睐,家庭亲子微假期产品的市场表现备受关注。据统计,受疫情影响后,城市微度假的主要人群从追求多元约会场
海南赴曼谷开展文化旅游交流推进一程多站旅游发展合作模式新海南客户端南海网南国都市报2月21日消息(记者丁文文通讯员李艺娜)2月20日晚,2023年中国海南旅游文化推广交流活动在泰国曼谷举行。作为今年首个前往泰国进行旅游文化推介的省级代
夏威夷旅游波利尼西亚文化中心及博物馆按辞海解释,波利尼西亚,是中南太平洋的岛群,意为多岛群岛,主要有夏威夷中途岛萨摩亚汤加马克萨斯等岛。这些岛上的原住民为波利尼西亚人,包括夏威夷人塔希提人汤加人和新西兰的毛利人等,讲
王图强赴全椒县调研乡村旅游及春耕备耕情况来源滁州人大人大要闻2月21日,市人大常委会主任王图强深入全椒县十字镇,就乡村旅游及春耕备耕情况开展调研,并走访看望人大代表。他强调,要深入贯彻落实滁州市乡村旅游促进条例,借力民俗