AI产品经理,别急着删数据:真正要交付的是一套可回滚的清洗规则
AI项目中的数据清洗远非简单的表格整理,一条看似不规范的记录可能是关键业务信息。本文深入剖析清洗规则制定中的常见误区,提出用规则卡和保留清单确保数据价值不流失,帮助产品经理在AI项目中做出更明智的数据处理决策。

做AI项目时,产品经理经常会收到一句看起来很简单的任务:
这批数据有点脏,上线前先清洗一下。
技术同学开始跑脚本,空值补了,重复项删了,格式统一了。处理后的数据少了一大截,报表里的指标也变得很漂亮。
接入模型一测,效果没提升,原本能回答的问题反而答不上来了。
继续往下查,常见的情况是这样的:缺少标题的文档被当成无效数据删掉了,里面偏偏有一批业务人员整理的常见问题;相似问答被批量合并,不同产品版本的操作说明混成了一条;系统看到手机号和地址就整段过滤,顺手把客服处理这类问题时必须参考的业务规则也删了。
脚本执行得没毛病,数据确实更整齐了。
业务信息一起被洗没了。
这就是AI项目里的数据清洗和普通表格整理最不一样的地方。
以前做报表,看到空值、重复值、格式错误,处理目标相对清楚。到了AI项目里,一条看起来不规范的数据,到底是噪声、异常样本,还是用户真实表达,要结合产品场景判断。
用户输入里的错别字,放在正式知识库中显得很脏,放在Query改写和容错评测中却很有用。
客服聊天里的重复问法,做数据统计时应该去重,训练模型识别高频意图时,它又能反映真实需求。
一份已经过期的产品说明,不能继续参与当前答案生成,但它还要支持历史订单查询,也不能一键删除。
AI产品经理不需要亲自写完所有清洗脚本,但必须回答一件事:哪些数据允许AI学习,哪些只能在特定场景使用,哪些需要人工确认,哪些才可以真正删除。
一、数据清洗最容易出错的地方,不是脚本,是规则
很多刚接触AI项目的产品经理,会把数据清洗理解成技术团队的工作。
技术负责写Python、SQL或者搭清洗工作流,产品给一句需求:把重复的删掉,把错误的修正,把敏感信息过滤掉。
听起来分工挺合理,真正执行时却很容易翻车。
技术可以判断两条文本的相似度,却没法替业务决定什么程度的相似才算重复。
两个问题只有一个词不同,既可能是在表达同一个意图,也可能分别对应退款和换货两套流程。两份制度文件大部分内容相同,也可能只是生效日期和适用客户不同。
如果产品只写一句删除重复数据,技术就只能自己猜。
类似的模糊需求还有很多:
- 删除无效内容,到底什么叫无效
- 修复错误数据,正确答案以哪个系统为准
- 过滤过期知识,历史业务是否还需要查询
- 统一字段格式,原始表达要不要保留
- 清理敏感信息,是删除整条数据还是局部脱敏
- 处理异常样本,它是录入错误还是值得保留的长尾场景
这些不是工具自己能做的决定。
产品经理要把模糊的业务判断,翻译成机器可以执行的条件。一条规则得说清楚对谁生效、什么情况下触发、触发后怎么处理、哪些情况属于例外、处理错了怎么恢复。
比如删除重复问答就不算一条合格规则。至少要写成:
当两条问答来自同一产品版本、意图标签相同、审核答案完全一致时,保留最近更新的一条。不同产品版本的数据不得自动合并,先进入隔离区等待业务确认。
规则写到这个颗粒度,开发知道怎么做,业务知道怎么查,产品也能解释某条数据为什么被处理。
如果团队手里只有一份清洗后的文件,没有规则、命中记录和修改版本,后面模型效果出了问题,大家连该从哪里查都不知道。
二、拿到数据先别洗,先问它准备给谁用
举一个AI客服项目里很常见的情况。
业务部门导出一批历史客服会话,里面有错别字、重复咨询、寒暄、表情符号,还有不少只说了半句话的记录。数据团队看完觉得太乱,准备先把无效内容清掉,再交给模型使用。
问题就出在无效这两个字上。
如果这批数据要整理成客服知识库,那么您好、请稍等、感谢您的咨询这类话术确实没什么用。保留标准问题、准确答案和对应的产品版本就够了。
如果要拿它训练意图分类模型,高频重复不能随便删。很多用户都在问怎么退款,这些重复记录反映的是一个真实且高频的需求。只留一条,数据是清爽了,问题的重要程度也被一起抹平了。
如果它要成为AI客服的评测集,错别字、口语和省略句反而应该留下。
真实用户不会按照知识库标题提问。他们会输入退钱怎么还没到、会员关哪儿、买错了咋办。把这些问法全部改成标准书面语,评测结果肯定很好看,上线之后照样挨打。
同一批客服会话,换一个使用目的,清洗方法就得跟着换。

