Overview
在本指南中,您可以学习;了解如何使用MongoDB Vector Search功能对文档执行搜索。Laravel MongoDB提供了一个API来直接对模型执行MongoDB Vector 搜索查询。本指南介绍了如何创建 MongoDB Vector Search 搜索索引,并示例说明了如何使用 Laravel 集成来执行搜索。
注意
部署兼容性
仅当连接到MongoDB Atlas集群时才能使用MongoDB 向量搜索功能。此功能不适用于自管理部署。
要学习;了解有关MongoDB Vector Search 的更多信息,请参阅Atlas文档中的 概述。MongoDB 向量搜索 API 在内部使用 $vectorSearch聚合操作符来执行查询。要学习有关此操作符的更多信息,请参阅Atlas文档中的 $vectorSearch 参考资料。
注意
您可能无法将本指南中描述的方法用于每种类型的MongoDB 向量搜索查询。对于更复杂的使用案例,请使用 聚合构建者。创建聚合管道。
要对文档执行高级全文搜索,可以使用 Laravel MongoDB MongoDB Search API。要了解此功能,请参阅MongoDB 搜索指南。
创建MongoDB Vector Search 索引
您可以通过以下任一方式创建 MongoDB 搜索索引:
调用
Schema外观上的create()方法,并传递带有索引创建详细信息的vectorSearchIndex()辅助程序方法。要了解有关此策略的更多信息,请参见 Schema Builder 指南的管理 MongoDB Search 和 MongoDB Vector Search 索引部分。访问集合,然后从MongoDB PHP库调用
createSearchIndex()方法。您必须将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 | 类型 | 说明 |
|---|---|---|
|
| 向量搜索索引的名称 |
|
| 存储向量嵌入的字段 |
|
| 查询的向量表示 |
|
| 要返回的结果数 |
以下代码使用在前面的创建MongoDB Vector Search 索引部分中创建的 vector索引对 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, );
[ { "title": "Sunrising", "plot": "A shy teenager discovers confidence and new friendships during a transformative summer camp experience." }, { "title": "Last Semester", "plot": "High school friends navigate love, identity, and unexpected challenges before graduating together." } ]
您可以使用 vectorSearch() 方法执行多种类型的MongoDB搜索查询。根据所需的查询,您可以将以下可选参数传递给 vectorSearch():
可选参数 | 类型 | 说明 | 默认值 |
|---|---|---|---|
|
| 指定是运行精确最近邻 ( |
|
|
| 为要搜索的文档指定预筛选器 | 不过滤 |
|
| 指定搜索过程中要使用的最近邻数量 |
|
注意
要构造 QueryInterface实例,您必须将 MongoDB\Builder\Query 类导入到您的应用程序中。