ChatGPT Custom GPT 上传的文件未被使用:3 个原因 + 修复路径

配置时挂了知识库,但对话时它说"我没看到这个文件"——retrieval 不会自动触发。

Custom GPT 的 Knowledge files 不是每次对话都自动塞进 context 的。它走的是按需检索(retrieval):用户问题里有命中关键词、或者 instructions 里写明”先查知识库”,才会真正读文件。配置页里挂上去 ≠ 模型每次都看。20 文件 / 单文件 512MB 是硬上限,但实际触发率往往才是真正的瓶颈。

常见原因

按命中率从高到低排:

1. Instructions 没显式要求”先查知识库”

最常见——你把 PDF / DOCX 挂上去就觉得万事大吉,但 Custom GPT 的默认行为是先用模型通识回答。Instructions 里没有”always search the knowledge files before answering”这种硬要求,模型大概率跳过检索。

如何判断:让 Custom GPT 回答一个只有知识库里才有的事实(比如某个内部产品代号)。如果它回”我不知道”或者编一个版本号,就是没触发检索。

2. 用户问题没命中检索关键词

Retrieval 用关键词 / 向量匹配。问题里没出现文档里的关键词,相似度不够,就跳过。比如知识库是”API 限流文档”,用户问”为什么请求被拦了?”——“限流”两个字没出现,检索可能拉不到那篇。

如何判断:先按文档里的原词来问一次(“API 限流策略是什么”),再用同义词问一次(“请求被拦怎么办”)。如果只有第一种能命中,就是关键词错位。

3. 文件数接近上限或单文件过大被截

Custom GPT 上限:20 个文件,每个 ≤ 512MB,总文本会被切 chunk。文件过大时模型只会拉到几个 chunk,关键信息可能在没被拉到的那一块。

如何判断:在 Configure → Knowledge 里看文件数和大小。> 15 文件 / 单文件 > 50MB 就先按这条排查。让它”列出 knowledge 里的所有文件名”,如果列不全,就是确实切掉了。

4. 文件入库静默失败

上传 UI 显示成功 ≠ 内容已索引。损坏 PDF、奇怪编码、扫描件无文本层都会让索引在后端静默失败,文件出现在列表里但搜不到内容。

如何判断:让 GPT “从 xxx.pdf 里原文引一句第一页的话”。引不出 / 内容是幻觉就是索引失败。

5. 文件类型支持上传但不支持检索

图片、音频、视频可以挂到 Knowledge 但不会被向量化检索,只是被存着。模型问起来”看不到”——它真看不到。

如何判断:Knowledge 里只挂了 PNG / MP3 / MP4,问什么都说不知道——就是这条。改成 PDF / DOCX / TXT / MD。

6. 测试时用了 Preview 但发布的是旧版本

在 Configure 页测试时是当前编辑版本,但你 Share 给别人或自己用的 GPT URL 是上次 Update 的版本。文件改了没点 Update,对外还是旧的。

如何判断:在用户端 GPT URL 打开,问”列出你能访问的文件”,对比 Configure 页文件列表。不一致就是版本没更新。

动手前先确认

  • 确认问题是在 Configure 预览里还是发布后的 GPT URL 里出现;两者用的是不同版本快照。
  • 复现前把当前对话复制一份或截图,避免清掉历史影响下次诊断。
  • 确认账号订阅:Free 用户不能用 Custom GPT,Plus / Team / Enterprise 在 Knowledge 配额上有差异。

需要收集的信息

  • 文件类型、大小(MB)、页数 / 行数;是否扫描件 PDF、是否含中文 / 公式 / 图表。
  • Knowledge 里文件总数、是否接近 20 上限。
  • 完整 prompt 文案 + GPT 回复截图;如果回复说”看不到文件”原话记录下来。
  • 当前 GPT 的 instructions 全文(截图 Configure → Instructions)。
  • 测试时用的是 Configure 预览还是发布版 URL。

