Docs 菜单

Atlas Vector Search

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

注意

部署兼容性

仅当连接到MongoDB Atlas集群时才能使用Atlas Vector Search功能。此功能不适用于自我管理部署。

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

注意

您可能无法将本指南中描述的方法用于每种类型的Atlas Vector Search查询。对于更复杂的使用案例,请使用聚合构建器创建聚合管道。

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

您可以通过以下两种方式创建Atlas Search索引:

  • create()Schema 门面上调用 方法,并向vectorSearchIndex() 辅助方法传递包含索引创建详细信息。要学习;了解有关此策略的更多信息,请参阅模式构建器指南的管理Atlas Search和 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 集成中使用Atlas Vector Search API 。 Laravel 集成提供 vectorSearch() 方法作为查询构建器方法和 Eloquent 模型方法。您可以使用 vectorSearch() 方法对集合中的文档运行Atlas Vector Search查询。

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

Parameter
类型
说明

index

string

向量搜索索引的名称

path

string

存储向量嵌入的字段

queryVector

array

查询的向量表示

limit

int

要返回的结果数

vector以下代码使用在前面的“创建Atlas Vector Search索引”部分中创建的movies 索引对 集合执行Atlas 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() 方法执行多种类型的Atlas Search查询。根据所需的查询,您可以将以下可选参数传递给 vectorSearch()

可选参数
类型
说明
默认值

exact

bool

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

false

filter

QueryInterfacearray

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

不过滤

numCandidates

intnull

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

null

注意

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

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