学习笔记 · Obsidian
云原生向量库:Azure、Cloudflare、Google
结论
- Azure 有两条不同数据模型:DocumentDB 的 MongoDB 兼容接口与 Cosmos DB for NoSQL 的 JSON/SQL 查询接口;旧 MongoDB vCore 名称已 deprecated,不应继续用于新代码。
- Cloudflare Vectorize 适合 Workers 边缘运行;Google Cloud SQL PostgreSQL 适合把向量与关系数据放在托管 Postgres。运行时、过滤 DSL、身份和建表方式都不同。
- 用户 filter 必须参数化。Cosmos NoSQL 文档给出了字符串拼接导致 delete-all 的明确注入案例。
Azure 改名与迁移
Azure Cosmos DB for MongoDB vCore 已由 Microsoft 重命名为 Azure DocumentDB。旧 AzureCosmosDBMongoDBVectorStore 等类只作为 deprecated alias 兼容;新项目应使用 AzureDocumentDBVectorStore,连接变量也迁移到 DocumentDB 命名。
迁移验证包括:索引名称/类型、连接串、字段路径、filter、upsert/delete、查询结果、驱动版本和监控维度。类名兼容不代表部署资源自动迁移。
Cosmos DB for NoSQL
AzureCosmosDBNoSQLVectorStore 将 vector 与 JSON 文档同存,支持:
- 标准 vector search、score threshold、MMR;
- full-text search/ranking(preview);
- vector + full text 的 RRF hybrid(preview);
- 按 ID、参数化 filter 或全量删除;
getContainer()访问底层 Cosmos container。
Managed Identity + RBAC 模式下,身份不能创建 database/container,必须预先建好资源。任何用户条件都应使用 SqlQuerySpec 的 @param;禁止 WHERE ${userFilter}。权限/tenant 条件由服务端强制追加,删除默认拒绝空 filter。
Full-text 与 hybrid 仍为 preview,需要 container full-text policy 和索引;应设置 feature flag、回退到 vector search,并用真实工作负载验证 RRF 权重与费用。
Azure DocumentDB
DocumentDB 提供原生 MongoDB 兼容和 vector search。典型流程是加载/切分文档、fromDocuments() 建库、similarity search、转 Retriever,再关闭 store。连接串和 admin key 属于高敏凭据,生产优先使用细分数据库用户与受控网络。
Cloudflare Vectorize
Cloudflare Vectorize 通过 Wrangler 建 index,并在 wrangler.toml 绑定给 Worker;使用 @langchain/cloudflare,可与 Workers AI Embeddings 组合。
- 文档当时标记 open beta 且需付费计划,能力/价格可能变化。
- 本地调试需
wrangler dev --remote,表明真实向量操作依赖远端服务。 - Worker 的绑定与常规 Node client 不同;要关注 CPU 时间、请求体和子请求额度。
- metadata filter 格式遵循 Vectorize,部署前做 filter 字段和 schema 验证。
Google Cloud SQL PostgreSQL
PostgresEngine 建连接,先 initVectorstoreTable(table, dimension, args),再 PostgresVectorStore.initialize()。支持显式 ID、删除、score search、字符串 filter 和 MMR。
前置工作包括启用 API/计费、实例/数据库/用户和 Google 认证。文档示例使用字符串形式 filter;若条件来自用户,应用必须参数化或通过受控 builder 构造,不能拼接 SQL。
选型与运维
| 需求 | 更自然的候选 |
|---|---|
| Azure JSON 数据与原生 hybrid preview | Cosmos DB for NoSQL |
| MongoDB 兼容 Azure 服务 | Azure DocumentDB |
| Cloudflare Worker 边缘部署 | Vectorize |
| 关系事务、SQL 与向量共存 | Cloud SQL PostgreSQL |
统一监控写入可见延迟、RU/CPU、query latency、throttle、index size、filter selectivity 与成本;用 workload identity 和私网连接,避免长期 admin key。