Criar aplicativos com tecnologia de LLM usando o LangChain

Esta página apresenta como criar aplicativos com tecnologia de LLM usando o LangChain. As visões gerais nesta página têm links para guias de procedimento no GitHub.

O que é o LangChain?

O LangChain é um framework de orquestração de LLM que ajuda os desenvolvedores a criar aplicativos de IA generativa ou fluxos de trabalho de geração aumentada de recuperação (RAG, na sigla em inglês). Ele fornece a estrutura, as ferramentas e os componentes para otimizar fluxos de trabalho complexos de LLM.

Para mais informações sobre o LangChain, consulte a página Google LangChain. Para mais informações sobre o framework LangChain, consulte a documentação do produto LangChain.

Componentes do LangChain para o Spanner

O Spanner oferece as seguintes interfaces do LangChain:

Aprenda a usar esses componentes em um aplicativo com o LangChain Quickstart para Spanner.

Armazenamento de vetores para Spanner

O repositório de vetores recupera e armazena documentos e metadados de um banco de dados de vetores. O armazenamento de vetores permite que um aplicativo realize pesquisas semânticas que interpretam o significado de uma consulta do usuário. Esse tipo de pesquisa é chamado de pesquisa vetorial e pode encontrar tópicos que correspondam conceitualmente à consulta. No momento da consulta, o armazenamento de vetores recupera os vetores de embedding mais semelhantes ao embedding da solicitação de pesquisa. No LangChain, um repositório de vetores é responsável pelo armazenamento de dados incorporados e pela realização da pesquisa de vetor para você.

Para trabalhar com o armazenamento de vetores no Spanner, use a classe SpannerVectorStore.

Para mais informações, consulte a documentação do produto LangChain Vector Stores.

Guia de procedimentos de armazenamento de vetores

O guia do Spanner para armazenamento de vetores mostra como fazer o seguinte:

  • Instalar o pacote de integração e o LangChain
  • Inicializar uma tabela para o repositório de vetores
  • Configurar um serviço de incorporação usando VertexAIEmbeddings
  • Inicializar o SpannerVectorStore
  • Adicionar e excluir documentos
  • Pesquisar documentos semelhantes
  • Crie um repositório de vetores personalizado para se conectar a um banco de dados do Spanner preexistente que tenha uma tabela com embeddings de vetor.

Carregador de documentos para o Spanner

O carregador de documentos salva, carrega e exclui objetos Document do LangChain. Por exemplo, é possível carregar dados para processamento em embeddings e armazenar em um armazenamento de vetores ou usá-los como uma ferramenta para fornecer contexto específico para cadeias.

Para carregar documentos do Spanner, use a classe SpannerLoader. Use a classe SpannerDocumentSaver para salvar e excluir documentos.

Para mais informações, consulte o tópico Carregadores de documentos LangChain.

Guia de procedimentos do carregador de documentos

O guia do Spanner sobre o carregador de documentos mostra como fazer o seguinte:

  • Instalar o pacote de integração e o LangChain
  • Carregar documentos de uma tabela
  • Adicionar um filtro ao carregador
  • Personalizar a conexão e a autenticação
  • Personalize a construção de documentos especificando o conteúdo e os metadados do cliente
  • Como usar e personalizar um SpannerDocumentSaver para armazenar e excluir documentos

Histórico de mensagens de chat do Spanner

Aplicativos de perguntas e respostas exigem um histórico do que foi dito na conversa para dar ao aplicativo contexto para responder a outras perguntas do usuário. A classe ChatMessageHistory do LangChain permite que o aplicativo salve mensagens em um banco de dados e as recupere quando necessário para formular outras respostas. Uma mensagem pode ser uma pergunta, uma resposta, uma declaração, uma saudação ou qualquer outro texto que o usuário ou aplicativo faz durante a conversa. O ChatMessageHistory armazena cada mensagem e encadeia mensagens para cada conversa.

O Spanner estende essa classe com SpannerChatMessageHistory.

Guia de procedimentos do histórico de mensagens do Chat

No guia do Spanner sobre o histórico de mensagens do Chat, mostramos como fazer o seguinte:

  • Instalar o LangChain e fazer a autenticação no Google Cloud
  • Inicializar uma tabela
  • Inicialize a classe SpannerChatMessageHistory para adicionar e excluir mensagens
  • Usar um cliente para personalizar a conexão e a autenticação
  • Excluir a sessão SpannerChatMessageHistory

Armazenamento de gráfico para o Spanner

A Graph Store recupera e armazena nós e arestas de um banco de dados de gráfico. Use a loja de gráficos para permitir que um aplicativo faça o seguinte:

  • Adicionar nós e arestas a um gráfico
  • Realizar transversais e análises em um gráfico
  • Inspecionar o esquema de um gráfico

Também é possível usar a loja de gráficos com a cadeia de QA de gráficos para criar um aplicativo que converse com um gráfico.

Para usar a graph store com o Spanner Graph, use a classe SpannerGraphStore. para armazenar nós e arestas extraídos de documentos. SpannerGraphStore oferece suporte à linguagem de consulta do Graph (GQL).

Guia de procedimentos de armazenamento de gráficos

O guia do Spanner sobre a loja de grafos mostra como fazer o seguinte:

  • Instalar o pacote de integração e o LangChain
  • Preparar gráficos de várias fontes de dados
  • Inicializar SpannerGraphStore com um banco de dados do Spanner Graph
  • Adicionar nós e arestas ao gráfico do Spanner
  • Fazer transições usando uma consulta GQL
  • Visualizar os resultados da consulta do gráfico
  • Limpar o gráfico

Cadeia de QA de gráfico para o Spanner

A cadeia de QA de gráfico para Spanner usa um gráfico Spanner para responder a perguntas. O fluxo de trabalho de controle de qualidade do gráfico para responder a uma pergunta é o seguinte:

  1. A QA de gráfico usa um LLM do LangChain para traduzir uma pergunta em linguagem natural em uma consulta GQL.
  2. O Spanner Graph usa a interface da loja de gráficos para executar a consulta GQL.
  3. Os resultados da consulta GQL são enviados de volta ao LLM.
  4. O LLM gera e retorna a resposta à pergunta.

Guia de procedimentos de controle de qualidade do Graph

O guia do Spanner para QA de gráfico demonstra como usar o Spanner e o QA de gráfico para responder a uma pergunta mostrando como fazer o seguinte:

  • Crie um gráfico com blobs de texto não estruturado usando LLMGraphTransformer.
  • Armazene o gráfico no Spanner Graph usando a classe SpannerGraphStore.
  • Inicialize uma instância do SpannerGraphQAChain.
  • Gerar uma resposta a uma pergunta em linguagem natural usando a loja de grafos no Spanner Graph.