Criar aplicativos com tecnologia de LLM usando o LlamaIndex

Selecione uma versão da documentação:

Esta página descreve alguns casos de uso para criar aplicativos com tecnologia de LLM usando o LlamaIndex integrado ao AlloyDB Omni. Os links para notebooks no GitHub são fornecidos para ajudar você a explorar abordagens ou desenvolver seu aplicativo.

O LlamaIndex é um framework de orquestração de IA generativa que permite conectar e integrar fontes de dados a modelos de linguagem grande (LLMs). É possível usar o LlamaIndex para criar aplicativos que acessam e consultam informações de dados privados ou específicos do domínio usando consultas de linguagem natural.

O LlamaIndex atua como uma ponte entre dados personalizados e LLMs, facilitando o desenvolvimento de aplicativos de assistente de conhecimento com recursos de geração aumentada de recuperação (RAG).

O LlamaIndex é adequado para aplicativos centrados em documentos porque enfatiza o gerenciamento estruturado de documentos, o que simplifica a indexação e a recuperação. Esse framework apresenta mecanismos de consulta otimizados que melhoram a velocidade e a relevância do acesso a informações, além de um tratamento robusto de metadados para filtragem diferenciada.

Para mais informações sobre o framework LlamaIndex, consulte a documentação do produto LlamaIndex.

Componentes do LlamaIndex

O AlloyDB Omni oferece as seguintes interfaces do LlamaIndex:

  • Repositório de vetores
  • Repositório de documentos
  • Repositórios de índices
  • Repositórios de chat
  • Leitor de documentos

Aprenda a usar o LlamaIndex com o guia de início rápido do AlloyDB Omni.

Repositório de vetores

Essa integração do LlamaIndex permite usar a natureza robusta e escalonável do AlloyDB Omni para armazenar e gerenciar seus dados do LlamaIndex. Ao combinar os recursos de indexação e consulta do LlamaIndex com o alto desempenho e a confiabilidade do AlloyDB Omni, é possível criar aplicativos com tecnologia de LLM mais eficientes e escalonáveis.

O LlamaIndex divide um documento (doc, texto e PDFs) em componentes de documento chamados nós. O VectorStore só pode conter os vetores de embedding do conteúdo do nó ingerido e o texto dos nós. Um nó contém conteúdo de texto, embeddings de vetor e metadados. É possível aplicar filtros nesses campos de metadados para restringir a recuperação de nós àqueles que correspondem aos critérios de metadados especificados.

Para trabalhar com repositórios de vetores no AlloyDB Omni, use a classe AlloyDBVectorStore. Para mais informações, consulte Repositórios de vetores do LlamaIndex.

Armazenar embeddings de vetor com a classe AlloyDBVectorStore

O notebook do AlloyDB Omni para repositório de vetores mostra como fazer o seguinte:

  • Crie um AlloyDBEngine para se conectar à instância do AlloyDB Omni usando AlloyDBEngine.from_connection_string().
  • Inicialize uma tabela para armazenar embeddings de vetor.
  • Crie uma instância de classe de embedding usando qualquer modelo de embeddings do Llama Index.
  • Inicialize um repositório de vetores AlloyDBVectorStore padrão.
  • Crie e consulte um índice do repositório de vetores usando VectorStoreIndex.
  • Crie um repositório de vetores personalizado para armazenar e filtrar metadados.
  • Adicione um índice ANN para melhorar a latência de pesquisa.

Repositórios de documentos e índices

A integração do LlamaIndex Document Stores gerencia o armazenamento e a recuperação de documentos estruturados, otimizando os recursos centrados em documentos do LlamaIndex. O Document Store armazena o conteúdo relacionado aos vetores no repositório de vetores.

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

Os repositórios de índices facilitam o gerenciamento de índices para permitir consultas rápidas e recuperação de dados, por exemplo, índice de resumo, palavra-chave e árvore. Index no LlamaIndex é um armazenamento leve apenas para os metadados do nó. As atualizações dos metadados do nó não exigem a reindexação (geração de embedding de leitura) do nó completo ou de todos os nós em um documento.

Para mais informações, consulte Repositórios de índices do LlamaIndex.

Armazenar documentos e índices

O notebook do AlloyDB Omni para Document Stores mostra como usar o AlloyDB Omni para armazenar documentos e índices usando as AlloyDBDocumentStore e AlloyDBIndexStore classes. Você vai aprender a fazer o seguinte:

  • Crie um AlloyDBEngine para se conectar à instância do AlloyDB Omni usando AlloyDBEngine.from_connection_string().
  • Crie tabelas para o DocumentStore e o IndexStore.
  • Inicialize um AlloyDBDocumentStore padrão.
  • Configure um AlloyDBIndexStore.
  • Adicione documentos ao Docstore.
  • Use repositórios de documentos com vários índices.
  • Carregue os índices atuais.

Repositórios de chat

Os repositórios de chat mantêm o histórico e o contexto da conversa para aplicativos baseados em chat, permitindo interações personalizadas. Os repositórios de chat fornecem um repositório central que armazena e recupera mensagens de chat em uma conversa, permitindo que o LLM mantenha o contexto e forneça respostas mais relevantes com base no diálogo em andamento.

Os modelos de linguagem grande são sem estado por padrão, o que significa que eles não retêm entradas anteriores, a menos que essas entradas sejam fornecidas explicitamente a cada vez. Ao usar um repositório de chat, é possível preservar o contexto da conversa, o que permite que o modelo gere respostas mais relevantes e coerentes ao longo do tempo.

O módulo de memória no LlamaIndex permite o armazenamento e a recuperação eficientes do contexto conversacional, permitindo interações mais personalizadas e contextuais em aplicativos de chat. É possível integrar o módulo de memória no LlamaIndex a um ChatStore e um ChatMemoryBuffer. Para mais informações, consulte Repositórios de chat do LlamaIndex.

Armazenar o histórico de chat

O notebook do AlloyDB Omni para repositórios de chat mostra como usar AlloyDB Omni para armazenar o histórico de chat usando a classe AlloyDBChatStore. Você vai aprender a fazer o seguinte:

  • Crie um AlloyDBEngine para se conectar à instância do AlloyDB Omni usando AlloyDBEngine.from_connection_string().
  • Inicialize um AlloyDBChatStore padrão.
  • Crie um ChatMemoryBuffer.
  • Crie uma instância de classe LLM.
  • Use o AlloyDBChatStore sem um contexto de armazenamento.
  • Use o AlloyDBChatStore com um contexto de armazenamento.
  • Crie e use o mecanismo de chat.

Leitor de documentos

O leitor de documentos recupera e transforma dados do AlloyDB Omni em formatos compatíveis com o LlamaIndex para indexação. A interface do leitor de documentos fornece métodos para carregar dados de uma origem como Documents.

Document é uma classe que armazena um trecho de texto e metadados associados. É possível usar leitores de documentos para carregar documentos que você quer armazenar em repositórios de documentos ou usados para criar índices.

Recuperar dados como documentos

O notebook do AlloyDB Omni para leitor de documentos mostra como usar o AlloyDB Omni para recuperar dados como documentos usando a classe AlloyDBReader. Você vai aprender a fazer o seguinte:

  • Crie um AlloyDBEngine para se conectar à instância do AlloyDB Omni usando AlloyDBEngine.from_connection_string().
  • Crie AlloyDBReader.
  • Carregue documentos usando o argumento table_name.
  • Carregue documentos usando uma consulta SQL.
  • Defina o formato do conteúdo da página.
  • Carregue os documentos.

A seguir