所以,产品经理拿到数据以后,先拉业务、算法和数据同学对齐用途。先别讨论正则表达式,也别急着选工具,把下面四件事说清楚:
- 这批数据最后进入哪个环节
- 它需要帮助AI完成什么任务
- 哪种错误最不能接受
- 哪些看起来很脏的数据必须保留
最后一个问题特别容易漏。
大家做数据清洗时,注意力都放在删什么上,很少专门列一份不能删的内容。真到批量处理的时候,没人记得某些错别字要用于容错测试,也没人记得旧版说明还要支持历史订单查询。
所以,清洗规则之外还要有一份保留清单。
拿AI客服知识库来说,这份清单可以这样写:不同产品版本的答案不能直接合并;涉及金额、时间和适用条件的句子不能只保留摘要;用户真实口语要单独留一份,用于评测和问题改写;无法判断是否过期的内容先隔离;已经在线上出现过的Bad Case必须进入回归测试集。
这份清单不用写得多漂亮。它的作用就是提醒团队,别顺手把有用的东西也扔了。
三、把一句清掉垃圾数据,写成一张规则卡
用途对齐之后,才轮到写清洗规则。
这里最容易犯的错,是把清洗规则写成动作清单:去重、去空、统一格式、过滤敏感词。看着每一项都对,开发拿到手还是不知道边界在哪里。
我建议把每条规则单独写成一张卡。它不需要另起一份几十页的PRD,用团队现成的文档或表格就能做。

一张能落地的规则卡,至少要包含下面这些内容:

这里有一个很实用的原则:拿不准的数据,先隔离,不要直接删除。
隔离区不是什么复杂系统。小项目用一张单独的数据表就够了,把原始内容、命中规则、隔离原因、处理人和最终结论记下来。
它能解决一个很现实的问题。业务不可能在项目初期把所有边界一次想全,产品也没必要为了等一个模糊答案卡住整批数据。先让确定的规则继续跑,把有争议的数据单独收好,后面集中处理。
处理动作也别只剩下删除。
例如知识库里出现手机号,真正需要处理的是号码本身,可以用占位符替换,没必要删掉整段服务流程。两条问答高度相似,但适用版本不同,可以补充版本标签,而不是强行合并。内容已经过期,可以从当前检索库下架,原文仍然保存在历史库里。
删除很省事,也最难补救。能修正就修正,能补标就补标,拿不准先隔离,确认无用再删除。
四、规则写完别直接全量跑,先看看它准备删谁
清洗脚本最吓人的地方,不是它跑得慢,而是它跑得太快。
一条写错的规则,人工处理一天也就改错几十条。自动化脚本几分钟就能把整批数据处理完。如果原始文件还被覆盖了,基本就是加班套餐。
所以,清洗规则也要像产品功能一样走一遍安全发布。

1、原始数据只读保存
原始层不能被清洗结果覆盖。文件从哪里来、什么时候导出、包含哪些字段、是否已经脱敏,都要有记录。
后面发现规则有问题,原始层就是重跑和恢复的底线。
2、先选一批有代表性的样本
不要只拿最整齐的数据试跑。正常样本、边界样本和高风险样本都要放进去。
比如测试重复问答合并规则,样本里既要有真正的重复,也要有文字相似但产品版本不同的问答,还要放入金额、日期、适用条件略有差异的内容。
只测简单样本,规则几乎都会通过,没什么参考价值。
3、强制输出清洗前后差异
每次试跑都应该输出Diff,让产品和业务看见哪些数据被修改、哪些被删除、哪些进入隔离区。
很多团队验收时只看清洗后的结果,很少回头看被删掉的内容。可真正容易误伤的,恰好都在那里面。
抽检时也别只抽正常数据。删除、改写、合并这三类动作风险最高,优先看它们。
4、重跑旧的Bad Case
数据变干净不等于AI效果变好。每次修改重要规则,都要用已有评测集和线上Bad Case重新跑一遍。
比如知识去重之后,重复率下降了,但同一产品的不同版本也被合并了。数据指标变好,模型回答却开始串版本。这种问题只看清洗报表根本发现不了。
5、规则和数据都要带版本
至少要能回答三个问题:这批数据用的是哪版规则,哪版脚本处理的,最后进入了哪个模型或知识库版本。
线上突然出现错误答案时,团队才能沿着版本往回查。否则大家只能围着最新文件猜来猜去。
小团队不一定要搭复杂平台。规则文档、执行脚本、结果文件和发布记录按同一个版本号管理,已经比临时传文件稳很多。
五、重复率下降了,不代表AI真的变好了
数据清洗完成后,最常见的验收方式是看清洗指标。
重复率降了多少、空值还剩多少、格式错误处理了多少、敏感信息命中了多少。这些都该看,但只能说明数据发生了变化。
它们没法证明产品因此变好了。
假设团队把知识库重复率从很高降到了很低,看起来成绩不错。上线后用户问旧订单规则,AI却拿新版政策回答。清洗过程成功了,业务结果是错的。
清洗验收至少要看三层:


