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

一、预处理环节
当系统拿到一段待处理的质检文本材料时,会启动工程化流程,按特定规则把文本切分成若干个 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 三类问题,你去查"。
这一步是模型在跑,但不是我们调的——是算法团队提供的现成能力。

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

重排完成后,我们就确定了最匹配的 chunk。但一个 chunk 里有 N 条消息,还不知道具体是哪条消息违规。所以需要先定位到向量,再往回映射:在 chunk 内部做字符级匹配、坐标还原、句界扩展、Span 合并,最终定位到具体的 msgId 和高亮范围。这一步也是工程动作。
至此,系统能够知道这个工单是否违规、违规类型是什么、违规语句在原文哪条消息里。
三、人工复核环节
最后一步是业务方人工复核。
这里有一层设计:业务人力有限,不可能对所有工单都做复核——那跟人工质检没有区别。所以只针对 AI 判定为违规的工单做一层复核,确认是否真的违规。
因为"违规"意味着要扣罚业务方,决策权必须掌握在人手里。AI 做执行,真正拥有权责、为业务担责的是人工。严重误判不能全推到 AI 身上——决策需要人来拍板。
同时,人工复核的结果本身就是最好的数据标注反馈池,源源不断在更新。P2 精判环节的 prompt 可以根据这些人工反馈做进一步迭代——这就是"越用越聪明"的进化循环。
写在最后
这条链路里涉及很多研发和数学层面的原理——Embedding 怎么编码、内积怎么算、LCS 怎么匹配、重排公式怎么加权——但这些不用先纠结。先把整个链路盘顺,知道数据从哪来、经过几道工序、每步是模型还是工程在做、最终产出什么,比抠公式重要得多。
写到这里,我对 AI 质检的理解确实比之前深了一些。调 prompt 只是其中一环,真正跑起来靠的是模型和工程一环扣一环的配合。
夜雨聆风