对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

运行MongoDB Vector Search 查询

在本指南中,您可以学习;了解如何使用MongoDB Vector Search功能对文档执行搜索。Laravel MongoDB提供了一个API来直接对模型执行MongoDB Vector 搜索查询。本指南介绍了如何创建 MongoDB Vector Search 搜索索引,并示例说明了如何使用 Laravel 集成来执行搜索。

注意

部署兼容性

仅当连接到MongoDB Atlas集群时才能使用MongoDB 向量搜索功能。此功能不适用于自管理部署。

要学习;了解有关MongoDB Vector Search 的更多信息,请参阅Atlas文档中的概述。 MongoDB Vector Search API在内部使用$vectorSearch 聚合操作符符来执行查询。要学习;了解有关此操作符的更多信息,请参阅Atlas文档中的 $vectorSearch 参考资料。

注意

您可能无法将本指南中描述的方法用于所有类型的 MongoDB 向量搜索查询。对于更复杂的使用案例,请使用聚合操作来创建聚合管道。

要对文档执行高级全文搜索,可以使用 Laravel MongoDB MongoDB Search API。要了解此功能,请参阅运行 MongoDB 搜索查询指南。

您可以通过以下任一方式创建 MongoDB 搜索索引:

  • 调用Schema外观上的create()方法,并传递带有索引创建详细信息的vectorSearchIndex()辅助程序方法。要了解有关此策略的更多信息,请参见 Schema Builder 指南的管理 MongoDB Search 和 MongoDB Vector Search 索引部分。

  • createSearchIndex()访问集合,然后从MongoDB PHP库调用 方法。您必须将type 选项指定为'vectorSearch' ,如以下代码所示:

    $collection = DB::connection('mongodb')->getCollection('movies');
    $collection->createSearchIndex([
    'fields' => [
    [
    'type' => 'vector',
    'numDimensions' => 4,
    'path' => 'embeddings',
    'similarity' => 'cosine'
    ],
    ],
    ], ['name' => 'vector_index', 'type' => 'vectorSearch']);

在本节中,您可以学习;了解如何在 Laravel 集成中使用MongoDB Vector Search API 。Laravel 集成提供 vectorSearch() 方法作为查询构建者方法和 Eloquent 模型方法。您可以使用 vectorSearch() 方法对集合中的文档运行 MongoDB Vector 搜索查询。

您必须将以下参数传递给vectorSearch()方法:

Parameter
类型
说明

index

string

向量搜索索引的名称

path

string

存储向量嵌入的字段

queryVector

array

查询的向量表示

limit

int

要返回的结果数

vector以下代码使用在前面的“创建MongoDB Vector Search 索引”部分中创建的movies 索引对 集合执行MongoDB Vector Search查询:

$movies = Book::vectorSearch(
index: 'vector',
path: 'vector_embeddings',
// Vector representation of the query `coming of age`
queryVector: [-0.0016261312, -0.028070757, ...],
limit: 3,
);

您可以使用 vectorSearch() 方法执行多种类型的MongoDB搜索查询。根据所需的查询,您可以将以下可选参数传递给 vectorSearch():

可选参数
类型
说明
默认值

exact

bool

指定是运行精确最近邻 (true) 还是近似最近邻 (false)搜索

false

filter

QueryInterface or array

为要搜索的文档指定预筛选器

不过滤

numCandidates

int or null

指定搜索过程中要使用的最近邻数量

null

注意

要构造 QueryInterface实例,您必须将 MongoDB\Builder\Query 类导入到您的应用程序中。

$vectorSearch要学习;了解有关这些参数的更多信息,请参阅Atlas文档中 操作符参考的字段部分。