向量数据的质量怎么监控?Embedding 漂移怎么发现?

第 1260 题 约 2 分钟读完

本文目录
  1. 面试怎么回答
  2. 向量可能出的问题
  3. 基础的质量检查(入库时)
  4. 一致性检查(定期)
  5. 分布监控
  6. 效果监控(最终标准)

面试怎么回答

向量可能出现生成失败、模型版本混用、输入是空或乱码、和文档不同步、以及数据或提问的分布漂移。入库时检查维度、NaN、全零、范数是否正常,记录模型版本并保证同一索引版本一致,片段文本长度正常。定期做一致性检查:文档、片段、向量数量对账,没有孤儿向量;抽样重算向量和已存的比较,相似度不够高说明模型或预处理变了;文档更新时间晚于向量生成时间的说明没同步。分布上监控新入库向量的平均向量、平均相似度和聚类分布,以及用户提问向量里和现有文档都不相似的比例。最终标准是固定检索评测集的 Recall@K,加上线上最高相似度分布、未找到答案的比例和负评率。

先把这段讲顺;面试官追问时,再展开下面的原理和细节。

详细讲解

RAG 系统上线几个月后,检索效果慢慢变差,却没有任何告警。传统的数据质量规则(空值、唯一性、范围)对向量几乎不起作用:一个 1024 维的浮点数组,怎么判断它「对不对」?面试官问这题,想看你能不能为向量这种新型数据设计质量监控。

向量可能出的问题

  1. 生成失败:向量是空的、全零、维度不对、包含 NaN;
  2. 模型版本混用:一部分向量是旧模型生成的,一部分是新模型,彼此不可比;
  3. 输入有问题:片段文本是空的、乱码、解析失败的内容,生成的向量没有意义;
  4. 数据不同步:文档更新了,向量没更新;文档删除了,向量还在;
  5. 分布漂移:新入库的数据和原有数据的主题、语言、格式发生了变化,或者用户提问的分布变了,检索效果下降。

基础的质量检查(入库时)

  • 维度正确、没有 NaN 和无穷值、不是全零向量;
  • 向量的范数在正常范围(如果模型输出是归一化的,范数应该接近 1);
  • 每条向量记录模型版本,检查同一索引中模型版本一致;
  • 对应的片段文本长度正常、不是乱码。

一致性检查(定期)

  • 文档、片段、向量的数量对账:每个有效文档都有片段,每个片段都有向量,没有孤儿向量;
  • 抽样重算:随机抽一批片段重新生成向量,和存储的向量比较相似度,应该非常接近,否则说明模型或预处理发生了变化;
  • 更新时间检查:文档更新时间晚于向量生成时间的,说明没有同步。

分布监控

  • 统计特征:对新入库的向量,计算平均向量、向量之间的平均相似度、聚类分布,和历史基线对比;
  • 主题分布:对向量聚类,观察各个簇的大小变化,发现新的主题出现或旧主题消失;
  • 查询侧:用户提问的向量分布变化,比如出现了大量和现有文档都不相似的问题,说明知识库覆盖不足。

效果监控(最终标准)

  • 固定的检索评测集,定期跑,监控 Recall@K 的变化;
  • 线上指标:检索结果的最高相似度分布(整体下降说明匹配变差)、「未找到相关信息」回答的比例、负评率。