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

运行MongoDB Vector Search 查询

在本指南中,您可以学习;了解如何使用MongoDB Vector Search功能对文档执行搜索。PHP库允许您使用聚合构建器执行MongoDB Vector Search 搜索查询。

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

注意

MongoDB Search

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

在执行MongoDB Vector Search 查询之前,您必须在集合上创建MongoDB Vector Search索引。要学习有关创建此索引类型的更多信息,请参阅MongoDB搜索索引指南。

将以下类导入到您的应用程序中,以使用聚合构建者执行MongoDB向量搜索搜索查询:

use MongoDB\Builder\Stage;

要在聚合管道中创建 $vectorSearch 阶段,请执行以下操作:

  1. 创建一个大量来存储管道阶段。

  2. 调用 Stage::vectorSearch() 方法以创建MongoDB Vector Search 阶段。

  3. 在 vectorSearch() 方法体内,指定向量查询的条件。

以下代码演示了用于构建基本MongoDB Vector Search 搜索查询的模板:

$pipeline = [ Stage::vectorSearch( /* MongoDB Vector Search query specifications index: '<index name>', path: '<path to embeddings>', ...*/ ),];

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

Parameter
类型
说明

index

string

向量搜索索引的名称

path

array or string

存储向量嵌入的字段

queryVector

array

查询的向量表示

limit

int

要返回的结果数

在本节中,您可以学习如何使用聚合构建者执行MongoDB Vector Search搜索查询。本部分中的示例使用 sample_mflix.embedded_movies集合中的示例数据。

注意

查询向量长度

For demonstrative purposes, the examples in this section use sample query vectors that contain very few elements, compared to the query vector you might use in a runnable application. To view an example that contains the full-length query vector, see the MongoDB Vector Search Quick Start and select PHP from the Select your language dropdown in the upper-right corner of the page.

以下代码对 plot_embedding 向量字段执行MongoDB Vector Search查询:

$pipeline = [ Stage::vectorSearch( index: 'vector', path: 'plot_embedding', queryVector: [-0.0016261312, -0.028070757, -0.011342932], numCandidates: 150, limit: 5, ), Stage::project( _id: 0, title: 1, ),]; $cursor = $collection->aggregate($pipeline); foreach ($cursor as $doc) { echo json_encode($doc), PHP_EOL;}

以下代码执行与前面示例相同的查询,但仅输出 title字段和 vectorSearchScore 元字段,后者描述文档与查询向量的匹配程度:

$pipeline = [ Stage::vectorSearch( index: 'vector', path: 'plot_embedding', queryVector: [-0.0016261312, -0.028070757, -0.011342932], numCandidates: 150, limit: 5, ), Stage::project( _id: 0, title: 1, score: ['$meta' => 'vectorSearchScore'], ),]; $cursor = $collection->aggregate($pipeline); foreach ($cursor as $doc) { echo json_encode($doc), PHP_EOL;}

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

可选参数
类型
说明
默认值

exact

bool

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

false

filter

QueryInterface or array

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

不过滤

numCandidates

int or null

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

null

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