《做对判断:AI产品从0到1》核心要点信息图

在微信读书里刷到了《做对判断:AI产品从0到1》这本书,从内容里可以看出作者是一位亲手做过AI产品的人。自从ChatGPT横空出世,我就一直断断续续追着大模型的进展跑。最近这三个月,我用 Claude Code 写一个物探领域的 RAG 项目,做得热火朝天,也踩了好多坑,看到这本书里也写到了RAG,就仔细翻着读完了。

AI产品与传统软件的最大不同

AI产品与传统软件最大的差别是不确定性:技术选型、PRD、评测、运营、留存,每一样都要在不确定的前提下做判断。

因为结果不可重现,作者认为传统PRD不够用了,一份AI产品的PRD要多回答几个问题:

  • 模型用哪个?
  • Prompt怎么写?
  • 评测怎么跑?
  • 效果不好怎么迭代?
  • 什么情况下走兜底?

全书的主要内容基本都是从“结果不可重现”这一条展开的。

几个概念:MCP、RAG、Agent、Skill

MCP、Agent、Skill、RAG 关系图

书里给这几个概念打了一套比方:

  • MCP是AI的手脚——连接的通道,解决怎么连接和调用外部世界;
  • RAG是AI的参考资料——让AI有领域知识;
  • Agent是AI的自主执行能力——拆解复杂任务并逐步完成。
  • skill 则是做事的方法。

MCP的概念,我以前也大概知道一点点,可以看我之前的 MCP与A2A笔记,Agent工程上有三大范式:ReAct(边想边做)、Plan-and-Execute(先想后做)、Reflexion(执行+反思)。现在直接使用别人做好的智能体框架,知不知道这些范式好像也没多大用。

RAG 的入门我曾写过一篇非常简单的文章:《基于LangChain搭建一个PDF问答程序》,当时还不知道claude code,查看各种资料手搓而成。

让我印象最深的几个观点

1. 结果不可重现是一切的根源

AI产品不一样:

平常软件的结果是确定性的,但AI产品有一个最大的不同,每次的结果都不一样。 你优化了prompt,有些数据可能好了,有些又变差了。

作者提醒软件开发人员:Prompt要版本化管理,改错了能回退;任何变更要跑评测,因为“你觉得是优化”不一定真是优化;要设计兜底策略,因为AI一定会犯错。

2. RAG:看起来容易,做起来全是坑

全书有一章写RAG,也是我比较感兴趣的部分。

作者先讲了自己的经历:做一个法务智能助手,它能生成“看起来正确、实际上错误”的回答。

这种回答实际上比“明显胡说八道”危险百倍。

明显胡说,用户一眼看穿,最多浪费一次提问;看起来正确,用户会当真,然后照着一个错的东西去做决定。法律、医疗这类领域,后果很严重,让用户失去信任,产品也就完蛋了。

之后作者给了RAG失败的八条真相:

失败原因 书中给出的对应做法
数据源本身就是垃圾 没人审过的文档不入库
分块策略拍脑袋 不同类型文档用不同切分规则
只靠一层向量检索 多路召回
召回结果不稳定 query改写,top-k放大
回答时胡编 强制基于参考资料回答,引用校验
没有评估体系,全凭感觉 改了参数就要跑评估
目标定得太大 RAG适合有边界、有文档、有标准答案的场景
上线后不运营 不断维护,尤其要重视bad case

细心的人可能会发现:这八条里,没有一条提到“模型不够强”或“算法不够先进”

作者还单独提到了权限控制:让AI自己控制不输出敏感内容,是不可靠的。正确做法是三步——身份识别、带权限的检索(这一步就把用户看不到的东西过滤掉了)、生成前兜底校验。而且权限方案第一版就要设计好,不能上线后补。

失败的RAG项目长什么样,是想做一个万能的产品:把公司所有文档接进来,让员工什么都能问——结果是什么也答不好。

书里还给了一份九条“上线前检查清单”:

  • 知识源是否经过审核
  • 默认检索是最新有效版本
  • 标注权威性,制度 > 通知 > 会议纪要 > 个人笔记
  • chunk是否语义完整
  • 要有标注的测试集
  • 关键结论必须可追溯,注明引用来源
  • 检索前进行权限过滤
  • bad case要回流分析
  • 明确谁来负责知识更新

最后还有个工厂场景:知识库不是文档而是结构化数据,这就是混合RAG——查询类的转成SQL去数据库查,非结构化的走传统RAG,两路融合生成答案。难点在路由判断,作者团队用同义词映射表做query改写来解决。

3. 简单方案先行,复杂方案兜底

关于技术选型,作者有个反直觉的观察:

技术选型中最常见的错误,不是“选错了”,而是“选多了”。

大家都喜欢高大上:RAG要上最复杂的多路召回加重排序,Agent要做最灵活的多步推理,大模型挑最新的。但是,复杂度上去了,却未必好用、未必值得维护。

