Atlas Vector Search 概述
您可以使用 Atlas Vector Search 对 Atlas 中的数据执行向量搜索。当您在集合上定义 Atlas Vector Search 索引时,可以无缝地将向量数据与其他数据一起索引,然后对索引字段执行向量搜索查询。
Atlas Vector Search 支持各种搜索使用案例,包括语义搜索、混合搜索和生成搜索。通过将向量嵌入与其他数据一起存储在 Atlas 中,您可以筛选集合中其他字段的语义搜索查询,并将语义搜索与全文搜索相结合。通过将 Atlas 用作向量数据库,您还可以在 AI 应用程序中利用向量搜索,并将其与流行的 AI 框架和服务集成。
运行MongoDB 6.0.11 、 7.0.2或更高版本的Atlas集群支持Atlas Vector Search ,支持 ANN搜索和MongoDB 6版本。 0 。 16 、 7 。 0 。 10 、 7 。 3 。 2或更高版本用于ENN搜索。
注意
为了获得最佳性能,我们建议部署个独立的搜索节点以进行工作负载隔离。搜索节点支持并发查询执行,以改善单个查询延迟。要了解详情,请参阅查看部署选项。
什么是向量搜索?
向量搜索是一种根据数据语义或潜在含义返回结果的搜索方法。与查找文本匹配的传统全文搜索不同,向量搜索可在多维空间中查找与搜索查询接近的向量。向量越接近您的查询,它们的含义就越相似。
通过解释搜索查询和数据的含义,向量搜索可让您考虑搜索者的意图和搜索上下文,以检索出更相关的结果。
例如,如果您搜索了词语“红色水果”,则全文搜索仅返回显式包含这些关键字的数据。但是,语义搜索可能会返回含义相似的数据,例如苹果或草莓等红色水果。
关键概念
- 向量
向量是一组数字,代表多个维度的数据。向量可以表示任何类型的数据,包括文本、图像、音频数据以及非结构化数据。通过测量向量之间的距离,可以确定语义相似性。
向量的维数由用于创建向量的嵌入模型决定。此外,向量的维数等于向量空间的维数,在向量空间中绘制向量以确定它们的相似度。
具体来说,Atlas Vector Search 使用密集向量,这是一种有利于更小的存储和语义丰富性的高维向量。与稀疏向量相反,密集向量可以包含更多数据,这使得 Atlas Vector Search 能够捕捉更复杂的关系。
- 向量嵌入
向量嵌入或向量化是将数据转换为向量的过程。这些嵌入捕获数据中有意义的关系,并支持语义搜索和检索等任务。要将 Atlas 用作向量数据库,您可以将数据传递到嵌入 模型来创建嵌入,并将这些嵌入作为字段存储在文档中。
Atlas Vector Search 通过识别与查询向量距离最近的向量嵌入来确定语义相似度。
要了解更多信息,请参阅如何创建向量嵌入。
- 内嵌模型
嵌入模型是用于将数据转换为向量嵌入的算法。为此,嵌入模型使用LLM (在大型数据集上训练的机器学习模型)来生成向量嵌入,从而捕获数据的语义。
您选择的嵌入模型决定了您如何配置Atlas Vector Search索引,并根据嵌入模型的训练方式影响您的查询结果。因此,根据数据和使用案例,不同的模型具有不同的优势。要学习;了解更多信息,请参阅选择嵌入模型。
Atlas Vector Search 索引
要对 Atlas 中的数据执行矢量搜索,您必须创建 Atlas Vector Search 索引。 Atlas Vector Search 索引与其他数据库索引分开,用于在查询时高效地检索包含向量嵌入的文档。在 Atlas Vector Search 索引定义中,您可以对集合中包含嵌入的字段进行索引,以启用针对这些字段的向量搜索。 Atlas Vector Search 支持长度小于和等于4096维的嵌入。
您还可以对集合中要运行 Atlas Vector Search 查询的任何布尔值、日期、数字、objectId、字符串和 UUID 字段建立索引来预筛选数据。筛选数据可缩小搜索范围,并确保某些向量嵌入不会被考虑进行比较。
要了解如何为 Atlas Vector Search 编制字段索引,请参阅如何为 Vector Search 编制字段索引。
Atlas Vector Search 查询
Atlas Vector Search支持使用 Hierarchical Navigable Small Worlds 进行近似最近邻 ( ANN )搜索 算法和精确最近邻 ( ENN )搜索。
为了找到最相似的向量,Atlas Vector Search 执行ANN搜索,而无需扫描每个向量嵌入,并对所有索引的向量嵌入执行详尽的ENN搜索。要了解更多信息,请参阅vectorSearch 定义。
Atlas Vector Search 查询由聚合管道阶段组成,其中 $vectorSearch
阶段是管道中的第一个阶段。 基本 Atlas Vector Search 查询的过程如下:
您选择ANN或ENN搜索并指定查询向量,它是表示搜索查询的向量嵌入。
Atlas Vector Search 查找数据中与查询向量最接近的向量嵌入。
Atlas Vector Search 返回包含最相似向量的文档。
要自定义向量搜索查询,您可以使用带有受支持的 查询 或 聚合操作符 的 MQL 匹配表达式对已建立索引的字段数据进行预筛选,也可以添加其他 聚合阶段 来进一步处理和组织结果。
要了解如何创建和运行 Atlas Vector Search 查询,请参阅运行向量搜索查询。
用例
Atlas Vector Search 支持以下类型的向量搜索查询:
语义搜索:使用ANN或ENN搜索算法,根据语义相似性查询向量嵌入。
混合搜索:合并语义搜索和全文搜索查询的结果。要了解更多信息,请参阅使用 Atlas Vector Search 和 Atlas Search 执行混合搜索。
通过将 Atlas 用作矢量数据库,您可以使用 Atlas Vector Search 为您的自然语言处理 (NLP)、机器学习 (ML) 和生成式 AI 应用程序提供支持。
具体来说,您可以通过以下方式实施 检索增强生成 (RAG) :在 Atlas 中存储数据,使用 Atlas Vector Search 从数据中检索相关文档,并利用 法学硕士 回答有关数据的问题。您可以 在本地 实施 RAG ,也可以 将 Atlas Vector Search 与常用框架和服务集成来实施。要了解更多信息,请参阅 使用 Atlas Vector Search 进行检索增强生成 (RAG)。
AI 集成
您可以将 Atlas Vector Search 与 OpenAI、 AWS和 Google 等 AI 提供商提供的流行聊天和嵌入模型结合使用。 MongoDB 和合作伙伴还提供特定的产品集成,帮助您在 AI 支持的应用程序中利用 Atlas Vector Search。这些集成包括内置工具和库,使您能够将 Atlas 用作向量数据库,构建生成式 AI 应用程序,并自始至终实施RAG 。
例如,通过将 Atlas Vector Search 与 LangChain 等开源框架集成 和 LlamaIndex ,您可以构建应用程序来回答有关基于流行的 LLM 的数据的问题。
要了解更多信息并开始使用,请参阅将向量搜索与 AI 技术集成。
后续步骤
要亲身体验创建 Atlas Vector Search 索引和对样本数据运行 Atlas Vector Search 查询,请尝试MongoDB University 的 Atlas Vector Search 课程和以下页面中的教程: