Você pode armazenar incorporações de vetores junto com seus outros dados do MongoDB. Essas incorporações capturam relacionamentos significativos nos seus dados e permitem que você execute pesquisas semânticas e implemente o RAG.
Começar
Use o seguinte tutorial para aprender como criar incorporações vetoriais e consultá‑las usando a pesquisa vetorial. Especificamente, você executa as seguintes ações:
Defina uma função que utiliza um modelo de incorporação para gerar incorporações vetoriais.
Selecione se deseja usar um modelo proprietário ou de código aberto. Para obter incorporações de última geração, utilize a Voyage AI.
Crie incorporações dos seus dados e armazene‑os no MongoDB.
Selecione se deseja criar incorporações a partir de novos dados ou de dados existentes que você já tem em uma coleção MongoDB .
Crie incorporações a partir de seus termos de pesquisa e execute uma query de pesquisa vetorial.
Para aplicativos de produção, normalmente você escreve um script para gerar incorporações vetoriais. Você pode começar com o código de amostra nesta página e personalizá-lo para seu caso de uso.
Pré-requisitos
Para concluir este tutorial, você deve ter o seguinte:
Use um Modelo de incorporação
Criar incorporações a partir de dados
Nesta seção, você cria incorporações vetoriais a partir de seus dados usando a função que você definiu e, em seguida, armazena essas incorporações em uma coleção do MongoDB.
Criar incorporações para queries
Nesta seção, você indexa as incorporações vetoriais na sua coleção e cria uma incorporação que é usada para executar uma query de pesquisa de vetor de amostra.
A pesquisa vetorial retorna documentos cujas incorporações estão mais próximas da incorporação da sua consulta. Isso indica que eles são semelhantes em significado.
Considerações
Considere os seguintes fatores ao criar incorporações vetoriais:
Escolha de um método para criar incorporações
Para criar incorporações vetoriais, você deve usar um modelo de incorporação. Modelos de incorporação são algoritmos que você usa para gerar representações numéricas dos seus dados. Escolha uma das seguintes formas para acessar um modelo de incorporação:
Método | Descrição |
---|---|
Carregue um modelo de código aberto | Se você não tiver uma chave API para um modelo de incorporação proprietário, carregue um modelo de incorporação de código aberto localmente a partir do seu aplicativo. |
Use um modelo proprietário | A maioria dos fornecedores de IA oferece APIspara seus modelos de incorporação proprietários que você pode usar para criar incorporações vetoriais. Para incorporações de última geração, use Voyage AI. |
Aproveite uma integração | Você pode integrar o MongoDB Vector Search com estruturas de código aberto e serviços de IA para se conectar rapidamente a modelos de incorporação de código aberto e proprietários e gerar incorporações vetoriais para o MongoDB Vector Search. Para saber mais, consulte Integrar MongoDB com tecnologias de IA. |
Escolha de um modelo de incorporação
O modelo de incorporação escolhido afeta os resultados da query e determina o número de dimensões especificadas no índice do MongoDB Vector Search . Cada modelo oferece vantagens diferentes, dependendo dos seus dados e caso de uso. Para incorporações de última geração, incluindo modelos de incorporação multimodais e específicos de domínio, use Voyage AI.
Ao escolher um modelo de incorporação para o MongoDB Vector Search, considere as seguintes métricas:
Dimensões de incorporação: o comprimento da incorporação do vetor.
Embeddings menores são mais eficientes em termos de armazenamento, enquanto embeddings maiores podem capturar relacionamentos mais sutis em seus dados. O modelo que você escolher deve encontrar um equilíbrio entre eficiência e complexidade.
Máximo de tokens: o número de tokens que podem ser compactados em uma única incorporação.
Tamanho do modelo: o tamanho do modelo em gigabytes.
Embora os modelos maiores tenham melhor desempenho, eles exigem mais recursos computacionais à medida que você dimensiona o MongoDB Vector Search para a produção.
Média de recuperação: uma pontuação que mede o desempenho dos sistemas de recuperação.
Uma pontuação mais alta indica que o modelo é melhor na classificação de documentos relevantes no topo da lista de resultados recuperados. Essa pontuação é importante ao escolher um modelo para aplicativos RAG .
Compactação de vetor
Se você tiver um grande número de vetores de ponto flutuante e quiser reduzir o armazenamento e o espaço ocupado pelo WiredTiger (como uso de disco e memória) em mongod
, compacte suas incorporações convertendo‑as em vetores binData
.
BinData é um tipo de dados BSON que armazena dados binários. O tipo padrão para incorporações vetoriais é uma array de flutuantes de 32bits (float32
). Os dados binários são mais eficientes em armazenamento do que o formato de array padrão e, portanto, exigem três vezes menos espaço em disco.
Armazenar vetores binData
melhora o desempenho das consultas, pois menos recursos são necessários para carregar um documento no conjunto de trabalho. Isso pode melhorar significativamente a velocidade de consulta para queries vetoriais onde você está retornando mais de 20 documentos. Se você compactar suas incorporações float32
, poderá consultá-las com vetores float32
ou binData
.
O tutorial nesta página inclui uma função de exemplo que você pode usar para converter seus vetores float32
em vetores binData
.
Drivers suportados
BSON Os vetores BinData são compatíveis com os seguintes drivers:
Driver C++ v4.1.0 ou posterior
Driver C#/.NET v3.2.0 ou posterior
Go Driver v2.1.0 ou posterior
Driver PyMongo v4.10 ou posterior
Driver nó.js v6.11 ou posterior
Driver Java v5.3.1 ou posterior
Plano de fundo
Vetores de ponto flutuante são tipicamente difíceis de compactar porque cada elemento no array possui seu próprio tipo (apesar de a maioria dos vetores ser uniformemente digitada). Por essa razão, converter a saída do vetor float de um modelo de incorporação em um vetor binData
com subtipo float32
é um esquema de serialização mais eficiente. Vetores binData
armazenam um único descritor de tipo para o vetor inteiro, o que reduz a sobrecarga de armazenamento.
Validação das suas incorporações
Considere as seguintes estratégias para garantir que suas incorporações estejam corretas e ideais:
Considere as seguintes melhores práticas ao gerar e consultar suas incorporações:
Teste suas funções e scripts.
Gerar incorporações leva tempo e recursos computacionais. Antes de criar incorporações a partir de grandes conjuntos ou coleções de dados, teste se suas funções ou scripts de incorporação funcionam conforme o esperado em um pequeno subconjunto de seus dados.
Criar incorporações em lotes.
Se você quiser gerar embeddings a partir de um grande conjunto de dados ou de uma collection com muitos documentos, crie-os em lotes para evitar problemas de memória e otimizar o desempenho.
Avalie o desempenho.
Execute queries de teste para verificar se os resultados da pesquisa são relevantes e classificados com precisão.
Para saber mais sobre como avaliar seus resultados e ajustar o desempenho de seus índices e queries, consulte Como medir a precisão dos resultados da sua query e Benchmark para Vector Search do MongoDB.
Considere as seguintes estratégias se você encontrar problemas em suas incorporações:
Verifique seu ambiente.
Verifique se as dependências necessárias estão instaladas e atualizadas. Versões de bibliotecas conflitantes podem causar comportamento inesperado. Certifique-se de que não existam conflitos criando um novo ambiente e instalando apenas os pacotes necessários.
Observação
Se estiver usando o Colab, certifique-se de que o endereço IP da sessão do notebook esteja incluído na lista de acesso do projeto Atlas.
Monitore o uso da memória.
Se você tiver problemas de desempenho, verifique a utilização da RAM, da CPU e do disco para identificar possíveis gargalos. Para ambientes hospedados, como notebooks Colab ou Jupyter, garanta que sua instância seja provisionada com recursos suficientes e faça upgrade da instância se necessário.
Garanta dimensões consistentes.
Verifique se a definição do índice do MongoDB Vector Search corresponde às dimensões das embeddings armazenadas no MongoDB e se as incorporações de query correspondem às dimensões das embeddings indexadas. Caso contrário, você poderá encontrar erros ao executar consultas de pesquisa vetorial.
Para solucionar problemas específicos, consulte Solução de problemas.
Próximos passos
Depois de aprender a criar embeddings e consultar suas embeddings com o MongoDB Vector Search, comece a criar aplicativos de IA generativa implementando a geração aumentada de recuperação (RAG):
Você também pode quantizar suas incorporações vetoriais de ponto flutuante de 32 bits em menos bits para reduzir ainda mais o consumo de recursos e melhorar a velocidade das consultas. Para aprender mais, consulte Quantização de vetores.