作者给的原则是“简单方案先行,复杂方案兜底”:先用便宜的方法解决大部分问题,剩下的交给贵的方法。例子是“关键词预匹配(命中率40%)+ LLM分类器兜底”。

在“RAG还是Agent”这个问题上,书里给了几个判断维度:任务确定还是开放?需不需要连接外部系统?知识来源是什么?需要频繁更新的技术文档用RAG;任务复杂、多步、需要动态决策才上Agent。

还有一个清醒剂:大模型不是万能的。一次调用至少3-5秒,还会超时,烧的都是钱。高频实时的结构化任务(预警、阈值判断)交给规则引擎或轻量模型;低频复杂的生成任务(分析报告、根因推理)才用大模型。有些场景,7B-14B的小模型就够了。

4. 评测是AI产品的生命线

评测这部分,我在做SeisQuery的时候感受最强烈。

任何prompt或模型变更,无论看起来多“显然是优化”,不跑评测不上线。

因为“你感觉应该不错,可能对某几题有改善,但可能会让很多题效果下降”。

评测体系分三层:检索层看命中率和排序质量;生成层把正确的片段喂给LLM看回答的准确率、完整性、格式;用户体验层收集真实反馈。

迭代节奏分三个频率:

  • 高频——任何变更提交前自动跑核心评测集;
  • 中频——每周跑一次全量评测;-
  • 低频——每月请业务专家人工评测、分析bad case趋势。

作者会做对照实验的三组设计:传统流程baseline(没有AI怎么做)、简化版AI、完整版AI。这三组能回答两个关键问题:AI比传统方案好多少?工程化值不值?作者说这个对比数据在向客户汇报时极有说服力。

5. Prompt是核心交付物

AI产品里,Prompt也代码,甚至比代码更核心。要版本化管理、变更要跑评测、生产环境和测试环境的prompt分开管理。

看到这里,我在 SeisQuery 项目里也进行了实践:把 Prompt文本 单独抽出来,放到 git 仓库管理,每次改动加个版本号,写清楚“为什么改”。

还有一点容易忽略:Prompt 调试时同时改多个地方,效果反而变差。我在项目里试过一次性改 4、5 处 Prompt,测试结果准确率反而掉了几个点——不同地方之间会相互影响。养成“一次只改一处,改完就跑评测”的习惯后,调试效率反而高了。

6. PRD 写法:AI PRD 八步法

作者提出了一套“AI PRD八步法”落地工具,我先完整记下来:

  1. 价值判断——用户的痛点是什么?为什么必须用AI?能力边界在哪?
  2. 目标拆解——业务目标 + 可衡量的模型目标
  3. 需求与流程设计——明确哪一步是用户操作、哪一步是AI执行
  4. 模型选型——用什么模型,为什么
  5. Prompt工程——版本管理,记录改动原因和效果
  6. 评测系统——测试集、指标、达标标准
  7. 兜底策略——低置信度怎么办?主模型失败切备用吗?
  8. 产品能力设计——V1对话式,V2再加表单;等待过程如何设计?

7. 增长与留存:狼来了的故事

作者给了一组扎心的自家数据:注册账户400人,真正持续使用的不到30人。翻后台日志发现大部分人用一次就走了。流失原因就三类:文件解析失败、回答太泛泛、超时太久。结论是第一次如果体验不成功,几乎没有第二次机会

关于留存有两个提神的判断:AI产品的逻辑是让用户用完即走;看一个AI产品好不好,只看它替用户创造了多少不可替代的价值——用户留下来的唯一原因是,离开你他得花更多时间做同样的事。

还有一个预警的例子:作者把AI预警阈值调低后,每天推40-50条预警,用户直接关掉了通知——典型的“狼来了”效应;控制在3-5条,用户反而会响应。

后来我顺手查了下,再扯远一些,这个效应在别的领域有更大的数据佐证:网络安全分析师每天面对3000多条告警只能处理约38%,其中仅16%是真实攻击;医疗领域超过85%的临床告警被医生直接忽略,甚至引发过致命错误。可见这不是AI时代的新问题,是所有监控系统的老毛病。

我做RAG时踩的坑

读到RAG那一章时心情比较复杂。SeisQuery是我用Claude Code做的物探RAG问答系统,写了三个月。下面挑几条印象最深的说说体会,技术细节不方便展开。

SeisQuery 文档库界面
SeisQuery 文档库界面

数据源良莠不齐

书里说“没人审过的文档不入库”,听起来理所当然,但现实里你拿到的docx就是打不开。Word的空错性很强,python-docx不一定能打开。文件里的目录不规范、样式乱用,什么情况都会发生。

query改写是把双刃剑

刚看完query rewrite的论文,我就动手试,结果反应变慢了不说,整体效果反而变差(有个别题效果有所改善)。我只能先把这个选项关掉,以后再优化。

没有评估体系就别上线

我准备了三套数据,20题、30题、32题,一共82题。评估非常花时间,评估20题要20分钟,82题就要1个多小时,这还是LLM稳定的情况下。有个反应又快又准的本地LLM,会让RAG开发效率提升很多。