EventoObtenha 50% de desconto no seu ingresso para MongoDB.local Londres em outubro 2. Use o código WEB50Saiba mais >>
Desenvolvedor MongoDB
Central de desenvolvedor do MongoDBchevron-right
Idiomaschevron-right
Pythonchevron-right

Simplifique a pesquisa semântica do Atlas com LangChain e MongoDB

Brian Leonard3 min read • Published Sep 18, 2024 • Updated Sep 18, 2024
IAAtlasPesquisa vetorialPython
APLICATIVO COMPLETO
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Habilitar a pesquisar semântica em dados específicos do usuário é um processo de várias etapas que inclui carregar, transformar, incorporar e armazenar dados antes que eles possam ser consultados.
Fluxo de recuperação do LangChain
Esse gráfico é da equipe da LangChain, cujo objetivo é fornecer um conjunto de utilitários para simplificar bastante esse processo.
Neste tutorial, percorreremos cada uma dessas etapas, usando o MongoDB Atlas como nosso Store. Especificamente, usaremos a página da Wikipédia AT&T como nossa fonte de dados. Em seguida, usaremos as bibliotecas do LangChain para carregar, transformar, incorporar e armazenar:
Exemplo de fluxo de armazenamento LangChain
Quando a fonte estiver armazenada no MongoDB, poderemos recuperar os dados que nos interessam:
Fluxo de recuperação do LangChain

Pré-requisitos

Etapas de início rápido

  1. Obtenha o código:
  1. Atualize params.py com sua string de conexão do MongoDB e a chave Open AI API.
  2. Criar um novo ambiente Python
  1. Ativar o novo ambiente Python
  1. Instale os requisitos
  1. Carregar, transformar, incorporar e armazenar
  1. Recuperar

Os detalhes

Carregar -> Transformar -> Incorporar -> Armazenar

Etapa 1: carregar

Não faltam fontes de dados - Slack, YouTube, Git, Excel, Reddit, Twitter, etc. - e o LangChain oferece uma lista crescente de integrações que inclui essa lista e muitas outras.
Para este exercício, vamos usar o WebBaseLoader para carregar a página da Wikipedia para a At&T.

Etapa 2: transformar (dividir)

Agora que temos um monte de texto carregado, ele precisa ser dividido em partes menores para que possamos extrair a parte relevante com base em nossa query de pesquisa. Para este exemplo, usaremos o RecursiveCharacterTextSplitter recomendado. Como eu o configurei, ele tenta fazer uma divisão em parágrafos ("\n\n"), depois frases ("(?<=\. )") e palavras (" ") usando um tamanho de parte de 1,000 caracteres. Portanto, se um parágrafo não couber em 1,000 caracteres, ele será truncado na próxima palavra que couber para manter o tamanho da parte abaixo de 1,000 caracteres. Você pode ajustar o chunk_size da forma que quiser. Números menores levarão a mais documentos, e vice-versa.

Etapa 3: incorporar

A incorporação é onde você associa seu texto a um LLM para criar uma representação vetorial desse texto. Há muitas opções para escolher, como OpenAI e Hugging Face, e o LangChang fornece uma interface padrão para interagir com todas elas.
Neste exercício, usaremos a popular incorporação da OpenAI. Antes de prosseguir, você precisará de uma chave de API para a plataforma OpenAI, que definirá em params.py.
Vamos simplesmente carregar o incorporador nesta etapa. O verdadeiro poder vem quando armazenamos as incorporações na Etapa 4.

Etapa 4: armazenar

Você precisará de um banco de dados vetorial para armazenar as incorporações e, para sua sorte, o MongoDB se encaixa nesse perfil. Para sua sorte ainda maior, o pessoal da LangChain tem um módulo do MongoDB Atlas que fará todo o trabalho pesado para você! Não se esqueça de adicionar sua string de conexão do MongoDB Atlas ao params.py.
Você encontrará o script completo em vectorize.py, que precisa ser executado uma vez por fonte de dados (e você pode modificar facilmente o código para iterar em várias fontes de dados).

Etapa 5: indexe as incorporações do vetor

A etapa final antes de podermos fazer uma query nos dados é criar um índice de pesquisa nas incorporações armazenadas.
No console do Atlas e usando o editor JSON, crie um índice de pesquisa denominado vsearch_index com a seguinte definição:
Criar um índice de pesquisa - Método de configuração
Criar um índice de pesquisa - Editor JSON

Recuperar

Agora podemos executar uma pesquisa, usando métodos como similirity_search ou max_marginal_relevance_search. Isso devolveria a fatia relevante de dados, que no nosso caso seria um parágrafo inteiro. No entanto, podemos continuar a aproveitar o poder do LLM para comprimir contextualmente a resposta para que ele tente responder mais diretamente à nossa pergunta.

Recursos

Principais comentários nos fóruns
Ainda não há comentários sobre este artigo.
Iniciar a conversa

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Início rápido

PyMongoArrow: fazendo a ponte entre o MongoDB e seu aplicativo de análise de dados


Aug 01, 2024 | 7 min read
Tutorial

RAG com Atlas Vector Search, LangChain e OpenAI


Sep 18, 2024 | 10 min read
Tutorial

Teste e empacotamento de uma biblioteca Python


Aug 14, 2024 | 8 min read
Tutorial

Comece a usar o MongoDB Atlas sem servidor, AWS CDK e AWS sem servidor


Aug 09, 2024 | 18 min read
Sumário
  • Pré-requisitos