OpenAI最近宣布提供 ChatGPT插件支持,允许 ChatGPT 访问外部工具和数据库。OpenAI 还开放了数据检索插件的源代码,其他公司可以使用该插件为 ChatGPT 提供对自己文档和数据的访问。
虽然像 ChatGPT 这样的大型语言模型(LLM)可以正确地回答许多问题,但它们的知识可能会过时,因为 LLM 被训练好以后并不会得到更新。此外,模型只能输出文本,这意味着它不能直接代表用户执行操作。
为了解决这个问题,研究人员探索了一些允许 LLM调用API或访问知识库的方法。ChatGPT 的插件系统将允许模型与外部系统集成,如知识库和第三方 API。检索插件允许模型对向量数据库执行语义搜索。由于该插件是自托管的,企业可以将自己的内部文档安全地存储在数据库中,并让他们的用户通过 ChatGPT 的自然语言界面与数据发生交互。
这个插件支持几种商业的和开源的向量数据库,包括一个由 Pinecone 开发的。这家公司也参与了这个插件的开发,InfoQ 采访了Pinecone的工程经理Roy Miara,谈到了他们对这个插件的贡献。
InfoQ:ChatGPT 插件是什么东西,特别是这个检索插件是用来做什么的?
Roy Miara:ChatGPT 插件作为辅助工具,可以帮助 ChatPGT 方便地访问当前的信息、执行计算或集成第三方服务。这个检索插件让 ChatGPT 能够通过语义搜索技术获取外部知识。检索插件有两种流行的使用范例,一种是利用插件访问个人或组织数据,一种是将插件作为 ChatGPT 内部的记忆组件。两者都使用语义搜索作为模型将用户提示词重组为对向量数据库(如 Pinecone、Milvus 或 Weaviate)查询的一种方式。
InfoQ:ChatGPT 插件与其他 LLM 集成(如 LangChain)相比有哪些优势?
Miara:LangChain 通过工具链实现“代理”的体验,但 ChatGPT 插件更适合 AI 应用开发。ChatGPT 插件的优势包括:实现更为复杂和完善,利用了 OpenAI 内部插件能力,而 LangChain 只是将插件信息连接为模型的提示词;支持安全性身份验证,这对 AI 应用程序开发来说是至关重要的,特别是在访问个人数据或代表用户执行操作时。Langchain 当前的产品中并不包含这些特性。
InfoQ:你能描述一下你对这个检索插件的贡献吗?
Miara:Pinecone 的数据存储实现贡献给了这个项目,也包括其他一些测试和文档的内部改进。总体基本实现遵循 Pinecone 的更新/查询/删除范式,我们目前正在研究混合查询和其他高级查询技术。
InfoQ:你能提供一些典型的关于 ChatGPT 插件工作原理的技术细节吗?
Miara:ChatGPT 插件就是一个向 ChatGPT 公开“指令”清单的 Web 服务器,它将插件的操作描述为提示词,并将 API 引用描述为 OpenAPI 规范。有了这些,ChatGPT 就能够理解不同的 API 调用,以及它应该遵循的指令。
因此,要开发插件,就需要构建应用程序逻辑,实现遵循OpenAPI规范的 Web 服务器,并部署服务器,让 ChatGPT 能够访问它。尽管对可实现的应用程序逻辑没有限制,但不建议构造太过复杂的 API 服务器,因为这可能会导致出现不希望看见的行为或混乱等。
我们发现清单中有“description_for_model”,本质上就是在获取上下文之前注入的提示词,它是成功构建插件的关键。OpenAI 提供了一些指南,但归根结底还是要开发者自己找到正确的提示词。
InfoQ:OpenAI 说插件是“以安全为核心原则、专门为语言模型设计的”。在开发插件的过程中都遇到了哪些安全方面的挑战?
Miara:首先,让 ChatGPT 访问个人或组织数据需要实现安全和数据完整性特性。插件需要处理 API 身份验证,确保数据的安全访问。
其次,生成式语言模型一直存在正确性问题。我们发现,早期版本的插件偶尔会提供不正确的响应,但随后的迭代提高了准确性,同时也承认某些问题超出了它们可处理的范围。此外,通过在测试阶段长时间运行插件,OpenAI 可以在将其发布给更多的用户之前更好地对结果做出调整。
此外,插件功能的设计对用户来说是完全透明的。用户显式地选择他们希望启用的插件,ChatGPT 在启用插件时会清楚地向用户表明,同时也使查看插件服务提供给 ChatGPT 上下文的结果变得简单。
【声明:本文由 InfoQ 翻译,未经许可禁止转载。】
查看英文原文:
https://www.infoq.com/news/2023/05/chatgpt-retrieval-plugin/
相关阅读:
评论