您可以将向量嵌入与其他 MongoDB 数据一起存储。这些嵌入能够捕捉数据中的语义关联,使您能够执行语义搜索并实现 RAG。
开始体验
使用以下教程,了解如何创建向量嵌入并使用向量搜索进行查询。具体来说,您需要执行以下操作:
Define a function that uses an embedding model to generate vector embeddings.
选择您是想使用专有模型还是开源模型。要想获得最先进的嵌入功能,请使用 Voyage AI。
从您的数据创建嵌入并将其存储在 MongoDB 中。
选择是要从新数据还是MongoDB集合中已有的数据创建嵌入。
根据搜索词创建嵌入,并运行向量搜索查询。
对于生产应用程序,您通常会写入脚本来生成向量嵌入。 您可以从此页面上的示例代码开始,并根据您的使用案例进行自定义。
注意
MongoDB 向量搜索自动嵌入服务是一种一键式方式,可对集合中的文本数据启用语义搜索。使用自动嵌入,您无需自行生成、存储或管理 vector embeddings。相反, MongoDB vector search 会自动为您生成和托管 vector embeddings。要学习;了解更多信息,请参阅自动嵌入概述。
Considerations
在创建向量嵌入时请考虑以下因素:
选择创建嵌入的方法
要创建向量嵌入,您必须使用嵌入模型。嵌入模型是用于生成数据数值向量表示的算法。请选择以下方式之一来访问嵌入模型:
方法 | 说明 |
|---|---|
加载开源模型 | If you don't have an API key for a proprietary embedding model, load an open-source embedding model locally from your application. |
使用专有模型 | 大多数 AI 提供商都为其专有的嵌入模型提供 API,您可以使用这些模型创建向量嵌入。要使用最先进的嵌入技术,请使用 Voyage AI。 |
利用一个集成 | You can integrate MongoDB Vector Search with open-source frameworks and AI services to quickly connect to both open-source and proprietary embedding models and generate vector embeddings for MongoDB Vector Search. To learn more, see MongoDB AI Integrations and Partners. |
选择内嵌模型
您选择的嵌入模型会影响查询结果,并决定您在MongoDB Vector Search索引中指定的维数。根据您的数据和使用案例,每种模型都有不同的优势。对于最先进的嵌入,包括多模态和特定领域的嵌入模型,请使用 Voyage AI。
为MongoDB Vector Search 选择嵌入模型时,请考虑以下指标:
向量压缩
If you have a large number of float vectors and want to reduce the storage and WiredTiger footprint (such as disk and memory usage) in mongod, compress your embeddings by converting them to binData vectors.
BinData 是一种存储二进制数据的BSON数据类型。向量嵌入的默认类型是 32 位浮点数 (float32) 的大量。二进制数据比默认大量格式的存储效率更高,因此所需的磁盘空间减少三倍。
存储 binData 向量可以提高查询性能,因为将文档加载到工作集所需的资源更少。这可以显著提高在返回超过 20 个文档的向量查询速度。如果您压缩了 float32 嵌入,您可以使用 float32 或 binData 向量来查询它们。
The tutorial on this page includes an example function that you can use to convert your float32 vectors to binData vectors.
支持的驱动程序
BSON BinData vectors are supported by the following drivers:
C++ Driver v4.1.0 or later
C#/.NET Driver v3.2.0 or later
Go Driver v2.1.0 or later
PyMongo Driver v4.10 or later
Node.js Driver v6.11 or later
Java Driver v5.3.1 or later
Ruby Driver with
bsongem v5.1 or later
背景
浮点向量通常很难压缩,因为数组中的每个元素都有其自己的类型(尽管大多数向量是统一类型的)。因此,将嵌入模型的浮点向量输出转换为带有子类型 float32 的 binData 向量是一种更高效的序列化方案。binData 向量为整个向量存储单一类型描述符,从而减少存储开销。
验证您的嵌入
请考虑以下策略,以确保您的嵌入是正确且最佳的:
后续步骤
在学习如何创建嵌入并使用MongoDB Vector Search查询嵌入后,开始通过实施检索增强生成 (RAG) 来构建生成式AI应用程序:
您还可以将 32-bit float vector embeddings 量化为更少的位数,以进一步减少资源消耗并提高查询速度。要学习;了解更多信息,请参阅About quantization.