Construindo aplicativos avançados de Geração Aumentada por Recuperação (RAG) com LlamaIndex
Introdução
Em um recente Unstructured Data Meetup organizado pela Zilliz (São Francisco), Laurie Voss, VP de Relações com Desenvolvedores na LlamaIndex, apresentou uma palestra sobre "Criação de Apps RAG Avançados com LlamaIndex. Ele compartilhou seu conhecimento sobre como tornar os frameworks de Retrieval Augmented Generation (RAG) mais simples e prontos para produção com LlamaIndex.
Vamos nos aprofundar nos conceitos de RAG e ver como o LlamaIndex 🦙 ajuda no desenvolvimento de apps RAG. Para dar um breve contexto sobre o LlamaIndex (anteriormente conhecido como GPTIndex), grande parte dos trabalhos iniciais deles foi feita com tecnologias robustas de código fechado, como a OpenAI. No entanto, à medida que os modelos de código aberto começaram a alcançá-los, eles começaram a se integrar com alternativas de código aberto. Seja com LLMs, modelos de embedding ou tecnologias de reranking, agora eles cobrem várias opções para um usuário usar seus próprios dados para criar uma aplicação RAG.
O que é Retrieval Augmented Generation (RAG)?
Fluxo de trabalho sistemático de RAG
RAG é um framework projetado para superar as limitações dos LLMs, auxiliando-os com capacidades de recuperação. A principal desvantagem dos LLMs é que eles têm janelas de contexto limitadas e só conseguem lidar com parte dos dados de uma organização simultaneamente (não mais que um milhão de tokens por vez). O RAG aborda esse problema recuperando seletivamente apenas o texto/dados mais relevantes para fornecer as respostas mais precisas.
Principais benefícios do RAG:
Precisão: Quando dados relevantes e concisos são recuperados pelos métodos de recuperação implementados e enviados a um LLM, isso garante respostas precisas.
Atualidade: Alguns podem questionar por que as empresas não treinam LLMs usando seus dados. O desafio do ajuste fino é que carregar um LLM em qualquer ambiente, especialmente os de alta qualidade, já é caro. Por outro lado, a Retrieval-Augmented Generation (RAG) permite atualizações de dados fáceis e em tempo real. Isso torna o RAG uma solução prática para ambientes de dados dinâmicos, como os encontrados em grandes escritórios de advocacia privados ou empresas industriais.
Proveniência: O RAG pode rastrear as fontes específicas de informação, o que é crucial para aplicações que exigem dados verificáveis.
Para simplificar, lembra dos testes de compreensão que você fazia quando era criança? O RAG é muito semelhante a isso. Os trechos de texto recuperados funcionam como uma compreensão, a partir da qual a criança (LLM) precisa responder às consultas. É simples assim ;-)
Técnicas avançadas de RAG
Duas técnicas são amplamente usadas para recuperação de informações.
Pesquisa por palavras-chave: Métodos tradicionais de pesquisa por palavras-chave ainda são eficazes para recuperar dados com base em termos específicos.
Pesquisa vetorial(mais poderosa), também conhecida como pesquisa de similaridade vetorial: Pense em uma pesquisa vetorial como algo que transforma palavras em listas numéricas chamadas vetores. Esses vetores capturam a essência do significado de cada palavra. Podemos encontrar palavras semelhantes comparando esses vetores com base em sua proximidade numérica (medida principalmente por similaridade de cosseno ou produto escalar). A pesquisa vetorial nos ajuda a recuperar dados de forma muito mais eficaz e confiável. Depois que realizamos a pesquisa vetorial, o LLM pode acessar o texto mais relevante para responder à consulta.
Motores de busca são usados em sistemas RAG para recuperar documentos de várias fontes, aprimorando a recuperação de informações relevantes e melhorando a capacidade geral de resposta das ferramentas de IA.
Quando você pensa em uma busca vetorial, pense no seu Dicionário Oxford. No entanto, agrupe as palavras por suas sequências de letras em vez de agrupá-las pelo seu significado. Os modelos de incorporação vetorial fazem a mesma coisa dimensionalmente.
Agrupamento Dimensional e Semântico de Termos usando Busca Vetorial
Além disso, Bancos de Dados Vetoriais de código aberto como o Milvus podem ser usados para configurar Armazenamentos Vetoriais gratuitamente! Confira aqui.
LlamaIndex: Simplificando a Implementação de RAG
LlamaIndex é um framework de código aberto que conecta seus dados a LLMs, disponível em Python e TypeScript. Ele simplifica a criação de aplicações RAG, permitindo que desenvolvedores criem sistemas RAG funcionais com código mínimo. Para implementar uma funcionalidade RAG básica, você só precisa de cinco linhas de Código Python, graças ao LlamaIndex.
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
documents = SimpleDirectoryReader("data").load_data()
index = VectorStoreIndex.from_documents(documents)
query_engine = index.as_query_engine()
response = query_engine.query("What did the author do growing up?")
Recursos Avançados de RAG para Ingestão de Dados e Consultas com LlamaIndex
O LlamaIndex também oferece uma ampla gama de recursos avançados de ingestão de dados e consultas para suas aplicações RAG.
Ingestão
Conectores de Dados: LlamaHub da LlamaIndex fornece conectores para várias fontes de dados, incluindo Google Drive, Notion, Slack e bancos de dados como Postgres e MongoDB.
Análise de PDF: O LlamaIndex oferece capacidades avançadas de análise de PDF, convertendo PDFs complexos em Markdown para melhor compreensão por LLMs, já que LLMs são treinados em uma grande quantidade de Dados em Markdown.
Modelos de Incorporação: O LlamaIndex suporta vários modelos de incorporação de código aberto e fechado, permitindo personalização com base no domínio.
Armazenamentos Vetoriais: O LlamaIndex integra-se a vários bancos de dados vetoriais, novamente, tanto de código aberto quanto fechado, incluindo Milvus e Zilliz Cloud, para armazenamento e recuperação eficientes.
Consultas
- Mecanismo de Consulta de Subperguntas
Para perguntas complexas que exigem várias consultas simples, o mecanismo de consulta de subperguntas divide a consulta principal em partes menores, recupera respostas de diferentes fontes e as combina em uma única resposta.
Divisão de Consulta para melhor recuperação
Divisão de Consulta para melhor recuperação
Coleta de Respostas Separadas
Coleta de Respostas Separadas
Resposta Final Compilada
Resposta Final Compilada
Veja o Código aqui.
- Recuperação do Pequeno para o Grande
Essa metodologia envolve incorporar pedaços extremamente pequenos de texto (frases que são altamente e provavelmente relevantes para a consulta do usuário) em vetores e recuperar a janela de vetores ao redor dessa frase, tanto acima quanto abaixo.
Visualização da metodologia de Recuperação do Pequeno para o Grande
Visualização da metodologia de Recuperação do Pequeno para o Grande
Implementação Real
Implementação Real
Veja o Código aqui.
Pré-etiquetar documentos com metadados (por exemplo, ano, usuário, empresa, palavras-chave), como no exemplo abaixo, permite filtragem e recuperação mais precisas, aumentando a exatidão das respostas do LLM. Esse recurso pode ajudar com a Pesquisa por Palavras-chave. Pense em metadados como propriedades personalizadas para texto.
Um anúncio de camiseta
Um anúncio de camiseta
Ao combinar pesquisa por palavras-chave e pesquisa vetorial, a pesquisa híbrida executa consultas pelos métodos especificados. Ela mescla os resultados com base em pontuações de confiança, garantindo que os dados mais relevantes sejam recuperados — um exemplo detalhado com Código aqui.
- Agentes
Agentes LlamaIndex são componentes de software semiautônomos que usam várias ferramentas para alcançar um objetivo. Eles podem combinar múltiplas estratégias e ferramentas de recuperação para responder a consultas complexas de forma eficaz.
Pense desta forma: uma ferramenta é uma função de usuário predefinida na qual um usuário pode definir uma descrição do que ela faz, e o Agent é um Engenheiro que trabalha com essas ferramentas. Se o usuário solicitar diretamente a um LLM qual será o resultado da multiplicação de dois números enormes, ele muito provavelmente dará uma resposta próxima da resposta real verdadeira, mas não igual. Mas, se dermos a ele uma ferramenta de multiplicação que ele possa chamar com base em uma descrição definida, ele alcançará consistentemente a resposta correta, independentemente do tamanho dos números.
Fluxo de Trabalho Agentic Simples
Fluxo de Trabalho Agentic Simples
Da mesma forma, um usuário pode criar um Fluxo de Trabalho Agentic RAG fornecendo ao LLM as ferramentas e suas descrições e deixando-o decidir qual usar para uma consulta RAG específica.
Resumo de RAG Avançado
A apresentação de Laurie mostra frameworks de aplicação básicos e avançados para RAG, que podemos criar com poucas linhas de código usando LlamaIndex. O LlamaIndex também nos fornece o LlamaParse, que pode nos ajudar a indexar nossos dados em nossos bancos de dados vetoriais favoritos, como Milvus, localmente ou na nuvem. Em última análise, cabe ao usuário escolher o que melhor se adapta aos seus casos de uso. Esta apresentação também mostrou várias estratégias de RAG que se pode adotar para otimizar a Recuperação e a Geração.
Citações
Liu, Jerry. “Llamahub.” Llamahub, 2023, https://cloud.llamaindex.ai/parse.
Liu, Jerry. “Tutorial Inicial (OpenAI).” LlamaIndex, 2023, https://docs.llamaindex.ai/en/stable/getting_started/starter_example/.
“Llama Hub.” Llama Hub, 2023, https://llamahub.ai/.
LlamaIndex. “Pesquisa Híbrida.” LlamaIndex, 2023, https://docs.llamaindex.ai/en/stable/examples/vector_stores/MilvusHybridIndexDemo/.
LlamaIndex. “Agentes baseados em LLM.” LlamaIndex, 2023, https://docs.llamaindex.ai/en/stable/use_cases/agents/.
LlamaIndex. “Substituição de Metadados + Janela de Sentenças de Nó.” LlamaIndex, 2023, https://docs.llamaindex.ai/en/stable/examples/node_postprocessor/MetadataReplacementDemo/.
LlamaIndex. “Mecanismo de Consulta de Subperguntas.” LlamaIndex, 2023, https://docs.llamaindex.ai/en/stable/examples/query_engine/sub_question_query_engine/.
Milvus. “Milvus.” Milvus: Banco de dados vetorial, 2019, https://milvus.io/.
Milvus. “Bancos de Dados Vetoriais Milvus.” Milvus: Banco de dados vetorial, 2023, https://milvus.io/.
Milvus. “Documentação de início rápido do Milvus.” Milvus, 5 May 2024, https://milvus.io/docs/quickstart.md.
Continue lendo

A Few Notes from Databricks Data + AI Summit 2026: Why the Data Layer Matters Again
James Luan shares notes from Databricks Data + AI Summit 2026 on why production AI is pushing the data layer back to the center of infrastructure.

We spent 8 years making vector databases faster. Then we stopped.
Rarely queried embeddings still need to stay searchable. See how Vector Lakebase enables on-demand vector search without always-on compute costs.

How to Improve Retrieval Quality for Japanese Text with Sudachi, Milvus/Zilliz, and AWS Bedrock
Learn how Sudachi normalization and Milvus/Zilliz hybrid search improve Japanese RAG accuracy with BM25 + vector fusion, AWS Bedrock embeddings, and practical code examples.


