MongoDB Atlas Vector Search

MongoDB Atlas Vector Search

Atlas 托管服务中的向量近邻检索功能

核心功能

Atlas Vector Search 是 MongoDB Atlas 托管服务的一项功能,用 $vectorSearch 聚合阶段在集合上做近邻检索,向量与业务文档同库,适合在既有 MongoDB 应用上直接接入 RAG 与语义搜索。

功能亮点

同库检索

向量与业务文档同集合存储,无需另建独立向量库与管理系统

聚合串联

向量检索后可串 $project、$lookup 等聚合阶段

可调召回

exact 设 false 走近似,靠 numCandidates 调召回

预过滤

把布尔、数值等字段声明为 filter 先缩范围再检索

适用场景

• 在既有 MongoDB 应用上直接加向量检索,支撑 RAG。
• 用向量近邻做相似文档、推荐内容召回。
• 结合聚合管道,向量检索后继续做业务加工。

安装配置

bash
控制台操作步骤(无 CLI 安装命令,以下为操作指引):
1. 注册 Atlas 账号并创建 M0 免费集群
2. 为账号或 API 密钥授予向量检索所需权限
3. 加载样例数据(如 sample_mflix)
4. 在集合的 Search 与 Vector Search 入口新建索引
5. 用 mongosh 执行下方「用法」中的 createSearchIndex 创建向量索引

使用方法

bash
创建向量索引定义:
{
  "fields": [
    {
      "type": "vector",
      "path": "<field>",
      "numDimensions": 3,
      "similarity": "euclidean",
      "quantization": "none"
    },
    {
      "type": "filter",
      "path": "<field>"
    }
  ]
}

用 mongosh 创建(auto-embedding 用例可加相应配置):
db.movies.createSearchIndex("idx", "vectorSearch", { ... })

聚合管道查询:
db.movies.aggregate([
  {
    $vectorSearch: {
      index: "idx",
      path: "plot_embedding",
      queryVector: [0.1, 0.2, 0.3],
      numCandidates: 100,
      limit: 10
    }
  },
  {
    $project: {
      title: 1,
      score: { $meta: "vectorSearchScore" }
    }
  }
])

关键指标

尚未核验对标产品,此处只列本工具自身指标,不做对比结论。

指标MongoDB Atlas Vector Search
价格免费增值
开源
上手难度进阶

相关工具

优点

  • 向量与业务数据同库同集合,免去数据同步。
  • 作为 Atlas 托管功能,无需自建与运维向量服务。
  • 支持 euclidean/cosine/dotProduct 与量化压缩。
  • M0 免费集群可用,入门成本低。

缺点

  • 仅限 Atlas 托管环境,无法在自建 MongoDB 使用。
  • $vectorSearch 须为管道首个阶段,不能接在 $lookup 子查询后。
  • 单次查询 numCandidates 上限为 10000,影响大候选召回。
  • 免费层最多 3 个索引,Flex 层最多 10 个索引。