X:000 · Y:000SECTOR / AIv0.9.SIGNALNO_ADS // NO_TRACK
CILLIAN.AI
← MEMORY

向量库运维:索引、召回与容量规划

RAG 背后的向量库怎么稳着跑:索引类型、重建窗口、过滤策略、容量与延迟的权衡。

2 MIN READ~1000 CHARS

向量库往往在 Demo 里「随便选一个」,到生产才暴露问题:召回掉了、过滤变慢、重建索引卡死写入。

本文聚焦运维视角,不重复讲 RAG 业务链路(见《从零理解 RAG》)。

你真正在运维的对象

  • 集合 / Collection:维度、度量(cosine / L2)、元数据字段
  • 索引:HNSW、IVF、DiskANN… 参数决定召回与内存
  • 写入路径:实时 upsert vs 批量导入
  • 查询路径:topK、filter、rerank 前置/后置

把这四块画成拓扑,出问题才知道该拧哪颗螺丝。

索引参数别拍脑袋

以 HNSW 为例(概念层面):

  • M / efConstruction:建库质量与内存
  • efSearch:查询时召回与延迟的旋钮

实践:

  1. 用固定评测集(问题 + 期望文档 ID)扫 efSearch
  2. 画出 Recall@K vs P95 latency 曲线,选拐点
  3. 把选定参数写进配置与变更记录,禁止「线上随手改」

元数据过滤的坑

「先向量检索再过滤」和「带 filter 的混合检索」延迟差一个数量级都常见。

建议:

  • 高频过滤字段建好索引(租户 ID、文档类型、时间)
  • 避免超高基数字符串乱过滤
  • 过滤选择性极高时,考虑先按元数据缩小候选再向量搜

容量与重建

容量规划要同时看:

维度 关注点
向量数 × 维度 内存 / 磁盘上限
QPS 查询副本数
写入速率 是否需要写缓冲 / 异步索引
重建窗口 全量重建要多久、是否双写

常见安全操作:

  1. 蓝绿索引:新索引建好后切流量,再删旧索引
  2. 双写窗口:迁移期写入两边,避免丢增量
  3. 只读切换瞬间:短暂停写或接受短暂延迟

监控与告警

最少要有:

  • 查询 P50 / P95、超时率
  • 空结果率(突然升高 → embedding 或数据问题)
  • 索引大小与内存水位
  • 写入失败 / 积压长度

召回变差不一定是模型问题——版本错配(旧 embedding + 新库)是经典事故。

运维清单

  • embedding 模型版本与维度写进集合元数据
  • 有离线评测集,发版可对比 Recall
  • 重建有演练记录(耗时、回滚步骤)
  • 租户级配额,防止单租户打爆共享集群

向量库稳了,RAG 才有资格谈「效果迭代」;否则你优化的是噪声。

RELATED

NEXT STEP

本篇已归档到 MEMORY。继续解码相邻信号,或回到档案首页。