Acesse o painel da sua conta

Não tem uma conta? Registrar

Entrar em contato

Visite também nosso site craftxp.com.br

  • img
  • img
  • img
  • img
  • img
  • img

Entre em contato

RAG (Retrieval-Augmented Generation): Guia Completo para Construir Aplicações com LLMs e Busca Semântica

RAG (Retrieval-Augmented Generation): Guia Completo para Construir Aplicações com LLMs e Busca Semântica

O que é RAG e Por Que é Essencial?

RAG (Retrieval-Augmented Generation) é uma arquitetura que combina dois componentes fundamentais: um sistema de recuperação de informações (retrieval) e um modelo de linguagem generativo (generation). Em vez de depender apenas do conhecimento estático embutido nos pesos do LLM, o RAG busca ativamente documentos relevantes em uma base de conhecimento externa e os injeta no contexto do modelo no momento da inferência.

Isso resolve um dos maiores problemas dos LLMs tradicionais: a alucinação e a obsolescência do conhecimento. Enquanto um GPT-4 ou Claude pode ter sido treinado até uma data de corte específica, um sistema RAG pode acessar documentação atualizada em tempo real, tornando as respostas factualmente precisas e verificáveis.

Componentes de um Sistema RAG

Um pipeline RAG completo é composto por seis camadas principais:

  • Ingestão de Documentos: Coleta e processamento de documentos (PDFs, páginas web, markdown, bases de conhecimento) em formato textual limpo.
  • Chunking (Fragmentação): Divisão dos documentos em pedaços menores e semanticamente coerentes, geralmente entre 256 e 1024 tokens.
  • Embeddings: Conversão de cada fragmento em um vetor numérico (embedding) usando modelos como text-embedding-3-small da OpenAI ou BGE do Hugging Face.
  • Banco Vetorial: Armazenamento dos embeddings em um banco de dados otimizado para busca por similaridade, como ChromaDB, Pinecone, Qdrant ou Weaviate.
  • Recuperação (Retrieval): Na consulta do usuário, o sistema converte a pergunta em embedding e busca os K fragmentos mais similares no banco vetorial.
  • Geração (Generation): Os fragmentos recuperados são inseridos no prompt do LLM como contexto, permitindo que o modelo gere uma resposta fundamentada.

Implementação Prática com Python e LangChain

Vamos construir um sistema RAG básico usando LangChain, ChromaDB e OpenAI. Primeiro, instale as dependências:

pip install langchain langchain-community langchain-openai chromadb pypdf

Em seguida, implemente o pipeline de ingestão e consulta:

from langchain.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.chains import RetrievalQA
from langchain.chat_models import ChatOpenAI

# 1. Carregar documento
loader = PyPDFLoader("manual_tecnico.pdf")
documents = loader.load()

# 2. Fragmentar em chunks
splitter = RecursiveCharacterTextSplitter(
    chunk_size=500,
    chunk_overlap=50,
    separators=["\n\n", "\n", " ", ""]
)
chunks = splitter.split_documents(documents)

# 3. Criar embeddings e armazenar
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
vectorstore = Chroma.from_documents(
    documents=chunks,
    embedding=embeddings,
    persist_directory="./chroma_db"
)

# 4. Pipeline de consulta RAG
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0.2)
qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=vectorstore.as_retriever(search_kwargs={"k": 4})
)

# 5. Perguntar!
resposta = qa_chain.invoke(
    "Qual o procedimento de instalação descrito no manual?"
)
print(resposta["result"])

Técnicas Avançadas para RAG em Produção

Para levar seu sistema RAG ao próximo nível, considere estas otimizações:

  • Hybrid Search: Combine busca por similaridade vetorial com busca por palavras-chave (BM25) para capturar tanto sinônimos quanto termos exatos.
  • Re-Ranking: Após a recuperação inicial, utilize um modelo de re-ranking (como Cohere Rerank ou Cross-Encoder do Hugging Face) para refinar a ordem dos documentos recuperados.
  • Chunking Hierárquico: Armazene chunks pequenos para busca e chunks maiores (com mais contexto) para a geração, criando referências pai-filho.
  • Query Translation: Transforme a pergunta do usuário em múltiplas sub-perguntas (multi-query) usando o próprio LLM antes de buscar no banco vetorial.
  • Filtros Metadados: Adicione filtros por data, autor, categoria ou fonte para limitar a busca a documentos relevantes antes da busca por similaridade.

Bancos Vetoriais: Comparativo

A escolha do banco vetorial impacta diretamente a escalabilidade do sistema:

  • ChromaDB: Ideal para prototipagem e projetos pequenos. Roda localmente, sem dependências externas. Suporta até ~1M de vetores.
  • Pinecone: SaaS gerenciado, escalável para milhões de vetores. Oferece busca híbrida nativa e namespaces para multi-tenancy.
  • Qdrant: Open-source com API performática. Suporta filtros avançados, quantização e busca em tempo real.
  • Weaviate: Banco vetorial com schema definido, suporte a grafos e integração nativa com módulos de embedding.
  • Milvus: Projetado para escala massiva (bilhões de vetores). Usado em produção por empresas como Adobe e eBay.

Métricas para Avaliar seu RAG

Um sistema RAG precisa ser avaliado em duas dimensões:

  1. Precisão da Recuperação: Métricas como Hit Rate, MRR (Mean Reciprocal Rank) e NDCG (Normalized Discounted Cumulative Gain) medem quão bem o sistema encontra documentos relevantes.
  2. Qualidade da Geração: Avaliação da resposta final com métricas como Faithfulness (fidelidade ao contexto), Answer Relevance e Context Precision. Frameworks como RAGAS e TruLens automatizam essa avaliação.
# Exemplo com RAGAS
from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevancy, context_precision

result = evaluate(
    dataset=rag_dataset,
    metrics=[faithfulness, answer_relevancy, context_precision]
)
print(result.to_pandas())

Casos de Uso Reais

Empresas ao redor do mundo estão utilizando RAG para:

  • Chatbots de Suporte Técnico: Atendimento ao cliente baseado em documentação interna e FAQs, reduzindo o tempo de resolução em 60%.
  • Assistentes Jurídicos: Consulta a milhares de páginas de jurisprudência e legislação para auxiliar advogados na elaboração de petições.
  • Search Corporativo: Motor de busca semântica sobre documentos internos (confluence, wikis, manuais) que entende a intenção por trás da pergunta.
  • Educação Personalizada: Tutores virtuais que consultam materiais didáticos específicos para responder dúvidas de alunos com precisão acadêmica.
  • Análise Financeira: Extração e sumarização de relatórios trimestrais, notícias e dados de mercado para apoiar decisões de investimento.

Conclusão

O RAG representa um dos avanços mais práticos da inteligência artificial aplicada. Ao combinar a flexibilidade dos LLMs com a precisão de bases de conhecimento curadas, é possível construir sistemas que não apenas geram texto fluente, mas o fazem com fundamentação factual verificável. Com o ecossistema maduro de ferramentas como LangChain, LlamaIndex e os bancos vetoriais modernos, implementar RAG está ao alcance de qualquer equipe de desenvolvimento em 2026.

O próximo passo natural é explorar GraphRAG (que adiciona relações semânticas entre fragmentos) e Agentic RAG (onde agentes autônomos decidem quando e como recuperar informações), duas evoluções que prometem levar essa arquitetura a patamares ainda mais sofisticados.

Craft XP
Craft XP