帖子
- 牧之2026-07-286203
在实际开发中遇到的一个难题想要咨询各位佬友:
背景
有约十万级用户反馈工单,未来可能增长到几十万、百万级别。目标是识别多个不同用户是否在描述同一个现实事件,并聚合为候选事件。
判断需要综合考虑:
- 事件地点;
- 涉及主体;
- 核心问题;
- 用户是否不同。
典型场景
仅依靠文本相似度无法判断是不是同一个事件。
例如:```
事件地点:某市A路
涉及主体:违停车辆
问题描述:车辆占道停放,影响正常通行
``````
事件地点:某市B路
涉及主体:违停车辆
问题描述:车辆占道停放,影响正常通行
```两条文本和问题类型非常相似,但发生地点明确不同,应当识别为两个事件。反过来:```
用户是某服务平台从业人员,因设备故障取消任务,
平台判定用户有责并扣除20元,用户认为处理不合理。
``````
用户是同一服务平台从业人员,因设备故障取消任务,
平台判定用户有责并扣除30元,用户认为处理不合理。
```虽然金额不同,但平台、用户身份、问题原因、责任判定和争议机制一致,可能应当聚合为同一个事件。因此,该问题不是简单的“相似文本检索”,而是:
带有地点、主体、用户身份和业务规则约束的事件解析与聚类问题。
目前Ai尝试的方案
技术流程如下:```
字段提取和标准化
→ 完整内容/核心问题Embedding
→ pgvector HNSW Top-K召回
→ 地点、主体、分类规则过滤
→ Reranker精排
→ 同事件/人工复核/不聚合
→ 事件聚类
```向量主要用于召回候选,Reranker和结构化字段负责进一步判断。主要难点
- 文本相似不代表同一事件。例如问题描述相同但发生地点不同。
- 同一主体可能同时存在多个不同问题,完整文本向量容易误合并。
- 地址存在别名、层级和模糊表达,完全匹配容易漏召回,向量匹配又可能误判。
- 关系聚类可能出现“A像B、B像C、A不像C”的链式误合并。
- 余弦相似度、Rerank和结构化字段分数无法直接比较,当前权重和阈值主要依赖经验。
- 十万条数据全量两两比较约产生数十亿个关系对,百万、千万级更不可行,必须通过ANN和规则大幅缩小候选。
- 即使每条只召回Top-10,百万级数据仍可能产生千万级候选,Reranker的接口延迟、费用以及向量和HNSW索引空间也是问题。
-
主楼 - jimmyrogue2026-07-2832328
- 牧之2026-07-286203
确实好复杂,乍一想似乎很简单?毕竟ai分析A和B两件事是不是同一件事,好像挺简单的。但实际落地…… 困难重重 ^-^ 我让ai用embedding和rank模型测了小范围数据(几十条),感觉可行,但当数据量达到十万、几十万级别就比较难了。
- Cells2026-07-2815434
^-^ 看着像公共平台舆情监测的需求
有精度要求吗,甲方预算多少,要求什么量级的处理速度?
你举例的数据,不应该只有这些描述性文本信息,应该还有指向更具体的可利用信息(比如违停车牌号,平台工单号,用户ID等等),或许把这些精确信息加上消息发送时间一起加入分类权重更好?
十万条数据全量两两比较显然不行,是不是可以接入一些已有的舆情平台先获取最近热点事件结合人工审核先做一次预分类,然后将十万条数据的依次对这些有限的一些热点事件匹配分类(这样可以分片并行处理,方便扩展),最后对未分类事件做进一步处理?
没做过这种需求,看着确实比较麻烦,反正甲方要是敢漫无边际提需求那我就漫无边际提预算。
