Criar aplicativos com tecnologia de LLM usando o LlamaIndex

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 os 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 grandes (LLMs). Você pode usar o LlamaIndex para criar aplicativos que acessam e consultam informações de dados particulares 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, na sigla em inglês).

O LlamaIndex é adequado para aplicativos centrados em documentos porque dá ênfase ao gerenciamento de documentos estruturados, o que simplifica a indexação e retrieval. Esse framework apresenta mecanismos de consulta otimizados que aumentam a velocidade e a relevância do acesso às informações, além de um processamento de metadados robusto para filtragem detalhada.

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:

  • Loja do Vector
  • Document Store
  • Índices de lojas
  • Chat Stores
  • Leitor de documentos

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

Loja do Vector

Essa integração com o 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, você pode criar aplicativos com LLM mais eficientes e escalonáveis.

O LlamaIndex divide um documento (texto, PDFs etc.) em componentes chamados de 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 vetoriais e metadados. É possível aplicar filtros a esses campos de metadados para restringir a recuperação de nós a aqueles que correspondem aos critérios de metadados especificados.

Para trabalhar com armazenamentos de vetores no AlloyDB Omni, use a classe AlloyDBVectorStore. Para mais informações, consulte LlamaIndex Vector Stores.

Armazenar embeddings de vetor com a classe AlloyDBVectorStore

O bloco de notas do AlloyDB Omni para armazenamento de vetores mostra como fazer o seguinte:

  • Crie um AlloyDBEngine para se conectar à sua instância do AlloyDB Omni usando AlloyDBEngine.from_connection_string().
  • Inicializar uma tabela para armazenar embeddings de vetor.
  • Crie uma instância de classe de embedding usando qualquer modelo de embedding do índice de lhama.
  • 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 de ANN para melhorar a latência da pesquisa.

Armazenamentos de documentos e índices

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

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

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

Para mais informações, consulte Armazenamentos de índice do LlamaIndex.

Armazenar documentos e índices

O caderno de notas do AlloyDB Omni para repositórios de documentos mostra como usar o AlloyDB Omni para armazenar documentos e índices usando as classes AlloyDBDocumentStore e AlloyDBIndexStore. Você vai aprender a fazer o seguinte:

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

Chat Stores

As lojas de chat mantêm o histórico e o contexto da conversa para apps de chat, permitindo interações personalizadas. As lojas de chat oferecem 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 na conversa em andamento.

Os modelos de linguagem grandes são apátricos por padrão, o que significa que eles não retêm entradas anteriores, a menos que essas entradas sejam fornecidas explicitamente todas as vezes. Ao usar uma loja de chat, você pode 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 de conversa, permitindo interações mais personalizadas e sensíveis ao contexto em aplicativos de chat. É possível integrar o módulo de memória no LlamaIndex com um ChatStore e um ChatMemoryBuffer. Para mais informações, consulte Armazenamentos de chat do LlamaIndex.

Armazenar o histórico de chat

O caderno do AlloyDB Omni para lojas de chat mostra como usar AlloyDB for PostgreSQL para armazenar o histórico de chat usando a classe AlloyDBChatStore. Você vai aprender a fazer o seguinte:

  • Crie um AlloyDBEngine para se conectar à sua instância do AlloyDB Omni usando AlloyDBEngine.from_connection_string().
  • Inicializar um AlloyDBChatStore padrão.
  • Crie um ChatMemoryBuffer.
  • Crie uma instância de classe LLM.
  • Use o AlloyDBChatStore sem um contexto de armazenamento.
  • Use AlloyDBChatStore com um contexto de armazenamento.
  • Criar e usar a Chat Engine.

Leitor de documentos

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

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

Para mais informações, consulte o LlamaIndex Document Reader.

Extrair dados como documentos

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

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

A seguir