Pesquisa semântica com Jina Embeddings v2 e MongoDB Atlas
Avalie esse Tutorial
A pesquisa semântica é uma ótima aliada para incorporações de AI.
O uso de vetores para identificar e classificar correspondências faz parte do Atlas Search há mais tempo do que a AI. O venerável algoritmo tf/idf, que remonta ao 1960s, usa a contagem de palavras e, às vezes, partes de palavras e combinações curtas de palavras, para criar vetores representativos para documentos de texto. Em seguida, ele usa a distância entre os vetores para localizar e classificar possíveis correspondências de query e comparar documentos entre si. Forma a base de muitos sistemas de recuperação de informação.
Chamamos isso de "semantic search" porque esses vetores já possuem informações sobre o significado dos documentos embutidos neles. A pesquisa com incorporações semânticas funciona da mesma maneira, mas, em vez disso, os vetores vêm de modelos de AI que fazem um trabalho muito melhor em entender os documentos.
Como a recuperação baseada em vetores é uma técnica de recuperação consagrada pelo tempo, há plataformas de banco de dados que já possuem todos os mecanismos para fazer isso. Tudo que você precisa fazer é conectar seu modelo de incorporações de AI.
Este artigo mostrará como aprimorar o MongoDB Atlas — uma solução baseada na cloud e pronta para uso para recuperação de documentos — com a AI top de linha da Jina Embeddings para produzir sua própria solução de pesquisa matadora.
Primeiro, você precisará de uma conta do MongoDB Atlas. Registre-se para uma nova conta ou faça login usando sua conta do Google diretamente no site.
Depois de fazer login, você deverá ver sua páginaProjetos. Caso contrário, use o menu de navegação à esquerda para acessá-lo.
Crie um novo projeto clicando no botão Novo Projeto à direita.
Você pode adicionar novos membros conforme desejar, mas não precisa fazer isso neste tutorial.
Isso deve levá-lo de volta à páginaVisão geral, onde agora você pode criar uma implantação. Clique no botão+Criar para fazer isso.
Selecione a camadaM0 grátis para esse projeto e o fornecedor de sua escolha e clique no botãoCriar na parte inferior da tela.
Na próxima tela, você precisará criar um usuário com nome de usuário e senha segura para essa implantação. Não perca esta senha e nome de usuário! Eles são a única maneira de você acessar seu trabalho.
Em seguida, selecione as opções de acesso. Recomendamos, para este tutorial, selecionar Meu ambiente locale clicar no botão Adicionar meu endereço IP atual.
Se você tiver uma VPN ou uma topologia de segurança mais complexa, talvez seja necessário consultar o administrador do sistema para descobrir qual número IP deve inserir aqui em vez do atual.
Depois disso, clique em Concluir e implantar na parte inferior da página. Após uma breve pausa, agora você terá um banco de MongoDB database vazio implantado no Atlas para você utilizar.
Nota: Se você tiver dificuldade em acessar seu banco de dados de fora, poderá se livrar da Lista de Acesso IP e aceitar conexões de todos os endereços IP. Normalmente, essa seria uma prática de segurança muito ruim, mas como esse é um tutorial que usa dados de amostra disponíveis publicamente, há pouco risco real.
Para fazer isso, clique na guiaAcesso à rede em Segurança no lado esquerdo da página:
Em seguida, clique em ADICIONAR endereço IP no lado direito da página:
Você obterá uma janela modal. Clique no botão permitir acesso de qualquer lugare clique em Confirmar.
Sua aba Acesso à rede agora deve ter uma entrada rotulada
0.0.0.0/0
. Isso permitirá que qualquer endereço IP acesse seu banco de dados se ele tiver o nome de usuário e a senha corretos.
Neste tutorial, usaremos um banco de dados de amostra de avaliações do Airbnb. Você pode adicionar isso ao seu banco de dados na aba Banco de Dados em Sistemas no menu no lado esquerdo da tela. Quando estiver na página "Database Deployments ", encontre seu cluster (na camada grátis, você só tem permissão para um, então deve ser fácil). Em seguida, clique no botão "three dots " e escolha Carregar dados de amostra" . Pode levar alguns minutos para carregar os dados.
Isso adicionará uma collection de fontes de dados gratuitas à sua instância do MongoDB para você experimentar, incluindo um banco de dados de avaliações do Airbnb.
No restante deste tutorial, usaremos Python e PyMongo para acessar seu novo banco de dados MongoDB Atlas.
Certifique-se de que o PyMongo esteja instalado em seu ambiente Python. Você pode fazer isso com o seguinte comando:
Você também precisará saber:
- O nome de usuário e a senha que você define ao configurar o banco de dados.
- O URL para acessar sua implantação de banco de dados.
Se você perdeu seu nome de usuário e senha, clique na guiaDatabase Access (Acesso ao banco de dados) em Security (Segurança), no lado esquerdo da página. Essa página permitirá que você redefina sua senha.
Para obter o URL de acesso ao seu banco de dados, volte à guiaDatabase (Banco de dados ) em Deployment (Implantação), no lado esquerdo da tela. Localize seu cluster e procure o botão denominado Connect (Conectar). Clique nele.
Você verá uma janela pop-up modal como a abaixo:
Clique emDrivers em Conectar ao seu aplicativo. Você verá uma janela modal como a abaixo. Abaixo do número três, você verá o URL de que precisa, mas sem sua senha. Você precisará adicionar sua senha ao usar este URL.
Crie um arquivo para um novo script Python. Você pode chamá-lo de
test_mongo_connection.py
.Escreva neste arquivo o seguinte código, que usa o PyMongo para criar uma conexão de cliente com seu banco de dados:
Lembre-se de inserir a URL para se conectar ao seu banco de dados, incluindo o nome de usuário e a senha corretos.
Em seguida, adicione código para se conectar ao conjunto de dados de avaliação do Airbnb que foi instalado como dados de exemplo:
A variável
collection
é um iterável que retornará todo o conjunto de dados item por item. Para testar se funciona, adicione a seguinte linha e execute test_mongo_connection.py
:Isso imprimirá o texto formatado em JSON que contém as informações em uma entrada do banco de dados, qualquer que tenha sido encontrada primeiro. Deve ser semelhante a isto:
Obter uma resposta de texto como essa mostrará que você pode se conectar ao seu banco de dados MongoDB Atlas.
Copie a chave API desta página. Ele fornece a você 10,000 tokens de incorporação gratuita utilizando modelos Jina Embeddings. Devido a essa limitação do número de tokens permitidos para uso na camada gratuita, incorporaremos apenas uma pequena parte da coleção de avaliações do Airbnb. Você pode comprar cota adicional clicando na guia "Top up " na página da Web daJina Embeddings se quiser incorporar a coleção inteira no MongoDB Atlas ou aplicar essas etapas a outro conjunto de dados.
Teste sua chave de API criando um novo script, chame-o
test_jina_ai_connection.py
e coloque o seguinte código nele, inserindo seu código de API onde marcado:Execute o script test_jina_ai_connection.py. Você deve obter algo como isto:
Isso indica que você tem acesso à Jina Embeddings por meio de sua API.
Agora, vamos colocar todas essas peças juntas com algumas funções Python para usar oJina Embeddings para atribuir vetores de incorporação a descrições no conjunto de dados do Airbnb.
Crie um novo script Python, chame-o
index_embeddings.py
e insira algum código para importar bibliotecas e declarar algumas variáveis:Em seguida, adicione o código para configurar um cliente MongoDB e conecte-se ao conjunto de dados do Airbnb:
Agora, adicionaremos ao script uma função para converter listas de textos em incorporações usando o modelo de AI
jina-embeddings-v2-base-en
:E criaremos uma função que itera até documentos 30 no banco de dados de listagens, criando incorporações para as descrições e resumos e adicionando-os a cada entrada no banco de dados:
Com isso em vigor, agora podemos indexar a coleção:
Execute o script
index_embeddings.py
. Isso pode levar alguns minutos. Quando isso terminar, teremos adicionado incorporações a 30 dos itens do Airbnb.Retorne ao site do MongoDB e clique em Banco dedados em Sistema no lado esquerdo da tela.
Clique no link do seu cluster (Cluster0 na imagem acima). Encontre a guia Pesquisa na página do cluster e clique nela para obter uma página como esta:
Clique no botão marcado como **Criar índice de pesquisa**.
Agora, clique em JSON Editor e depois em Next:
Agora, execute as seguintes etapas:
- Em Banco de dados e collection, localize sample_airbnbe, abaixo dele, verifique listagensAndReviews.
- Em Nome do índice, preencha o nome
listings_comments_semantic_search
. - Abaixo disso, nas linhas numeradas, adicione o seguinte texto JSON:
Sua tela deve ficar assim:
Agora, clique em Next e, em seguida, emCreate Search Index na próxima tela :
Isso agendará a indexação no MongoDB Atlas. Você pode ter que esperar vários minutos para que seja concluído.
Quando concluído, a seguinte janela modal será exibida:
Retorne ao seu cliente Python e realizaremos uma pesquisa.
Agora que nossas incorporações estão indexadas, realizaremos uma pesquisa.
Vamos escrever uma função de pesquisa que faz o seguinte:
- Pegue uma string de query e converta-a em uma incorporação usando oJina Embeddings e nossa função gerar_embeddings existente.
- Consulte o índice no MongoDB Atlas usando a conexão de cliente que já configuramos.
- Imprima nomes, resumos e descrições das partidas.
Defina as funções de pesquisa da seguinte maneira:
E agora, vamos fazer uma pesquisa:
Seus resultados podem variar porque este tutorial não indexou todos os documentos no conjunto de dados, e quais foram indexados podem variar drasticamente. Você deve obter um resultado como este:
Experimente suas próprias queries para ver o que obtém.
Agora você criou o núcleo de um mecanismo de busca semântica baseado no MongoDB Atlas Search, alimentado pela tecnologia de incorporação de última geração da Jina AI. Para qualquer projeto, você seguirá essencialmente as mesmas etapas descritas acima:
- Crie uma instância do Atlas e preencha-a com seus dados.
- Crie incorporações para seus itens de dados usando a API de incorporações doJina e armazene-os em sua instância do Atlas.
- Indexe as incorporações usando o indexador vetorial do MongoDB.
- Implemente a pesquisa semântica usando incorporações.
Esse código Python padrão se integrará facilmente aos seus próprios projetos, e você pode criar um código equivalente em Java, JavaScript ou código para qualquer outra estrutura de integração compatível com HTTPS.
Para ver a documentação completa da API do MongoDB Atlas, para que você possa integrá-la em suas próprias ofertas, consulte a seção API do Atlas do site do MongoDB.
Para saber mais sobre a Jina Embeddings e suas ofertas de assinatura, consulte a página Embeddings do site da Jina AI. Você pode encontrar as últimas notícias sobre os modelos de incorporação da Jina AI no site da Jina AI e noX/Twitter, e pode contribuir para as discussões no Discord.