chatgpt-retrieval-plugin
让 ChatGPT 实时检索私有文档的官方 RAG 后端,支持 16 种向量数据库一键接入
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
让 ChatGPT 实时检索私有文档的官方 RAG 后端,支持 16 种向量数据库一键接入
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这个场景:你在公司内部知识库积累了上万份文档——产品手册、客服话术、财务报表、会议纪要——想用 ChatGPT 来回答「去年 Q3 哪些产品的复购率最高」这类涉及私有数据的问题,却发现 AI 一脸茫然。ChatGPT 的训练数据有截止日期,你的私有数据它从未见过。
这不只是普通用户的困扰,更是企业级 AI 落地的核心瓶颈:LLM 的知识是死的,企业的数据是活的。
OpenAI 官方给出的解法之一,就是今天要介绍的这个开源项目——ChatGPT Retrieval Plugin。它不是一个聊天机器人,而是一套语义检索后端系统,作用是让 ChatGPT(通过 Custom GPTs 或 Function Calling)能够实时查询你自有文档库,用自然语言提问,获得基于真实私有数据的回答。
一句话定位:它是一个连接大模型与私有知识库的语义搜索网关,支持 16 种向量数据库,可以部署在任何服务器上,通过标准化 REST API 与 ChatGPT 交互。
2023 年 3 月,OpenAI 正式推出 ChatGPT Plugins(插件)系统,允许第三方服务以「插件」形式接入 ChatGPT,赋予它调用外部工具的能力。在所有插件类型中,Retrieval Plugin(检索插件) 是最特殊的一个——它解决的不是「执行动作」的问题,而是「获取知识」的问题。
项目由 OpenAI 官方维护(作者 isafulf,邮箱属 OpenAI),采用 MIT 许可证,开源且可自由商用。截至分析时,GitHub 获星 21,186,Fork 3,590,是 Retrieval 类插件中 star 数最高的项目。
值得注意的是,OpenAI 在 2023 年 11 月上线了 GPTs(Custom GPTs) 功能后,ChatGPT 本身已内置文件上传和检索能力。官方在 README 中也明确说明:如果只需要开箱即用的检索,GPTs 内置功能足够;但如果你需要更精细地控制 chunk 大小、embedding 模型、检索策略,就必须用这个插件作为后端。 这也是这个项目至今仍有存在价值的原因。
项目的架构可以用「四步走」概括:
用户上传文档
↓
services/file.py 解析文件(PDF/Word/PPT/TXT)
↓
services/chunks.py 按 token 数分块
↓
services/openai.py 调用 OpenAI Embedding API 生成向量
↓
datastore/providers/* 将向量存入用户指定的向量数据库
查询流程则是反向的:
用户自然语言提问 → ChatGPT 调用 /query 接口
↓
server/main.py 接收请求
↓
datastore/datastore.py 调用 get_embeddings() 获取查询向量
↓
datastore/providers/* 在向量数据库中做相似度搜索
↓
返回最相关的文档片段给 ChatGPT
↓
ChatGPT 基于检索结果生成回答
| 目录 | 职责 |
|---|---|
server/ | FastAPI 主服务,暴露 /upsert、/query、/delete 三个核心 API |
datastore/ | 数据存储抽象层,定义 DataStore 基类 |
datastore/providers/ | 16 种向量数据库的具体实现(每个都是一个独立的 Datastore 子类) |
services/chunks.py | 文档分块策略,默认按 token 数切分,支持自定义 chunk_size |
services/extract_metadata.py | 从文档中提取元数据(来源、时间、作者等) |
services/pii_detection.py | 敏感信息(PII)检测,防止个人信息泄露 |
models/ | Pydantic 数据模型,定义 Document、Query、Metadata 等结构 |
项目原生支持以下向量数据库,覆盖了从本地轻量到云端企业级的全场景:
本地/轻量级:Chroma(本地文件存储)、Redis(内存数据库)、Pinecone(云端)、Weaviate(开源)。
云服务:Pinecone、Weaviate、Qdrant、Milvus/Zilliz、Elasticsearch、MongoDB Atlas、Azure Cognitive Search、Azure Cosmos DB、Supabase(PostgreSQL + pgvector)、阿里云 AnalyticDB、Supabase。
技术选型建议:个人/小团队推荐 Chroma(零配置)或 Redis(可持久化);企业级推荐 Qdrant(性能强,开源友好)或 Pinecone(托管无忧)。
项目使用 python-docx、PyPDF2、python-pptx 等库原生支持 Word、PDF、PowerPoint 文件,同时支持纯文本。服务层会自动完成格式解析 → 内容提取 → 元数据分离全流程。
通过环境变量 EMBEDDING_MODEL 和 EMBEDDING_DIMENSION 可切换 embedding 模型(默认 text-embedding-3-large),并调整向量维度以适配不同向量数据库的要求。EMBEDDING_BATCH_SIZE 控制批处理大小。
services/pii_detection.py 内置个人信息检测功能,上传文档时可自动识别并标记或脱敏(电话号码、邮箱、身份证号等),防止敏感信息被用于后续的 ChatGPT 对话。这是企业部署时非常关键的安全特性。
查询时支持按来源(source)、时间范围、文档 ID 等元数据字段进行过滤,实现「精准召回」而非「语义模糊匹配」。这是比纯向量检索更实用的能力。
所有 API 调用都需要携带 Bearer Token,部署时通过 BEARER_TOKEN 环境变量配置。ChatGPT 在调用时会自动携带此 Token,确保只有授权的 GPT 实例可以访问数据。
项目提供了多阶段 Dockerfile,构建后约 1.2GB 镜像,基于 python:3.10。支持的环境变量超过 20 个,涵盖了所有向量数据库的连接配置。
优点:
Makefile 提供了常用命令(make run、make docker-build)local_server/ 目录提供了本地开发配置,降低了调试门槛缺点:
poetry.lock 达 425KB),首次安装较慢# 1. 克隆仓库
git clone https://github.com/openai/chatgpt-retrieval-plugin.git
cd chatgpt-retrieval-plugin
# 2. 配置环境变量
cp .env.example .env
# 填写 OPENAI_API_KEY、BEARER_TOKEN
# DATASTORE=chroma, CHROMA_PERSISTENCE_DIR=/tmp/chroma
# 3. Docker 构建
make docker-build
# 4. 运行
make run
# 服务监听 0.0.0.0:8000
# 5. 在 Custom GPTs 中配置插件 URL
# 填写 ai-plugin.json 中的 API 地址和 Bearer Token
api.openai.com)在 OpenAI 官方论坛(community.openai.com)上,有开发者直接提问「Is this project dead?」,指出 OpenAI 正大力推进 MCP(Model Context Protocol) 协议,而这个插件使用的是「古老」的 REST API + 自定义鉴权方式,与 MCP 的标准化插件生态存在路线竞争。
实际情况:截至分析时(2026-07-06),项目仍在活跃更新(最近一次 commit 为 2026-07-06),README 已明确说明与 Custom GPTs 的集成方式。但从 OpenAI 的战略优先级来看,Retrieval Plugin 的后续投入可能有限。
ChatGPT Retrieval Plugin 本质上是一个轻量级 RAG(Retrieval-Augmented Generation) 系统的参考实现。它所代表的「LLM + 向量检索」架构,已成为企业 AI 落地的事实标准范式。项目代码中 datastore/providers/ 目录下每个数据库适配器的实现方式,都是学习向量数据库集成的绝佳教材。
| 方案 | 优势 | 劣势 |
|---|---|---|
| ChatGPT Retrieval Plugin | OpenAI 官方,生态完善,16种DB支持 | 强依赖 OpenAI API,无 Web UI |
| LlamaIndex | 本地模型支持,功能丰富 | 配置复杂 |
| LangChain JS | 前端友好,生态活跃 | Python 生态更成熟 |
| Dify / MaxKB | 开箱即用,Web UI 完整 | 偏向产品而非 SDK |
本报告由 PIFS AI 项目分析系统自动生成 | openai/chatgpt-retrieval-plugin | 2026-07-07