Nesta página, descrevemos alguns casos de uso para criar aplicativos com tecnologia de LLM usando o LlamaIndex integrado ao AlloyDB para PostgreSQL. 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 com modelos de linguagem grandes (LLMs). É possível usar o LlamaIndex para criar aplicativos que acessam e consultam informações de dados particulares ou específicos do domínio usando consultas em 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 é ideal para aplicativos centrados em documentos porque enfatiza o gerenciamento estruturado de documentos, o que simplifica a indexação e a recuperação. Esse framework conta com mecanismos de consulta otimizados que melhoram a velocidade e a relevância do acesso às informações, além de um processamento robusto de metadados para filtragem detalhada.
Para mais informações sobre o framework LlamaIndex, consulte a documentação do produto LlamaIndex.
Componentes do LlamaIndex
O AlloyDB oferece as seguintes interfaces do LlamaIndex:
- Repositório de vetores
- Repositório de documentos
- Repositórios de índice
- Lojas de chat
- Leitor de documentos
Saiba como usar o LlamaIndex com o Guia de início rápido do AlloyDB.
Repositório de vetores
Essa integração do LlamaIndex permite usar a natureza robusta e escalonável do AlloyDB 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, é possível criar aplicativos mais eficientes e escalonáveis com tecnologia de LLM.
O LlamaIndex divide um documento (doc, texto e PDFs) em componentes 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ó, que é um conceito de primeira classe, 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, use a
classe AlloyDBVectorStore.
Para mais informações, consulte LlamaIndex
Vector Stores.
Armazenar embeddings de vetor com a classe AlloyDBVectorStore
O notebook do AlloyDB para armazenamento de vetores mostra como fazer o seguinte:
- Inicializar uma tabela para armazenar embeddings de vetor
- Crie uma instância de classe de embedding usando qualquer modelo de embedding do Llama Index.
- Inicialize um repositório de vetores
AlloyDBVectorStorepadrão. - Criar e consultar um índice do repositório de vetores usando VectorStoreIndex.
- Criar um repositório de vetores personalizado para armazenar e filtrar metadados de maneira eficaz.
- Adicione um índice de ANN para melhorar a latência da 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 e recuperação de dados rápidas, por exemplo, resumo, palavra-chave e índice de árvore.Index no LlamaIndex é um armazenamento leve apenas para os metadados
do nó. As atualizações nos metadados do nó não exigem a reindexação (leia a geração de embeddings)
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 para repositórios de documentos mostra como usar o AlloyDB para armazenar documentos e índices usando as classes AlloyDBDocumentStore e AlloyDBIndexStore.
Você vai aprender a:
- Crie um
AlloyDBEngineusandoAlloyDBEngine.from_instance(). - Crie tabelas para o DocumentStore e o IndexStore.
- Inicializar um
AlloyDBDocumentStorepadrão. - Configure um
AlloyDBIndexStore. - Adicione documentos ao
Docstore. - Usar repositórios de documentos com vários índices.
- Carregar índices atuais.
Lojas de chat
Os armazenamentos de chat mantêm o histórico e o contexto de conversas para aplicativos baseados em chat, permitindo interações personalizadas. Os armazenamentos 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 grandes são sem estado por padrão, o que significa que eles não retêm entradas anteriores, a menos que elas sejam fornecidas explicitamente todas as vezes. Ao usar um armazenamento 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 de conversação, permitindo interações mais personalizadas e contextuais
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 LlamaIndex
Chat Stores.
Armazenar o histórico de chat
O notebook do AlloyDB para armazenamentos de chat mostra como usar o AlloyDB for
PostgreSQL para armazenar o histórico de chat usando a classe AlloyDBChatStore. Você vai aprender a:
- Crie um
AlloyDBEngineusandoAlloyDBEngine.from_instance(). - Inicializar um
AlloyDBChatStorepadrão. - Crie um
ChatMemoryBuffer. - Crie uma instância de classe de LLM.
- Use o
AlloyDBChatStoresem um contexto de armazenamento. - Use o
AlloyDBChatStorecom um contexto de armazenamento. - Criar e usar o Chat Engine.
Leitor de documentos
O leitor de documentos recupera e transforma dados do AlloyDB 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 os metadados associados. É possível usar
leitores de documentos para carregar documentos que você quer armazenar em repositórios de documentos ou
usar para criar índices.
Para mais informações, consulte Leitor de documentos do LlamaIndex.
Recuperar dados como documentos
O notebook do AlloyDB para o leitor de documentos mostra como usar o AlloyDB para recuperar dados como documentos usando a classe AlloyDBReader. Você vai aprender a:
- Crie um
AlloyDBEngineusandoAlloyDBEngine.from_instance(). - Criar
AlloyDBReader. - Carregue documentos usando o argumento
table_name. - Carregar documentos usando uma consulta SQL.
- Defina o formato do conteúdo da página.
- Carregar os documentos.