值得注意的是,该目录下的factory.py 模块使用了 Python 3.10 新引入的 match-case 语法,紧跟着 Python 社区的新潮流呢~
server 服务端接口这个目录只有一个main.py 文件,是整个项目的启动入口 。它使用了目前主流的 FastAPI 框架,提供了增删改查的几个 API,另外使用 uvicorn 模块来启动服务 。
- /upsert-file 接口,用于上传单个文件,将其转换为 Document 对象,再进行新增或更新
- /upsert 接口,上传一系列的文档对象,用于新增或更新
- /query 接口,传入一系列的文本条件,转成 QueryWithEmbedding 对象后,再从向量数据库查询
- /delete 接口,根据条件删除或者全部删除数据库中的数据
另外,它使用 FastAPI 的 mount 方法挂载了一个“/.well-known”静态文件目录,暴露了关于本插件的基本信息,例如名称、描述、作者、logo、邮箱、提供给 OpenAPI 的接口文档等等 。
services 任务处理方法这个目录下是一些通用的函数,比如下面这些:
(1)chunks.py 文件包含了将字符串和 Document 对象分割成小块、以及为每个块获取嵌入向量的函数 。
(2)file.py 文件提供了从上传的文件中提取文本内容及元数据的函数 。目前支持解析的文件类型包括 PDF、纯文本、Markdown、word、CSV 和 PPTX 。
(3)openai.py 文件包含两个函数:get_embeddings 函数使用 OpenAI 的 text-embedding-ada-002 模型对给定的文本进行嵌入 。get_chat_completion 函数使用 OpenAI 的 ChatCompletion API 生成对话 。
整个而言,这个插件的几个接口功能很清晰,代码逻辑也不算复杂 。核心的文本嵌入操作是借助于 openai 的 Embedding 接口,文本分块信息的存储及查询操作,则是依赖于各家向量数据库的功能 。
YouTube 上有博主手画了一张示意图,字体虽潦草,但大家可以意会一下:
文章插图
他这个视频 值得推荐一看,因为 up 主不仅简明地介绍了插件的工作原理,还手把手演示如何部署到 Digital Ocean、如何修改配置、如何调试,而且他有 ChatGPT 的插件权限,可以将自己部署的插件接入 ChatGPT,现场演示了知识库插件的使用!
视频:https://www.youtube.com/watch?v=hpePPqKxNq8
目前,关于 ChatGPT 插件的介绍、开发及配置等资料还比较少,毕竟是新推出的 。但是,申请 waitlist 的个人和组织已经数不胜数了,一旦开放使用,各式各样的插件一定会像 Python 社区丰富的开源库一样,也将极大扩展 ChatGPT 的生态 。
最后,插件 chatgpt-retrieval-plugin 的官方文档是最为详细的一手资料,推荐大家研究一番 。?https://github.com/openai/chatgpt-retrieval-plugin?
推荐阅读
- 体验了首个接入GPT-4的代码编辑器,太炸裂了!
- 这两个强大的开源C#反编译逆向工具,探索C#桌面应用的秘密
- 打得过新冠、抗得了甲流,这种“神药”为何如此厉害?
- 这才是电动车跑不远的原因!和电池无关,别再浪费钱直接换电池了
- YSL口红珍藏 :2023年流行,色号大合集,你入手几支了呢?
- 买莴笋有诀窍,挑粗的还是细的,菜农无意说漏嘴,以后别乱买了
- 武则天|低胸衣、露大腿、大浓妆,这些演员别再祸祸“尼姑”了!
- 童锦程|一分钟了解顶流网红“江南第一深情、撩妹界祖师爷”童锦程!
- 滴滴出行|中年失业,除了跑外卖和开滴滴,还有什么选择?
- 李亚鹏|夏夏病情恶化,金喜给她剃光头带她回娘家,行李箱坏了也不舍得换