- 文档首页
文档数据库 MongoDB 版
用户指南
AI 能力
向量索引
概述
概述
本文介绍文档数据库 MongoDB 版的向量搜索功能。
说明
当前向量搜索功能正处于邀测阶段,如需使用,请提交工单联系技术申请使用。 向量搜索是一种基于数据语义或内在含义返回检索结果的搜索方法。与传统的全文搜索(即通过查找文本匹配来实现)不同,向量搜索会在多维空间中寻找与搜索查询相近的向量。向量与查询之间的距离越近,其含义就越相似。通过解析搜索查询和数据的含义,向量搜索能够考虑搜索者的意图和搜索语境,从而检索出更具相关性的结果。更多详情,请参见 Vector Search。 文档数据库 MongoDB 提供了 Vector Search 能力,您可以将 Vector Search 与其他嵌入模型和生成模型结合使用,满足您在应用程序中实现向量搜索、检索增强生成(RAG)和 AI Agent 等需求。 此外,文档数据库 MongoDB 版还提供 Auto Embedding 能力,结合方舟的 Embedding 模型,让您无需在应用中维护向量生成流程。
文档数据库 MongoDB 版的 Vector Search 常用于如下向量搜索场景。
- 使用 ANN 或 KNN 搜索算法,根据语义相似性查询向量嵌入。 更多详情,请参见向量搜索查询。
使用向量搜索功能前,您需要先确定向量的生成方式:
- 自动:在创建索引时指定要向量化的文本字段和模型,MongoDB 自动完成向量的生成、存储与更新,查询时自动为查询文本生成向量。您无需编写向量生成代码,也无需维护向量与源数据的同步。具体操作步骤,请参见创建 Auto Embedding 向量索引。
- 手动:自行调用嵌入模型生成向量,与原始数据一同写入,查询时自行生成查询向量。
下文以手动方式为例,介绍具体操作步骤。
- 使用合适的嵌入模型(如火山引擎方舟平台提供的模型)将原始数据(如文本、图像)转换为向量(即浮点数数组)。您需要通过编写独立的程序或脚本,调用所选模型的网络接口或加载本地模型来生成这些向量数据。目前暂不支持内置的向量生成功能。
说明
关于使用不同模型和编程语言生成向量的具体代码实现(如 Python 示例),请参见如何手动创建向量嵌入。该指南提供了从加载数据、调用模型到存储向量的完整脚本示例。 - 将原始数据和已生成的向量字段一同写入集合。向量字段以数组类型(如 [0.1, 0.2, ...])存储。
- 为获得高效的检索性能,需在向量字段上创建vector类型索引。创建时,可重点关注以下参数:
- type:固定设置为"vector",表示此为向量搜索索引。
- dimensions:向量维度,必须与您的嵌入模型输出的向量维度完全一致,否则索引创建将失败。
- similarity:向量相似度计算方式,可选cosine(余弦相似度)、euclidean(欧氏距离)或dotProduct(点积)。
- quantization:向量量化类型,用于压缩向量以降低存储和内存开销,可选值如下:
- "none"(默认):不量化,使用 32 位浮点数全精度向量。
- "scalar":标量量化,将向量从浮点数转换为整数(int8),存储和内存开销约为全精度的 1/4。
- "binary":二值量化,将向量转换为 1 位(0 或 1)表示。此方式可大幅降低内存开销。
说明
关于索引的创建流程和配置项说明,请参见创建索引。 - 使用$vectorSearch聚合阶段进行向量相似性查询。您需要指定查询向量(queryVector)、目标索引(index)和返回结果数(limit)等核心参数。此外,还支持通过filter参数进行预过滤,或通过调整numCandidates参数来平衡查询延迟与召回率。
说明
关于$vectorSearch的完整语法、所有参数说明、预过滤详情及性能调优建议,请参见运行向量搜索查询。 最近更新时间:2026.10.13 19:43:53