最短修复路径

按收益从高到低,前 2 步通常就能解决 70% 的问题。

Step 1:Instructions 顶部加硬要求

打开 Configure → Instructions,在最前面(不是末尾)加:

Before answering ANY question, first call `search the knowledge files`
to check if the answer exists in the uploaded documents. Only use your
general knowledge if the knowledge files contain nothing relevant.
When citing knowledge, name the source file.

中文 GPT 也用英文写——instructions 用英文模型遵守更稳。点 Update 发布新版本。

Step 2:用关键词式提问

让用户(包括你自己)按文档里的原词来问:

差:这个功能怎么用?
好:根据 `user-guide.pdf`,"批量导出"功能怎么用?

把”根据 xxx.pdf”这种点名写到 instructions 里要求模型也这样回答(“always quote the source filename”),用户问的时候也照着学。

Step 3:清理 Knowledge 到 ≤ 10 个核心文件

20 是硬上限,但实测 8-12 个命名良好的文件检索质量最稳。> 15 文件检索会偏向高分那几个,其他基本被冷落。

操作:

  1. Configure → Knowledge → 删除冗余 / 过期文件
  2. 把多个小文件合并成一个分章节的大文件(带清晰 # Chapter 1 标题),检索 chunk 时上下文更连贯
  3. 文件名带语义:api-rate-limit-policy.pdf 胜过 doc1.pdf

Step 4:分割超大文件 + 转 Markdown

单文件 > 50MB 的 PDF:

# 拆 PDF(macOS / Linux)
brew install qpdf
qpdf --split-pages=30 large.pdf split-page-%d.pdf

# 转 Markdown(更高质量抽取)
pip install marker-pdf
marker_single large.pdf ./output --max_pages 100

把 Markdown 上传比 PDF 检索质量高一截,特别是带表格的文档。

Step 5:验证索引成功

发布后开一个新对话,依次问:

1. 列出你 Knowledge 里所有文件名
2. 从 `<filename>.pdf` 里原文引一句第一页的话
3. 这份文档大概多少页 / 多少行?

任何一题答不上来,就是那个文件索引坏了——重新上传一次(删掉再传),通常会触发重新索引。

Step 6:发布并用 GPT URL 测试

测试不要只在 Configure 页做。点 Update → Share → 复制 GPT URL,开无痕窗口或换账号打开,跑一遍上面 Step 5 的三题。Configure 里好但 URL 里坏,就是没点 Update。

怎么确认已经修好

  • 开新对话(不要在原会话里继续)上传同一个文件,问同一个问题,确认不是会话历史污染。
  • 换一个账号或换无痕浏览器再打开 GPT URL 试一次,确认不是账号 / 客户端缓存。
  • 让同事在他们的账号里重复一遍流程,确认不是只有你的账号被修好。

如果还是没修好

  • 把文件切到最小:100 行的 CSV、1 页的 PDF,看最小用例能不能跑通。
  • 换文件格式:PDF→txt、DOCX→md,排除是不是某种格式的解析路径有问题。
  • 换模型:在 Configure → Model 切到 GPT-5.5 / o3 / GPT-5,不同模型读文件的检索触发率不同。
  • 准备好原文件、prompt、GPT URL、订阅级别截图,去 help.openai.com 提工单。

预防建议

  • 建 Custom GPT 时先准备一组 5-10 题的”检索触发率测试”——只有 Knowledge 里才有的事实,发布前用这组题验一遍。
  • Instructions 永远把”先 search the knowledge files”放第一句,不要埋在中间。
  • 文件控制在 8-12 个、单文件 ≤ 30MB、文件名带语义。
  • 改完 Knowledge / Instructions 后必点 Update,再用 GPT URL(不是 Configure 预览)验证一遍。
  • 表格 / 数据类内容优先用 CSV / Markdown,不要用 PDF——抽取层质量差异大。

相关阅读

标签: #ChatGPT #排查