Menu Docs
Página inicial do Docs
/ /

MongoDB Vector Search

Neste guia, você pode aprender a realizar pesquisas em seus documentos usando o recurso Pesquisa Vetorial do MongoDB. O Laravel MongoDB fornece uma API para executar queries de pesquisa do MongoDB Vector Search diretamente com seus modelos. Este guia descreve como criar índices de pesquisa vetorial do MongoDB e fornece exemplos de como usar a integração Laravel para realizar pesquisas.

Observação

Compatibilidade de implantação

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

Para saber mais sobre o MongoDB pesquisa vetorial, veja o Visão geral na documentação do Atlas. A API de pesquisa vetorial do MongoDB 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

Talvez você não consiga usar os métodos descritos neste guia para todos os tipos de query do MongoDB pesquisa vetorial. Para casos de uso mais complexos, crie um pipeline de agregação usando o Construtor de agregação.

Para realizar pesquisas avançadas de texto completo em seus documentos, você pode usar a API de pesquisa do MongoDB do Laravel MongoDB . Para aprender mais sobre este recurso, consulte o guia Pesquisa do MongoDB.

Você pode criar um índice de pesquisa do MongoDB de uma das seguintes maneiras:

  • Chame o método create() na fachada Schema e passe o método assistente vectorSearchIndex() com os detalhes da criação do índice. Para aprender mais sobre essa estratégia, consulte a seção Gerenciar índices de pesquisa do MongoDB e pesquisa vetorial do MongoDB do guia Construtor de Esquema.

  • Acesse uma coleção e, em seguida, chame o método createSearchIndex() da biblioteca PHP do MongoDB . Você deve especificar a opção type como 'vectorSearch', conforme mostrado no código a seguir:

    $collection = DB::connection('mongodb')->getCollection('movies');
    $collection->createSearchIndex([
    'fields' => [
    [
    'type' => 'vector',
    'numDimensions' => 4,
    'path' => 'embeddings',
    'similarity' => 'cosine'
    ],
    ],
    ], ['name' => 'vector_index', 'type' => 'vectorSearch']);

Nesta seção, você pode aprender como usar a API de pesquisa vetorial do MongoDB na integração com o Laravel. A Integração Laravel fornece o método vectorSearch() como um método construtor de query e como um método de modelo Eloquent. Você pode usar o método vectorSearch() para executar query de pesquisa do MongoDB Vector Search em documentos em suas coleções.

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

string

Campo que armazena incorporações de vetor

queryVector

array

Representação vetorial da sua query

limit

int

Número de resultados a retornar

O código a seguir usa o índice vector criado na seção anterior Criar um índice de pesquisa vetorial do MongoDB para executar uma query do MongoDB pesquisa vetorial na coleção movies:

$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."
}
]

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

Observação

Para construir uma instância do QueryInterface, você deve importar a classe MongoDB\Builder\Query para seu aplicação.

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

Voltar

MongoDB Search

Nesta página