向量库的基本概念
向量库把向量、主键与元数据组织进集合:写入(upsert)、相似度查询(search 或 query)、按主键读取(fetch)、按条件删除(delete)是四类基本操作。各家产品命名不同但数据模型一致,理解这套对应关系后迁移就只是改 API 的问题;真正要留意的是主键类型、批量上限与一致性选项的差异。
基本信息
| 集合 | Milvus 与 Qdrant 都叫 Collection,pgvector 用表加向量列 |
|---|---|
| 记录 | Milvus 的 Entity、Qdrant 的 Point、pgvector 的行 |
| 元数据 | Scalar Field、Payload 或普通列与 JSONB |
| 主键 | 命名各异,建议由业务侧生成稳定 id |
典型使用场景
- 新库选型:按四类基本操作的完备性与客户端成熟度对比候选产品
- 跨库迁移:把集合、记录、元数据、主键对照清楚再写适配层
- 数据修复:按主键读取与按条件删除是清理脏数据的常用手段
- 权限隔离:用集合或分区隔离不同租户的数据边界
- 容量核对:按集合统计文档数确认导入是否完整
四类基本操作
四类基本操作
upsert(ids, vectors, payloads) # 写入或覆盖
search(query_vector, top_k, filter) # 相似度检索,可带过滤
fetch(ids) # 按主键取回记录
delete(filter={...}) # 按条件删除
# 各库 API 名称不同,四类操作的存在形式基本一致
概念对照
| 概念 | Milvus | Qdrant | pgvector |
|---|---|---|---|
| 集合 | Collection | Collection | 表加向量列 |
| 记录 | Entity | Point | 行 |
| 元数据 | Scalar Field | Payload | 普通列或 JSONB |
| 主键 | pk | id | 主键列 |
| 过滤 | 过滤表达式 | Filter | SQL WHERE |
先读目标库的 CRUD 示例再迁移:主键类型、批量写入上限与一致性选项各家不同,照抄旧代码容易在边界处出错。
批量写入要分批并检查返回结果:部分失败是常见情况,只按整体成功判断会漏掉未写入的数据,集合统计数量对不上时先看批量返回。
先明确数据归属再选库:切片内容、向量与元数据三者要能一起导出,否则将来换库时只能重新解析与重新向量化,代价远高于一次迁移脚本。备份策略也要覆盖向量与元数据两侧,只备份一侧无法完整恢复。