Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Executar uma query de pesquisa vetorial do MongoDB

Neste guia, você pode aprender a realizar pesquisas em seus documentos usando o recurso Pesquisa Vetorial do MongoDB. A biblioteca PHP permite que você execute queries de pesquisa do MongoDB Vector Search usando o Construtor de Agregação.

To learn more about MongoDB Vector Search, see the MongoDB Vector Search Overview. The MongoDB Vector Search implementation for the PHP library internally uses the $vectorSearch aggregation operator to perform queries. To learn more about this operator, see the $vectorSearch reference in the Atlas documentation.

Observação

MongoDB Search

Para realizar pesquisas avançadas de texto completo em seus documentos, você pode usar a API de pesquisa do MongoDB . Para saber mais sobre esse recurso, consulte o Executar uma query de pesquisa do MongoDB guia.

Antes de executar queries de pesquisa do MongoDB pesquisa vetorial, você deve criar um índice do MongoDB pesquisa vetorial em sua coleção. Para aprender mais sobre como criar esse tipo de índice, consulte o guia Índices de pesquisa do MongoDB.

Importe as seguintes classes para o seu aplicativo para executar query de pesquisa do MongoDB Vector Search usando os construtores de agregação:

use MongoDB\Builder\Stage;

Para criar um estágio $vectorSearch em seu pipeline de agregação , execute as seguintes ações:

  1. Crie uma array para armazenar os estágios do pipeline.

  2. Chamar o método Stage::vectorSearch() para criar o estágio MongoDB pesquisa vetorial.

  3. No corpo do método vectorSearch(), especifique os critérios para sua query de vetor.

O código abaixo demonstra o modelo para a construção de queries de pesquisa básicas do MongoDB Vector Search:

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

Você deve passar os seguintes parâmetros para o método vectorSearch() :

Parâmetro
Tipo
Descrição

index

string

Nome do índice de pesquisa vetorial

path

array ou string

Campo que armazena incorporações de vetor

queryVector

array

Representação vetorial da sua query

limit

int

Número de resultados a retornar

Nesta seção, você pode aprender como executar query de pesquisa do MongoDB Vector Search usando o Construtor de Agregação. Os exemplos nesta seção utilizam dados de amostra da coleção sample_mflix.embedded_movies.

Observação

Comprimento do vetor de query

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.

O seguinte código executa uma query do MongoDB pesquisa vetorial no campo de vetor plot_embedding :

$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;
}

O código a seguir executa a mesma query do exemplo anterior , mas gera apenas o campo title e o campo vectorSearchScore , que descreve até que ponto o documento corresponde ao vetor de query:

$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;
}

Você pode utilizar o método vectorSearch() para executar muitos tipos de queries de pesquisa do MongoDB Vector Search. Dependendo da query desejada, você pode passar os seguintes parâmetros opcionais para vectorSearch():

Parâmetro opcional
Tipo
Descrição
Valor padrão

exact

bool

Especifica se uma pesquisa deve ser executada no vizinho mais próximo exato (true) ou no vizinho mais próximo aproximado (false)

false

filter

QueryInterface ou array

Especifica um pré-filtro para documentos a serem pesquisados

sem filtragem

numCandidates

int ou null

Especifica o número de vizinhos mais próximos a serem usados durante a pesquisa

null

To learn more about these parameters, see the Fields section of the $vectorSearch operator reference in the Atlas documentation.