官方目前提供了两个插件:
delete->bool方法,根据id和其它过滤条件删除,或者全部删除。返回操作是否成功。
services任务处理方法
file.py文件提供了从上传的文件中提取文本内容及元数据的函数。目前支持解析的文件类型包括PDF、纯文本、Markdown、Word、CSV和PPTX。
这个项目完全是用Python写的,不管是出于学习编程的目的,还是为了将来开发别的插件作借鉴,这都值得我们花时间好好研究一下。
整个而言,这个插件的几个接口功能很清晰,代码逻辑也不算复杂。核心的文本嵌入操作是借助于openai的Embedding接口,文本分块信息的存储及查询操作,则是依赖于各家向量数据库的功能。
server服务端接口
_upsert->List[str]方法,接收一个字典参数,包含有DocumentChunk对象列表,将它们插入到数据库中。返回值为文档ID的列表。
datastore数据存储
这里使用了抽象工厂设计模式,DataStore是一个抽象类,每种数据存储库是具体的实现类,需要实现三个抽象方法:
在这几个接口中,增改删功能主要是给开发者/维护者使用的,ChatGPT只需调用插件的查询接口。代码中还创建了一个“/sub”子应用,只包含/query接口,提供给ChatGPT调用。
数据源的文本数据会被映射到低维度向量空间,然后存储到向量数据库中。官方已提供Pinecone、Weaviate、Zilliz、Milvus、Qdrant、Redis这几种数据存储方案的示例。有几个pullrequests想要加入PostgreSQL的支持,大概率将来会合入。
3月23日,OpenAI又投出了一枚重磅炸弹:为ChatGPT推出插件系统!
还不过瘾?试试它们
▲对比C++和Python,谈谈指针与引用
接下来,我将分享自己在阅读项目文档和源码时,收获到的一些信息。
▲最新开源:高效的Python通用对象池化库
▲Python小项目:如何制作一个迷宫游戏?
OpenAI还开源了一个知识库检索插件chatgpt-retrieval-plugin,这个插件通过自然语言从各种数据源检索信息。有了开源代码后,开发者可以部署自己的插件版本。
如果你觉得本文有帮助
chunks.py文件包含了将字符串和Document对象分割成小块、以及为每个块获取嵌入向量的函数。
此举意味着ChatGPT将迎来“APPStore”时刻,也就是围绕它的能力,形成一个开发者生态,打造出基于AI的“操作系统”!
/upsert-file接口,用于上传单个文件,将其转换为Document对象,再进行新增或更新/upsert接口,上传一系列的文档对象,用于新增或更新/query接口,传入一系列的文本条件,转成QueryWithEmbedding对象后,再从向量数据库查询/delete接口,根据条件删除或者全部删除数据库中的数据
YouTube上有博主手画了一张示意,字体虽潦草,但大家可以意会一下:
作为第一个开源的ChatGPT插件,chatgpt-retrieval-plugin项目一经发布,就登上Github趋势榜第发布仅一周就获得11Kstars。
openai.py文件包含两个函数:get_embeddings函数使用OpenAI的text-embedding-ada-002模型对给定的文本进行嵌入。get_chat_completion函数使用OpenAI的ChatCompletionAPI生成对话。
_query->List[QueryResult]方法,接收一个列表参数,包含被embedding的查询文本。返回一个包含匹配文档块和分数的查询结果列表。
▲Python中list是如何实现和使用的?
不仅如此,你还可以用书籍作为数据源,打造出“西游记知识库”、“红楼梦知识库”、“百科全书知识库”、“个人书馆知识库”,等等;以专业领域的论文与学术期刊为数据源,创造出一个专家助手,从此写论文查资料将无比轻松;以苏格拉底、乔布斯、马斯克等名人的资料为数据源,创造出人格化的个人顾问……
想象一下,假如我提供了一个“Python知识库插件”,以所有官方文档作为数据源,那以后有任何Python使用上的问题,我就只需询问ChatGPT,然后它调用插件并解析数据,最后返回给我准确的答案。这将节省大量的时间!
ChatGPT是一个无比聪明的大脑,而插件会成为它的眼睛、耳朵、手脚、甚至于翅膀,能力惊人,未来不敢想象!
插件系统将为ChatGPT带来质的飞跃,因为借助于插件服务,它可以获取实时的互联网信息、调用第三方应用。
▲Python的切片为什么不会索引越界?
一个网页浏览器。利用新必应浏览器的API,实时搜索互联网内容,并给出答案和链接一个代码解释器。利用Python解释器,可以解决数学问题、做数据分析与可视化、编辑片、剪辑视频等等,还支持下载处理后的文件
文章为作者独立观点,不代表股票交易接口观点