不用每个项目都塞满所有指标。做RAG知识库,就重点看召回和答案准确性;做意图分类,就看分类准确率和长尾意图表现;做智能客服,还要看问题解决率和转人工率。
关键是每一条清洗规则都能对应到一个具体问题。
为什么要删这类数据,它影响了哪个任务指标?为什么要补这个标签,它准备解决哪类错误回答?如果团队说不清,先别急着把规则放进全量流程。
六、线上出了错,先别急着怪模型
AI产品上线以后,Bad Case肯定会来。
用户问会员关闭入口,AI给了旧版路径。用户问退款到账时间,AI把原路退回和余额退回混在了一起。用户用了一个很口语的问法,系统直接说没有相关内容。
这时最没用的一句话就是模型效果不好,再调一下。
答案出错可能发生在很多地方:原始资料本来就错了,文档解析时漏了一段,清洗规则误删了条件,切分把关键上下文拆开了,检索拿错内容,模型生成时又自行发挥了。
产品经理要把Bad Case继续拆下去。
每条Bad Case至少记录:用户原始问题、错误答案、正确答案、命中的知识片段、数据来源、清洗规则版本、知识库版本、问题归因和处理结论。
如果最后确认是清洗规则导致的,就补充例外、调整处理动作或者升级规则版本。这个Bad Case同时进入回归测试集,以后每次发布都重新测。
这里还有一个容易踩的坑。
不要看到模型答错,就立刻修改清洗规则。先确认错误真的发生在数据清洗环节。如果正确知识已经被检索出来,只是模型没按知识回答,问题就在生成侧。硬改数据,不但解决不了,还会引入新的变量。
错题本不是用来攒一堆失败截图的。它得能告诉团队,这次错误改了哪条规则,以及下次怎么确保不再发生。
七、新手第一次接数据清洗项目,先把这5样东西交出来
如果你刚开始做AI产品经理,暂时不用研究一套庞大的数据治理平台。
先把下面五样东西做扎实:
1、数据源和用途清单:数据从哪里来,给哪个AI环节使用,谁对内容正确性负责
2、清洗规则卡:每条规则的触发条件、动作、例外、风险和负责人
3、保留与隔离清单:哪些内容不能删,哪些暂时无法判断,需要人工确认
4、回归测试集:典型问题、边界问题和线上出现过的Bad Case
5、验收与版本记录:这次处理改了什么,谁确认的,进入了哪个数据和模型版本
这五份材料都不复杂,也不一定需要新系统。文档、表格、项目管理工具都能做。
真正重要的是,团队再也不用靠口头记忆回答这些问题:这条数据为什么被删,哪版规则删的,谁确认过,删错了还能不能恢复。
数据清洗不是把文件扔给技术以后等结果,也不是产品经理自己熬夜改Excel。
它更像一次没有界面的产品发布。规则是需求,脚本是实现,抽检和回归是测试,版本记录负责追溯,线上Bad Case继续推动下一轮迭代。
数据不需要被洗得像一张白纸。AI最后要面对的,本来就是充满错别字、省略、冲突和例外的真实业务。
产品经理要做的,是让这些复杂数据在该出现的地方出现,在不该影响结果的地方被拦住。
本文由 @怂怂的AI脑内小剧场 原创发布于人人都是产品经理。未经作者许可,禁止转载
题图来自作者提供

起点课堂会员权益





AI项目里的数据清洗,难点不在脚本,在规则。同样一批客服会话,做知识库要删寒暄,做意图分类要留重复,做评测集还得保留错别字。先把用途对齐,再写规则卡和保留清单,拿不准的先隔离,删除前留原始层和版本记录。最后落到一句话:数据不需要洗成白纸,让复杂数据在该出现的地方出现,在该拦住的地方被拦住,这才是真正要交付的东西。