乐于分享
好东西不私藏

别再做“上传 PDF 就聊天”:文档 AI 真正的升级是让它自己翻页找证据

别再做“上传 PDF 就聊天”:文档 AI 真正的升级是让它自己翻页找证据
把一份 PDF 扔进网页,右边放个聊天框,再接上向量检索。两年前,这还能当一个 AI 产品卖点;现在,它更像一个基础功能。
Mistral 在 8 月 20 日发布 Agentic Search,有一句话把旧式文档问答的问题说得很直白:一次性 RAG 会取回一组固定文本块,然后让模型一次作答。如果答案不在第一批结果里,模型既不能决定换一份文档,也不能自己翻到表格、脚注或另一个章节继续找。
这才是值得独立开发者注意的产品变化:文档 AI 的下一步,不是再换一个更大模型,而是把“找证据”从一次查询变成一个可恢复、可检查的循环。

一次检索为什么容易停在“看起来对”

传统做法很像让一个助手只能抽五张影印页,然后必须当场回答。
问题简单时,它够用。产品手册只有几十页,用户问某个按钮在哪,答案往往就在第一批文本块里。多走几轮,反而会增加时间和成本。
问题复杂时,固定文本块就会卡住。一个数字可能在表格里,口径写在脚注,前年数据又在另一份报告里。模型需要先找到可疑文档,打开具体位置,读取上下文,发现口径不一致后再换词搜索。
Mistral 给模型的不是一个更长的提示词,而是五类文档操作:搜索、打开、导航、读取和模式查找。模型可以看完结果后决定下一步,而不是被第一次召回的块永久锁住。

真正值钱的不是“会聊”,是证据路径

如果只把这套能力包成“更准的 PDF 聊天”,产品还是很容易被复制。用户付费的理由,不该是多几次工具调用,而应该是他原来需要人工追的证据链终于变短了。
例如,招投标团队不是需要“与标书聊天”,而是要对每个响应条款给出原文页码、引用片段、未找到标记和人工确认状态。合同审查不是要一段“总体没问题”的摘要,而是要比较多个版本的解约、赔偿和自动续期条款,还要让人能点回原位置。
这里有一个可以直接抄的产品动作:不要先做“支持所有 PDF”,先选一种稳定文档和一类高价值问题。
我会这样切最小版本:
只收一类文档,比如供应商合同、设备手册或运营周报。
只解决一类任务,比如找出所有续期条款,或把三年同一指标的口径对齐。
每个结论必须带文档名、页码、原文片段和检索路径。
找不到时显示“未找到”,不逼模型补一个看起来完整的答案。
让用户修正证据和结论,并把修正后的案例变成回归测试。
Mistral 也开源了一个 Search Starter App,可以在本地语料库上建默认索引并试跑检索循环。这很适合用来验证产品假设,但不等于拿来换个 Logo 就能卖。

先做一套小考卷,再接第二个工具

文档 Agent 最容易出现的假进展,是工具越加越多,Demo 越来越像真的,却没人知道正确率是否变好。
开发前先手工做 30 到 50 个真实问题,每题标注正确文档、位置、答案和可接受的引用范围。然后比较四件事:答对了多少,引用对了多少,一次任务走了多少步,失败时是否能看出卡在搜索、导航还是阅读。
如果这套小考卷都没有,你无法判断增加一个 navigate 工具是真提升,还是只让 Agent 多跑了几圈。
定价也不要按“每次聊天”想。客户买的是一份带证据的审查结果,可以按文档包、审查项目、席位或已验证结论数收费。把工具调用次数当内部成本,不要把它当客户价值。

界面不能只给一个答案,还要把调查过程露出来

很多文档 AI 的结果页只有一段自信的文字,最多在句子后面挂两个引用数字。对简单问答这也许够了,但对多步检索,它会把产品最值钱的部分藏起来。
我会在结果页保留三层信息。
第一层是结论,用户可以直接带走。第二层是证据卡,展示文档、页码、原文与证据是支持、反驳还是只提供背景。第三层是调查路径,记录 Agent 用了哪些搜索词,打开了哪些文档,哪条路没找到,为什么又走了下一步。
三层不要同时铺满手机屏幕。默认给结论和最关键证据,需要审核的人再展开路径。这样既不会把普通用户淹没在日志里,也给了专业用户一条可追溯的路。
这还会改变产品的失败设计。当多份文档存在冲突,界面不应该把它们强行揉成一句话,而应该把两个口径并排显示,让人选择以哪个版本为准。当只找到一部分证据,结果也应标成“部分完成”,而不是靠一个笼统的百分比营造精确感。
用户修正也不能只是把最终文字改一改。他如果说“这份附件已经作废”,系统应该记录文档状态和适用时间;他如果说“这个数字应用合并口径”,系统要保留口径规则和原始证据。下次遇到相同问题,Agent 应该先读这些结构化纠正,而不是只在聊天历史里猜用户上次为什么改答案。
这会形成一个很实际的防御力:模型和通用检索工具人人能接,但某个团队已经确认过的文档优先级、口径、例外和失败案例,会慢慢变成该产品独有的证据运营层。

别急着重建索引,先让 Agent 学会判断“下一步读什么”

Mistral 的方案有一个很实用的工程信号:Agentic Search 是建在现有搜索索引上的,索引先找可能的来源,循环再决定要深挖哪份文档。它没有把“以前的 RAG 全部作废”当卖点。
所以产品升级可以分三步,不必一次推倒重来。
第一步,保留现有索引,但让模型看到检索结果摘要后可以重写一次查询。第二步,只对长文档增加打开、跳转与定点读取。第三步,再为跨文档比较加状态,记住已经查过什么、还缺什么。
每加一步,都用前面的小考卷验证。如果正确引用没增加,只是调用次数更多,就把那步删掉。这比为了给产品贴上 Agent 标签,强行让每个问题都走五个工具更稳。

我不会把它塞进所有文档问答

Mistral 自己也给了一条很重要的边界:短文档、结构干净、答案大概率在前几个检索块里时,一次性索引检索仍然是合理起点。
这意味着普通开发者不应把“Agentic”当默认开关。每多一轮搜索,就多一层延迟、成本和失败点。外部文档还可能夹带诱导模型的指令,所以文档内容只能当数据,不能当系统命令。
我更愿意把两条路同时保留:简单问题走一次检索,只有当首轮证据不足、问题明确要求比较或文档类型足够复杂时,才启动可导航循环。
“上传 PDF 就聊天”没有消失,只是降级成了一个入口。真正能收费的部分,是 Agent 翻了哪几页、为什么相信这个数字、没找到时愿不愿意停下来。