如何让ChatGPT成为专家领域

ChatGPT Retrieval Plugin(ChatGPT检索插件)是一款基于ChatGPT的开源插件,主要作用是暴露一个API供ChatGPT访问和理解用户数据库中的文档资料,相当于对ChatGPT灌输特定领域的专业知识,赋予其解答相关专业问题的能力。这无疑拓宽了ChatGPT的应用领域,使其不仅仅只是个陪聊的NPC。你觉得ChatGPT Retrieval Plugin在未来有哪些具体的应用场景?不妨在评论区交流和探讨。

ChatGPT插件的定义

插件是ChatGPT聊天功能的扩展,使ChatGPT能够根据用户的请求来访问最新讯息、运算、与第三方服务交互等。 插件解锁了广泛的潜在应用场景并增强了chatGPT的功能。 开发人员可以通过公开 API 并提供描述 API 的标准文档来创建插件。 ChatGPT将根据这些文档调用开发人员定义的 API。
一个插件应包含如下内容:1个API;API 架构(OpenAPI JSON 或 YAML 格式);定义插件相关的元数据(JSON 文件)。

ChatGPT检索插件

检索插件是一个ChatGPT插件,可以实现对个人或组织机构的文档进行语义搜索和检索。用户可以通过提出问题或着用自然语言表达需求来从他们私有的数据源(如文件、笔记或电子邮件)中获取相关度最高的文档片段。企业也可以使用此插件通过 ChatGPT 向员工提供内部文档。
此插件使用 OpenAI 的 text-embedding-ada-002 嵌入模型生成文档块,然后在后端使用矢量数据库对其进行存储和查询。作为一个开源和自营(self-hosted)的解决方案,开发人员可以部署自己的检索插件并将其注册到 ChatGPT。检索插件支持多个矢量数据库提供商,允许开发人员自行选择。
FastAPI 服务器公开插件的API endpoint以更新、查询和删除文档。用户可以按来源、日期、作者或其他条件使用元数据过滤器来筛选搜索结果。该插件可以托管在任何支持 Docker 容器的云平台上,例如 Fly.io、Heroku 或 Azure Container Apps。为了使矢量数据库能够一直更新最新的文档,此插件通过webhooks和endpoints来连续地处理和存储来自各种数据源的文档。可以利用Zapier 或 Make 等工具根据事件或计划配置 webhook。

记忆功能

检索插件的一个显着特点是它能够为 ChatGPT 提供记忆功能。通过使用插件的 upsert endpoints,ChatGPT 可以将对话中的片段保存到矢量数据库中以供以后参考(仅当用户需要保存时)。通过 记住和检索以前对话中的信息,记忆功能可以提供上下文信息更丰富的聊天体验。

安全

检索插件允许 ChatGPT 搜索用户的矢量数据库,然后将最匹配的结果添加到 ChatGPT 会话中。这意味着此插件不会收到任何外部影响,其主要风险在于数据授权和隐私。开发人员在将数据添加到检索插件时,需要确认相关授权,并且确认数据将会在用户的​​ ChatGPT 会话中出现。授权方式有很多种。您可以选择其中之一来确保插件的安全性。

API Endpoints

检索插件是在 FastAPI 的基础上构建的。FastAPI 是一种基于Python的Web 框架,用于构建 API 。FastAPI 可以轻松开发、验证和记录 API endpoints。 FastAPI 的优点之一是使用 Swagger UI 自动生成交互式 的API 文档。当 API 在本地运行时,位于 <local_host_url>/docs(例如http://0.0.0.0:8000/docs) 的 Swagger UI 可用于与 API endpoint进行交互、测试其功能并查看请求和响应模型。

该插件公开了以下端点,用于从向量数据库中更新、查询和删除文档。所有请求和响应都采用 JSON 格式,并且需要一个有效的token作为授权header。

  • /upsert: 允许上传一个或多个文档并将其文本和元数据存储在矢量数据库中。这些文档被分成大约 200 token的块,每个token都有一个唯一的 ID。请求体中需要包含文档列表,每个文档都有一个text字段,以及可选的 ID 和元数据字段。元数据字段可以包含以下可选子字段:source、source_id、url、created_at 和 author。返回值是插入文档的 ID 列表(如果未提供初始 ID,则生成一个 ID)。
  • /upsert-file:允许上传单个文件(PDF、TXT、DOCX、PPTX 或 MD)并将其文本和元数据存储在矢量数据库中。该文件被转换为纯文本并分成尺寸为 200 token的块,每个块都有一个唯一的 ID。返回值是一个列表,其中包含插入文件的ID。
  • /query:允许使用一种或多种自然语言进行查询,并且可以指定元数据过滤器。请求体中需要包含查询指令列表,每个查询指令都有一个query、可选的过滤器和 top_k 字段。过滤器字段应包含以下子字段的子集:source、source_id、document_id、url、created_at 和 author。 top_k 字段指定给定查询返回多少结果,默认值为 3。返回值是一个对象列表,每个对象包含相关度最高的文档块列表,以及响应的文本、元数据和相似度分数。
  • /delete: 允许使用ID、元数据过滤器或delete_all标志从向量数据库中删除一个或多个文档。要求请求体中至少包含以下参数之一:ids、filter或delete_all。ids参数应该是要删除的文档ID列表。filter参数应包含以下可选子字段:source、source_id、document_id、url、created_at和author。delete_all参数应该是一个布尔值,指示是否从向量数据库中删除所有文档。返回值是一个布尔值,指示删除是否成功。

请求和响应模型的详细规范和示例可以在OpenAPI架构中看到,或者在本地运行应用程序并访问http://0.0.0.0:8000/openapi.json。请注意,OpenAPI 架构仅包含 /query endpoint,因为这是 ChatGPT 需要使用的唯一功能,ChatGPT需要通过/query endpoint 根据用户的查询指令来检索用户的相关文档数据。如果开发人员还希望 ChatGPT 能够记忆对话内容以供日后使用,可以使用 /upsert 端点将对话中的片段保存到矢量数据库中。

翻译自ChatGPT Retrieval Plugin官方文档 https://github.com/openai/chatgpt-retrieval-plugin#chatgpt-retrieval-plugin

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值