乐于分享
好东西不私藏

AI 质检的完整链路:模型化和工程化是怎么配合的

AI 质检的完整链路:模型化和工程化是怎么配合的
上次聊到产品怎么调 prompt、让种子数据集的结果逼近业务打标结果。但其实放在整个 AI 质检系统里,调 prompt 只是其中很小的一环。

整个系统分两大块模型化工程化。它们共同作用在三个环节上:预处理、实时判断、人工复核。其中预处理和实时判断不是先后关系,而是两条独立的线,各自跑各自的,最后在混合检索这一步汇合,产出最终结论。今天就把这条链路从头到尾捋一遍。

图 1:预处理和实时判断两条线并行,在混合检索处汇合

一、预处理环节

当系统拿到一段待处理的质检文本材料时,会启动工程化流程,按特定规则把文本切分成若干个 chunk。

切分规则是这样的:所有消息先按 turnIndex 排序(当前这轮对话在整个对话历史中的位置编号,每轮对话都有一个对应的 turnIndex);turnIndex 不完整时改按 msgTime 排序。然后格式化成 时间 角色:内容 的格式,往一个 chunk 里塞消息,塞到接近 400 字符就切。单条超长消息不硬切,保持完整。chunk 之间有 80 字符的 overlap——如果最后一条消息 ≤ 80 字符,就把它完整地回退到下一块 chunk 里做重叠;如果超过 80 字符,就不截断也不硬塞,直接放弃这次 overlap。不管哪种情况,都不会把一条消息截成两半放进两个 chunk。所以一个 chunk 里面会有 N 条消息。

每个 chunk 会记录 Metadata,包括每条消息的 msgId、时间、角色、在 chunk 中的偏移量等。这是一个机械的切分过程,没有模型介入。

切分完成后,进入第二步:每个 chunk 用预制模型做 Embedding,把文本转化成 1024 维向量。这个模型是黑盒,产品不需要关注它内部怎么跑——有专门的算法团队负责选型和验证。它的作用就是把 chunk 向量化。

第三步,把向量和 Metadata 一起存进 Milvus(向量数据库)。

至此,所有待质检的对话数据已经入库完毕。就像图书馆先把所有书分类上架,读者来的时候直接查就行。

二、实时判断流程

实时判断和预处理是并行跑的,预处理在后台持续入库,实时判断在前端逐单跑。每来一个新工单,就进入实时判断。这个流程拆成两步:P1 初筛和 P2 精判。

P1 初筛

用黑盒模型扫描工单全文,判断这段对话有没有风险嫌疑。只有两种结果:没发现风险 → 直接放行,不进 P2;发现候选风险标签 → 送 P2 精判。P1 不给理由、不给违规语句,只告诉你"这段对话可能有 A、B、C 三类问题,你去查"。

这一步是模型在跑,但不是我们调的——是算法团队提供的现成能力。

图 2:P1/P2 两级判断的分流逻辑

P2 精判

P2 才是我们之前调 prompt 的那个环节。系统拿着 P1 输出的候选标签和对应文本,用我们调试好的 prompt 做精细判断。

P2 的输出不是一个简单的"违规/不违规",而是三个要素:

  • tag
    :违规类型
  • reason
    :违规理由
  • violation_statement
    :违规语句

但 P2 输出的违规语句是基于判断结果的概括性表述,和原始对话里的原话可能字面不完全一致。所以需要下一步:回到原始对话里定位"这句话在哪里"。

混合检索:从 P2 输出定位回原文

拿 P2 的完整输出做 Embedding 编码,转化成向量。然后拿这个向量去 Milvus 库里搜,通过内积召回选出 Top100 的候选 chunk——这一步是工程动作,向量数据库查询。如果预处理那边的向量库还没初始化好,实时判断这边就等一下,等两边都 ready 了再做匹配。

拿到 Top100 之后,做 LCS 字面重排。对这 100 条候选逐个算字面匹配度——看哪条和 P2 输出有连续字面重合。最终用 语义分 + 3.0 × 字面匹配度 的加权打分排序,分最高的就是最匹配的 chunk。

LCS 重排是纯工程计算,不调模型。公式里的系数是算法团队给的,他们有一套自己的严谨算法来定这个值,但计算过程本身不需要模型介入。

图 3:混合检索内部——两条线在这里碰头

重排完成后,我们就确定了最匹配的 chunk。但一个 chunk 里有 N 条消息,还不知道具体是哪条消息违规。所以需要先定位到向量,再往回映射:在 chunk 内部做字符级匹配、坐标还原、句界扩展、Span 合并,最终定位到具体的 msgId 和高亮范围。这一步也是工程动作。

至此,系统能够知道这个工单是否违规、违规类型是什么、违规语句在原文哪条消息里。

三、人工复核环节

最后一步是业务方人工复核。

这里有一层设计:业务人力有限,不可能对所有工单都做复核——那跟人工质检没有区别。所以只针对 AI 判定为违规的工单做一层复核,确认是否真的违规。

因为"违规"意味着要扣罚业务方,决策权必须掌握在人手里。AI 做执行,真正拥有权责、为业务担责的是人工。严重误判不能全推到 AI 身上——决策需要人来拍板。

同时,人工复核的结果本身就是最好的数据标注反馈池,源源不断在更新。P2 精判环节的 prompt 可以根据这些人工反馈做进一步迭代——这就是"越用越聪明"的进化循环。

写在最后

这条链路里涉及很多研发和数学层面的原理——Embedding 怎么编码、内积怎么算、LCS 怎么匹配、重排公式怎么加权——但这些不用先纠结。先把整个链路盘顺,知道数据从哪来、经过几道工序、每步是模型还是工程在做、最终产出什么,比抠公式重要得多。

写到这里,我对 AI 质检的理解确实比之前深了一些。调 prompt 只是其中一环,真正跑起来靠的是模型和工程一环扣一环的配合。