---
type: study
created: 2026-08-11
updated: 2026-08-11
sensitivity: standard
status: verified
tags:
  - study
  - langchain
  - typescript
  - integrations
  - vector-store
topic: LangChain JavaScript 托管与专用向量数据库
sources:
  - https://docs.langchain.com/oss/javascript/integrations/vectorstores/mongodb_atlas
  - https://docs.langchain.com/oss/javascript/integrations/vectorstores/pinecone
  - https://docs.langchain.com/oss/javascript/integrations/vectorstores/qdrant
  - https://docs.langchain.com/oss/javascript/integrations/vectorstores/turbopuffer
  - https://docs.langchain.com/oss/javascript/integrations/vectorstores/weaviate
last_verified: 2026-08-11
---
# 托管与专用向量数据库

## 结论

- MongoDB Atlas、Pinecone、Qdrant、turbopuffer、Weaviate 都实现统一 VectorStore，但 ID、删除、filter、hybrid、server-side embedding 与写后可见性差异明显。
- 生产选型要先确定多租户隔离、metadata 查询、hybrid、数据驻留、索引生命周期和成本，再比较 SDK 便利性。
- 所有服务都要验证 embedding dimension；index 维度或模型变更应新建索引，而非混写。

## 能力对照

| 后端 | 特色 | 重要边界 |
|---|---|---|
| MongoDB Atlas | Mongo 文档 + Vector Search；8.2+ 可自动 embedding | Node-only；filter 字段需进 index；写后有索引延迟 |
| Pinecone | 托管 namespace/index、批量写 | SDK 文档固定 v5；写后轻微延迟；维度需预建匹配 |
| Qdrant | 向量 point + payload、丰富 filter | 当前 LangChain JS 页面称 top-level ID/delete 不支持，filter key 加 `metadata.` |
| turbopuffer | namespace 与低成本检索 | 当前只支持 string metadata value |
| Weaviate | object/vector、structured filter、hybrid、生成式 RAG | ID 必须 UUID；client v3 以 collections 为主 |

## MongoDB Atlas

手动 embedding 要求 MongoDB 7.0+，客户端生成 vector；自动 embedding 要求 8.2+，index 的 `autoEmbed` 配置 Voyage 模型，由 Atlas 服务端生成。

- 手动模式构造器传 embeddings；自动模式只传配置。
- `textKey`、`embeddingKey` 必须与 index definition 一致。
- metadata 预过滤字段也要在 vector index 中声明。
- 同 ID 写入会更新；新文档需等待 Atlas Search index 可见，自动 embedding 延迟更长。
- 结束时关闭 `MongoClient`，避免连接泄漏。

自动 embedding 简化客户端，但把模型版本、费用与数据处理移到 MongoDB 控制面；需固定 model/index 配置并建立重建策略。

## Pinecone

`PineconeStore.fromExistingIndex()` 接受官方 v5 SDK index，可设置 `maxConcurrency` 和 namespace。一个 batch 最多 1000 vectors 的文档注释意味着吞吐需要按 provider 限额和内存控制。

- namespace 常用于租户/版本隔离，但仍需服务端强制映射，不能让客户端自由指定。
- ID 写入、按 ID 删除和 metadata filter 都受支持。
- 写后有短暂不可见窗口；异步任务要区分“写请求成功”和“可检索”。

## Qdrant

`QdrantVectorStore.fromExistingCollection()` 使用 REST client；payload filter 的字段以 `metadata.` 前缀引用。当前页面明确 top-level document IDs 和 deletion 不受该 wrapper 支持，因此若业务要求精确删除，要核对最新 API/SDK 或使用受控底层 client，不能假定通用 `delete()` 一定可用。

## turbopuffer

按 namespace 创建 `TurbopufferVectorStore`，支持返回 ID、按 ID/全量删除、existing ID upsert 与原生 filter expression。当前 metadata 仅允许字符串，数字/日期需要规范化并承担排序/范围查询语义损失；选型前用真实 filter 验证。

## Weaviate

使用官方 TypeScript v3 client 的 `connectToWeaviateCloud`、`connectToLocal` 或 `connectToCustom`。collection 可由 auto-schema 创建，也能显式配置 named vectors、vectorizer、reranker、generative model。

- 自定义 ID 必须 UUID；
- `Filters` helper 做结构化过滤；
- hybrid search 融合 vector 与 BM25F，`alpha` 控制权重；
- `generate()` 在 Weaviate 内组合检索与生成，会改变模型调用、数据流和费用边界。

## 上线检查

1. 为 tenant 和 index version 设计不可绕过的 namespace/collection。
2. 对 add/upsert/delete 建立幂等 ID；观测 indexing lag 并避免立即读误判。
3. filter 字段预建索引，压测低/高选择性条件。
4. 后端返回 score 含义不同，应用不得跨后端共用固定阈值。
5. 做备份/导出、索引重建、双写切换和 provider outage 演练。

