Menu Docs
Página inicial do Docs
/ / /
Manual da Biblioteca PHP
/

Atlas Vector Search

Nesta página

  • Visão geral
  • Índice do Atlas Vector Search
  • Estágio de agregação do Vector Search
  • Exemplos de query do Atlas Search
  • Query de Vector Search básica
  • Pontuação de pesquisa vetorial
  • Opções de Vector Search

Neste guia, você pode aprender como realizar pesquisas em seus documentos usando o recurso Atlas Vector Search . A biblioteca PHP permite executar queries do Atlas Vector Search usando o Construtor de aggregation.

Observação

Compatibilidade de implantação

Você pode usar a funcionalidade Atlas Vector Search somente quando se conectar a clusters do MongoDB Atlas . Esta funcionalidade não está disponível para implementações autogerenciadas.

Para saber mais sobre o Atlas Vector Search, consulte a Visão geral do Atlas Vector Search. A implementação do Atlas Vector Search para a biblioteca PHP usa internamente o operador de agregação $vectorSearch para executar as queries. Para saber mais sobre este operador, consulte a referência $vectorSearch na documentação do Atlas.

Observação

Atlas Search

Para executar a pesquisa avançada de texto completo em seus documentos, você pode usar a API de Atlas Search . Para saber mais sobre esse recurso, consulte o guia Atlas Search.

Antes de executar queries do Atlas Vector Search , você deve criar um índice do Atlas Vector Search em sua collection. Para saber mais sobre como criar esse tipo de índice, consulte o guia Índices de Atlas Search.

Importe as seguintes classes para o seu aplicação para executar queries do Atlas Search usando o Aggregation Builder:

use MongoDB\Builder\Pipeline;
use MongoDB\Builder\Stage;

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

  1. Crie uma instância Pipeline para armazenar os estágios do pipeline.

  2. Chame o método Stage::vectorSearch() para criar o estágio do Atlas Vector Search .

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

O seguinte código demonstra o modelo para construir queries básicas do Atlas Search :

$pipeline = new Pipeline(
Stage::vectorSearch(
/* Atlas 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 queries do Atlas Vector Search usando o Construtor de Agregações. Os exemplos nesta seção utilizam dados de amostra da coleção sample_mflix.embedded_movies.

Observação

Comprimento do vetor de query

Para fins demonstrativos, os exemplos nesta seção usam exemplos de vetores de consulta que contêm pouquíssimos elementos, em comparação com o vetor de consulta que você pode usar em um aplicação executável . Para visualizar um exemplo que contém o vetor de query completo, consulte o Início Rápido do Atlas Vector Search e selecione PHP no menu suspenso Select your language no canto superior direito da página.

O seguinte código executa uma query do Atlas Vector Search no campo de vetor plot_embedding :

$pipeline = new 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":"Thrill Seekers"}
{"title":"About Time"}
{"title":"Timecop"}
// Results truncated

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 = new 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;
}
{"title":"Thrill Seekers","score":0.927734375}
{"title":"About Time","score":0.925750732421875}
{"title":"Timecop","score":0.9241180419921875}
// Results truncated

Você pode utilizar o método vectorSearch() para executar muitos tipos de queries do Atlas 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

Para saber mais sobre esses parâmetros, consulte a seção Campos da referência do operador $vectorSearch na documentação do Atlas.

Voltar

Atlas Search