RAG
Source: https://github.com/Danielskry/Awesome-RAG at
df26ec74630a
License: CC0-1.0
Read the English original
This edition is an AI-assisted translation.
😎 Recursos essenciais sobre geração aumentada por recuperação (RAG)
Seção intitulada “😎 Recursos essenciais sobre geração aumentada por recuperação (RAG)”Uma seleção de ferramentas, frameworks, técnicas e materiais de aprendizagem para criar sistemas de geração aumentada por recuperação (RAG). Este repositório cataloga o ecossistema RAG e reúne links para fontes confiáveis, tutoriais e implementações que ajudam você a explorar e criar aplicações RAG.
Também disponível como plugin de agente para VS Code, GitHub Copilot CLI e Claude Code.
Visão geral
Seção intitulada “Visão geral”A geração aumentada por recuperação (RAG) é uma técnica avançada de IA generativa que aprimora grandes modelos de linguagem (LLMs) ao recuperar e incorporar dinamicamente contexto relevante de fontes externas de conhecimento durante a geração. Ao contrário dos LLMs tradicionais, que dependem apenas do conhecimento pré-treinado, sistemas RAG acessam informações atualizadas, específicas de um domínio ou proprietárias, melhorando significativamente a precisão, reduzindo alucinações e permitindo a integração de conhecimento em tempo real.
Principais benefícios
Seção intitulada “Principais benefícios”- Redução de alucinações: Fundamenta as respostas em informações factuais recuperadas
- Adaptação ao domínio: Permite que LLMs usem conhecimento especializado sem ajuste fino
- Atualizações em tempo real: Incorpora informações atualizadas sem retreinar o modelo
- Eficiência de custos: Mais econômico que o ajuste fino para tarefas específicas de um domínio
- Transparência: Fornece atribuição de fontes para o conteúdo gerado
- Privacidade e segurança: Mantém dados confidenciais em bases de conhecimento privadas
Conteúdo
Seção intitulada “Conteúdo”- ℹ️ Informações gerais sobre RAG
- 🏗️ Padrões de arquitetura
- 🎯 Abordagens avançadas
- 🧰 Frameworks que facilitam RAG
- 🐍 Ecossistema Python para RAG
- 🛠️ Técnicas
- 📊 Métricas e avaliação
- 💾 Bancos de dados
- 🔌 Implementações de RAG específicas por plataforma
- 🚀 Considerações para produção
- 💡 Boas práticas
ℹ️ Informações gerais sobre RAG
Seção intitulada “ℹ️ Informações gerais sobre RAG”RAG resolve uma limitação fundamental dos LLMs: o corte estático de conhecimento e a incapacidade de acessar informações externas. Implementações tradicionais de RAG usam um pipeline de recuperação que enriquece os prompts do LLM com documentos contextualmente relevantes de uma base de conhecimento. Por exemplo, ao perguntar sobre materiais de reforma para uma casa específica, o LLM pode conhecer práticas gerais de reforma, mas não os detalhes daquele imóvel. Um sistema RAG pode recuperar documentos pertinentes (como plantas, especificações de materiais e códigos locais de construção) para fornecer respostas precisas e contextualizadas.
Recursos de implementação
Seção intitulada “Recursos de implementação”Tutoriais e exemplos de Python
Seção intitulada “Tutoriais e exemplos de Python”-
Implementação básica completa de RAG em Python: Exemplo completo de RAG com LangChain e Chroma
-
Tutorial de RAG do LangChain: Guia abrangente para criar aplicações RAG
-
Tutorial de RAG do LlamaIndex: Introdução ao LlamaIndex para RAG
-
Pipeline RAG do Haystack: Como criar pipelines RAG com Haystack
-
RAG Techniques: Coleção abrangente e de código aberto de técnicas avançadas de geração aumentada por recuperação, disponibilizadas como notebooks Jupyter executáveis.
-
RAG Interview System: Sistema de preparação para entrevistas baseado em RAG, com 418 pares de perguntas e respostas selecionados (do básico ao avançado), que abrangem 29 padrões de arquitetura RAG.
-
Busca com Jev e Milvus: Nove notebooks Python executáveis que combinam embeddings Gemini, recuperação com Milvus e avaliações Jev para reordenação, filtragem de contexto, encerramento da busca, roteamento, reutilização de cache, curadoria, proteções e avaliação.
Produção e boas práticas
Seção intitulada “Produção e boas práticas”- Padrões de RAG e boas práticas para produção: Estratégias de otimização de RAG prontas para produção
- Guia do LangChain para produção: Como implantar aplicações LangChain em produção
- Boas práticas de programação assíncrona em Python: Como escrever código Python assíncrono eficiente para aplicações de IA
🏗️ Padrões de arquitetura
Seção intitulada “🏗️ Padrões de arquitetura”Os sistemas RAG podem ser projetados com diferentes padrões, conforme os requisitos:
- Naive RAG: Pipeline básico de recuperação seguida de geração, sem otimização
- Advanced RAG: Incorpora reescrita de consultas, reordenação e compressão de contexto
- Modular RAG: Componentes combináveis para recuperação, classificação e geração
- Agentic RAG: Agentes orientados por LLM que decidem dinamicamente como recuperar informações
- Self-RAG: Modelos que refletem sobre a qualidade da recuperação e ajustam suas estratégias
- Graph RAG: Usa grafos de conhecimento para recuperar informações estruturadas
- Reasoning-Based RAG: Usa raciocínio em várias etapas do LLM para planejar, navegar e executar a recuperação
🎯 Abordagens avançadas
Seção intitulada “🎯 Abordagens avançadas”As implementações de RAG variam da simples recuperação de documentos a técnicas avançadas que integram ciclos iterativos de feedback, sistemas multiagente e aprimoramentos específicos do domínio. Entre as abordagens modernas estão:
- Vision-RAG: Incorpora páginas inteiras como imagens, permitindo que modelos de visão raciocinem diretamente sem analisar texto como no RAG textual.
- Cache-Augmented Generation (CAG): Pré-carrega documentos relevantes no contexto do modelo e armazena o estado de inferência (cache Key-Value, KV).
- Agentic RAG: Também conhecidos como agentes de recuperação, podem tomar decisões sobre processos de recuperação.
- A-RAG: RAG agêntico com interfaces de recuperação hierárquicas (palavras-chave, semântica e nível de bloco), permitindo que agentes LLM pesquisem e recuperem dados autonomamente em várias granularidades. (Paper)
- Corrective RAG (CRAG): Métodos para corrigir ou refinar as informações recuperadas antes de integrá-las às respostas do LLM.
- Retrieval-Augmented Fine-Tuning (RAFT): Técnicas para ajustar LLMs especificamente para aprimorar tarefas de recuperação e geração.
- Self Reflective RAG: Modelos que ajustam dinamicamente as estratégias de recuperação com base no feedback de desempenho.
- RAG Fusion: Técnicas que combinam vários métodos de recuperação para melhorar a integração do contexto.
- Temporal Augmented Retrieval (TAR): Considera dados sensíveis ao tempo durante a recuperação.
- Plan-then-RAG (PlanRAG): Estratégias que incluem uma etapa de planejamento antes de executar RAG em tarefas complexas.
- GraphRAG: Abordagem estruturada que usa grafos de conhecimento para aprimorar a integração de contexto e o raciocínio.
- Code-Graph-RAG: Sistema RAG com grafo de conhecimento para análise de bases de código multilíngues.
- FLARE - Abordagem que incorpora geração aumentada por recuperação ativa para melhorar a qualidade das respostas.
- GNN-RAG: Recuperação por redes neurais de grafos para raciocínio de grandes modelos de linguagem.
- Multimodal RAG: Estende o RAG a várias modalidades, como texto, imagens e áudio.
- VideoRAG: Estende o RAG a vídeos usando grandes modelos de linguagem de vídeo (LVLMs) para recuperar e integrar conteúdo visual e textual na geração multimodal.
- REFRAG: Otimiza a decodificação RAG ao comprimir o contexto recuperado em embeddings antes da geração, reduzindo a latência sem comprometer a qualidade da saída.
- InstructRAG: Aprimora a qualidade de recuperação e geração dos sistemas RAG com ajuste fino baseado em instruções e justificativas sintetizadas pelo próprio modelo.
- PageIndex: Framework sem vetores baseado em raciocínio: cria árvores hierárquicas de documentos e realiza a recuperação por busca em árvore guiada por LLM, em vez de embeddings e similaridade vetorial. Elimina blocos e bancos vetoriais, oferecendo recuperação explicável e contextualizada para documentos profissionais complexos.
🧰 Frameworks que facilitam RAG
Seção intitulada “🧰 Frameworks que facilitam RAG”- Haystack: Framework de orquestração de LLMs para criar aplicações LLM personalizáveis e prontas para produção.
- LangChain: Framework de uso geral para trabalhar com LLMs.
- Semantic Kernel: SDK da Microsoft para desenvolver aplicações de IA generativa.
- LlamaIndex: Framework para conectar fontes de dados personalizadas a LLMs.
- Dify: Plataforma de código aberto para desenvolver aplicações com LLMs.
- Verba: Aplicação de código aberto que oferece RAG pronto para uso.
- Mastra: Framework TypeScript para criar aplicações de IA.
- Letta: Framework de código aberto para criar aplicações LLM com estado.
- Flowise: Interface de arrastar e soltar para criar fluxos personalizados com LLMs.
- Kreuzberg: Biblioteca poliglota de inteligência documental (núcleo em Rust com vinculações para Python, TypeScript e Go) que extrai texto, tabelas e metadados de mais de 62 formatos para pipelines de ingestão RAG.
- Swiftide: Framework Rust para criar aplicações LLM modulares e em fluxo contínuo.
- CocoIndex: Framework ETL para indexar dados para IA, como RAG, com atualizações incrementais em tempo real.
- Pathway: Framework ETL Python de código aberto e alto desempenho, com execução em Rust e suporte a mais de 300 fontes de dados.
- Pathway AI Pipelines: Framework RAG pronto para produção, com indexação e recuperação em tempo real e acompanhamento de alterações em diversas fontes de dados.
- LiteLLM: Interface unificada para vários provedores de LLM (OpenAI, Anthropic, Hugging Face e Replicate), com registro, monitoramento e acompanhamento de custos.
- Agentset: Plataforma RAG de código aberto pronta para produção, com raciocínio agêntico integrado, busca híbrida e suporte multimodal.
- OpenAgent: Plataforma de assistente pessoal de IA de código aberto que combina LLMs, base de conhecimento RAG e ciclos autônomos de agentes, com uso de navegador, execução de shell e suporte a ferramentas MCP.
- Local Deep Research: Framework local-first de pesquisa agêntica aprofundada, com recuperação em várias fontes (web, arXiv, PubMed e documentos privados) e mais de 20 estratégias de pesquisa.
🐍 Ecossistema Python para RAG
Seção intitulada “🐍 Ecossistema Python para RAG”Atualmente, Python tem o ecossistema RAG mais maduro, com amplo suporte a LLMs, embeddings, bancos de dados vetoriais, avaliação e ferramentas de produção.
Veja o guia completo: Ecossistema Python para RAG
🛠️ Técnicas
Seção intitulada “🛠️ Técnicas”Limpeza de dados
Seção intitulada “Limpeza de dados”- Técnicas de limpeza de dados: Etapas de pré-processamento para refinar os dados de entrada e melhorar o desempenho do modelo.
Criação de prompts
Seção intitulada “Criação de prompts”- Estratégias
- Atribuição de tags e rótulos: Adiciona tags ou rótulos semânticos aos dados recuperados para aumentar a relevância.
- Chain of Thought (CoT): Incentiva o modelo a pensar passo a passo antes de responder.
- Chain of Verification (CoVe): Pede ao modelo que verifique cada etapa do raciocínio quanto à precisão.
- Self-Consistency: Gera vários caminhos de raciocínio e seleciona a resposta mais consistente.
- Zero-Shot Prompting: Cria prompts que orientam o modelo sem exemplos.
- Few-Shot Prompting: Fornece alguns exemplos no prompt para demonstrar o formato de resposta esperado.
- Reason & Act (ReAct) prompting: Combina raciocínio (por exemplo, CoT) com ação (por exemplo, chamadas de ferramentas).
- Cache
- Prompt Caching: Otimiza LLMs armazenando e reutilizando estados de atenção pré-computados.
- Estruturação
- Notação de objetos orientada a tokens: Formato JSON compacto e determinístico para prompts de LLM.
Divisão em blocos
Seção intitulada “Divisão em blocos”A estratégia de divisão em blocos é uma das decisões mais importantes no projeto de sistemas RAG e afeta diretamente a precisão da recuperação e a qualidade do contexto. A abordagem ideal depende dos tipos de documento, das características do domínio e dos padrões de consulta.
-
Divisão em blocos de tamanho fixo
- Caso de uso: Documentos simples, cuja estrutura é menos importante
- Características: Divide o texto em segmentos uniformes (geralmente 256–512 tokens), com sobreposição ajustável de 10–20%
- Vantagens: Fácil de implementar, tamanho previsível dos blocos e processamento eficiente
- Desvantagens: Pode separar frases e parágrafos, perder a estrutura documental e fragmentar unidades semânticas
- Implementação: CharacterTextSplitter (LangChain), SentenceSplitter (LlamaIndex)
-
- Caso de uso: Documentos com estrutura hierárquica (Markdown, HTML, código)
- Características: Divide recursivamente por separadores (parágrafos → frases → palavras) até atingir o tamanho desejado
- Vantagens: Preserva limites naturais e hierarquia documental, melhorando a coerência semântica
- Desvantagens: Mais complexo, com tamanhos variáveis e separadores que exigem configuração cuidadosa
- Implementação: RecursiveCharacterTextSplitter (LangChain)
-
Divisão em blocos baseada em documentos
- Caso de uso: Documentos estruturados com seções claras (cabeçalhos Markdown, seções de PDF, registros de banco de dados)
- Características: Segmenta com base nos metadados do documento, em indicações de formatação ou em elementos estruturais
- Vantagens: Mantém a estrutura documental, preserva o contexto e permite recuperação enriquecida com metadados
- Desvantagens: Exige entradas estruturadas e pode criar blocos muito grandes ou muito pequenos
- Implementação: MarkdownHeaderTextSplitter (LangChain)
- Multimodal: Processa imagens e texto com modelos como OpenCLIP
-
- Caso de uso: Documentos em que a coerência semântica é essencial (narrativas, documentação técnica)
- Características: Usa a similaridade entre embeddings para identificar limites semânticos naturais
- Vantagens: Preserva unidades semânticas, adapta-se ao conteúdo e melhora a relevância da recuperação
- Desvantagens: Tem alto custo computacional, exige um modelo de embeddings e produz blocos de tamanho menos previsível
- Ideal para: Recuperação de alta qualidade em que preservar o contexto é essencial
-
- Caso de uso: Documentos complexos que exigem decisões inteligentes de segmentação
- Características: Usa LLMs para analisar o conteúdo e determinar os limites ideais dos blocos
- Vantagens: Altamente adaptável, compreende o contexto e pode aplicar conhecimento do domínio
- Desvantagens: Alto custo, processamento mais lento e necessidade de acesso à API de um LLM
- Ideal para: Domínios especializados em que a divisão padrão em blocos não funciona
-
- Caso de uso: Coleções heterogêneas em que diferentes documentos se beneficiam de diferentes estratégias de divisão
- Características: Avalia vários métodos de divisão com métricas intrínsecas e seleciona o melhor para cada documento
- Vantagens: Mais flexível que uma abordagem única, preserva a estrutura e a coerência semântica e aceita divisores e métricas personalizados
- Desvantagens: Acrescenta custo de avaliação e complexidade de implementação em comparação com a divisão de tamanho fixo ou recursiva
Boas práticas de divisão em blocos:
- Estratégia de sobreposição: Use 10–20% de sobreposição para manter o contexto entre os limites dos blocos
- Otimização do tamanho: Equilibre o tamanho dos blocos (maiores = mais contexto; menores = mais precisão)
- Preservação de metadados: Mantenha a estrutura documental, os cabeçalhos e a formatação nos metadados dos blocos
- Várias granularidades: Considere abordagens hierárquicas (blocos pequenos para recuperação e maiores para contexto)
Embeddings
Seção intitulada “Embeddings”Embeddings são a base da busca semântica em sistemas RAG. A escolha do modelo de embeddings afeta significativamente a qualidade da recuperação.
-
Seleção do modelo
- MTEB Leaderboard: Benchmark abrangente para avaliar modelos de embeddings em várias tarefas e idiomas. Considere modelos com bom desempenho nas tarefas relevantes ao seu caso de uso (recuperação, agrupamento e classificação).
- Características do modelo: avalie os modelos com base nos seguintes critérios:
- Dimensões: Dimensões maiores (768–1024) geralmente oferecem melhor qualidade, mas aumentam os custos de armazenamento e processamento
- Comprimento do contexto: Verifique se o modelo aceita o tamanho dos blocos dos seus documentos
- Suporte multilíngue: Necessário para aplicações internacionais
- Especialização por domínio: Modelos de uso geral ou especializados (por exemplo, científicos, jurídicos ou médicos)
-
Embeddings personalizados
- Ajuste fino: Adapte modelos pré-treinados ao seu domínio usando aprendizado contrastivo, triplet loss ou ajuste fino supervisionado
- Treinamento do zero: Indicado para domínios altamente especializados com dados rotulados suficientes
- Embeddings multimodais: Para aplicações que precisam compreender texto, imagens ou áudio (por exemplo, CLIP e ImageBind)
- Métodos de ensemble: Combine vários modelos de embeddings para aumentar a robustez
Recuperação
Seção intitulada “Recuperação”- Métodos de busca
- Índice plano de armazenamento vetorial
- Forma simples e eficiente de recuperação.
- O conteúdo é vetorizado e armazenado como vetores planos.
- Recuperação por índice hierárquico
- Restringe os dados hierarquicamente a diferentes níveis.
- Executa a recuperação seguindo uma ordem hierárquica.
- Perguntas hipotéticas
- Aumenta a similaridade entre os blocos do banco de dados e as consultas (assim como o HyDE).
- Usa um LLM para gerar perguntas específicas para cada bloco de texto.
- Converte essas perguntas em embeddings vetoriais.
- Durante a busca, compara as consultas com esse índice de vetores de perguntas.
- Embeddings de documentos hipotéticos (HyDE)
- Aumenta a similaridade entre os blocos do banco de dados e as consultas (assim como as perguntas hipotéticas).
- Usa um LLM para gerar uma resposta hipotética com base na consulta.
- Converte essa resposta em um embedding vetorial.
- Compara o vetor da consulta com o vetor da resposta hipotética.
- Recuperação do pequeno ao grande
- Melhora a recuperação usando blocos menores na busca e blocos maiores para fornecer contexto.
- Os blocos-filhos menores fazem referência a blocos-pai maiores.
- Recuperação contextual
- Aumenta a precisão da recuperação RAG preservando o contexto documental que normalmente se perde na divisão em blocos.
- Cada bloco de texto recebe um resumo curto, gerado pelo modelo, antes da criação dos embeddings e da indexação, resultando em embeddings contextuais e BM25 contextual.
- Essa combinação melhora as correspondências semânticas e lexicais, reduzindo falhas de recuperação quando usada com reordenação.
- Recuperação adaptativa
- Decide dinamicamente quando e quanto recuperar durante a geração.
- Reformulação e expansão de consultas
- Reescreve ou expande automaticamente a consulta antes da recuperação para aumentar a revocação.
- É útil para consultas longas ou ambíguas.
- Índice plano de armazenamento vetorial
- Re-ranking: Melhora os resultados de busca em pipelines RAG reordenando os documentos recuperados inicialmente e priorizando os mais relevantes semanticamente para a consulta.
Modelos de julgamento e decisão
Seção intitulada “Modelos de julgamento e decisão”Modelos de julgamento tomam decisões semânticas delimitadas sobre conteúdo recuperado, consultas, respostas geradas ou o estado do pipeline. Ao contrário de LLMs generativos, podem funcionar como pontos de decisão programáveis em pipelines RAG para reordenação, filtragem, roteamento, verificação e avaliação.
- Jev: Modelo System One da TypeSafe AI para decisões rápidas e tipadas. Em RAG, pode apoiar reordenação, filtragem, roteamento, verificação, proteções e avaliação.
- AnyJev: Transforma LLMs abertos em modelos de decisão tipados no estilo Jev, com correção de viés de rótulo zero e calibração opcional para decisões baseadas em limiares.
Qualidade e segurança das respostas
Seção intitulada “Qualidade e segurança das respostas”Garantir respostas de alta qualidade, seguras e confiáveis é essencial para sistemas RAG em produção.
-
Mitigação de alucinações
- Técnicas de detecção: Implemente métodos para identificar quando os modelos geram informações sem respaldo
- Verificação de fundamentação: Compare as afirmações geradas com o contexto recuperado
- Pontuação de confiança: Atribua pontuações de confiança às respostas geradas com base na qualidade das fontes
- Atribuição de fontes: Exija citações para todas as afirmações factuais
- Qualidade da recuperação: Melhore a precisão da recuperação para reduzir o risco de alucinações
-
Proteções e segurança
- Guia de implementação: Abordagem abrangente para implementar mecanismos de segurança
- Moderação de conteúdo: Filtre conteúdo nocivo, tendencioso ou inadequado nas etapas de entrada e saída
- Mitigação de vieses: Detecte e reduza vieses no conteúdo recuperado e nas respostas geradas
- Verificação de fatos: Confira afirmações em fontes confiáveis ou bases de conhecimento
- Detecção de toxicidade: Use classificadores para identificar e filtrar conteúdo tóxico
-
Prevenção de injeção de prompts
- Guia de segurança: Entenda e previna ataques de injeção de prompts
- Validação de entrada: Valide e higienize rigorosamente todas as entradas externas usando listas de permissões, limites de tamanho e correspondência de padrões
- Separação de conteúdo: Use delimitadores claros, sistemas de templates e prompts baseados em papéis para separar instruções dos dados do usuário
- Monitoramento de saída: Monitore continuamente as respostas em busca de anomalias, comportamentos inesperados ou violações de segurança
- Limitação de taxa: Implemente limites de taxa e detecção de abuso para prevenir ataques sistemáticos
- Isolamento em sandbox: Isole os ambientes de execução de LLMs para limitar possíveis danos causados por injeções bem-sucedidas
📊 Métricas e avaliação
Seção intitulada “📊 Métricas e avaliação”Métricas de similaridade para embeddings
Seção intitulada “Métricas de similaridade para embeddings”Essas métricas medem a similaridade entre embeddings, algo essencial para avaliar a eficácia com que sistemas RAG recuperam e integram documentos ou fontes de dados externas. A escolha de métricas apropriadas ajuda a otimizar o desempenho e a precisão do sistema RAG. Também é possível criar métricas personalizadas para o domínio ou nicho específico, capturando suas nuances e aumentando a relevância.
-
- Mede o cosseno do ângulo entre dois vetores em um espaço multidimensional.
- É altamente eficaz para comparar embeddings de texto cuja direção representa informações semânticas.
- É comumente usada em sistemas RAG para medir a similaridade semântica entre embeddings de consultas e de documentos.
-
- Calcula a soma dos produtos dos elementos correspondentes de duas sequências numéricas.
- Equivale à similaridade do cosseno quando os vetores são normalizados.
- É simples e eficiente, e costuma ser usada com aceleração de hardware em cálculos de grande escala.
-
- Calcula a distância em linha reta entre dois pontos no espaço euclidiano.
- Pode ser usada com embeddings, mas talvez perca eficácia em espaços de alta dimensionalidade devido à “maldição da dimensionalidade.”
- É frequentemente usada em algoritmos de agrupamento, como K-means, após a redução de dimensionalidade.
-
- Mede a similaridade entre dois conjuntos finitos como o tamanho da interseção dividido pelo tamanho da união.
- É útil para comparar conjuntos de tokens, como em modelos bag-of-words ou comparações de n-gramas.
- É menos aplicável a embeddings contínuos produzidos por LLMs.
Observação: A similaridade do cosseno e o produto escalar são geralmente considerados as métricas mais eficazes para medir a similaridade entre embeddings de alta dimensionalidade.
Métricas de avaliação de respostas
Seção intitulada “Métricas de avaliação de respostas”A avaliação de respostas em soluções RAG envolve analisar a qualidade das saídas de modelos de linguagem usando métricas variadas. Veja abordagens estruturadas para essa avaliação:
-
Avaliação automatizada
- BLEU: Avalia a sobreposição de n-gramas entre saídas geradas por máquina e saídas de referência, oferecendo uma medida de precisão.
- ROUGE: Mede a revocação comparando n-gramas, skip-bigrams ou a maior subsequência comum com as saídas de referência.
- METEOR: Considera correspondências exatas, lematização, sinônimos e alinhamento na tradução automática.
-
Avaliação humana Envolve avaliadores humanos que analisam as respostas quanto a:
- Relevância: Adequação às consultas dos usuários.
- Fluência: Qualidade gramatical e estilística.
- Precisão factual: Verificação de afirmações em fontes confiáveis.
- Coerência: Consistência lógica das respostas.
As abordagens incluem:
- Filas de anotação: Oferecem uma visualização direcionada e simplificada para que anotadores humanos associem feedback a execuções específicas.
-
Avaliação por modelos Usa avaliadores pré-treinados para comparar as saídas com diversos critérios:
- TuringBench: Oferece avaliações abrangentes em benchmarks de linguagem.
- Hugging Face Evaluate: Calcula o alinhamento com as preferências humanas.
-
Dimensões principais da avaliação
- Fundamentação: Avalia se as respostas se baseiam inteiramente no contexto fornecido. Um nível baixo pode indicar dependência de informações alucinadas ou irrelevantes.
- Completude: Mede se a resposta contempla todos os aspectos de uma consulta.
- Abordagens: Pontuação de recuperação assistida por IA e verificação de intenção baseada em prompts.
- Utilização: Avalia o quanto os dados recuperados contribuem para a resposta.
- Análise: Use LLMs para verificar se os blocos recuperados estão incluídos nas respostas.
Ferramentas
Seção intitulada “Ferramentas”Essas ferramentas ajudam a avaliar o desempenho do sistema RAG, acompanhando feedback de usuários, registrando interações com consultas e comparando várias métricas de avaliação ao longo do tempo.
- LangFuse: Ferramenta de código aberto para acompanhar métricas de LLMs, observabilidade e gerenciamento de prompts.
- Opik: Plataforma de código aberto para observabilidade e avaliação de LLMs e otimização de prompts.
- Ragas: Framework que ajuda a avaliar pipelines RAG.
- WFGY Problem Map: Lista de verificação com 16 modos para diagnosticar falhas de RAG e LLMs.
- LangSmith: Plataforma para criar aplicações LLM de nível de produção, permitindo monitorar e avaliar a aplicação de perto.
- Hugging Face Evaluate: Ferramenta para calcular métricas como BLEU e ROUGE e avaliar a qualidade do texto.
- Weights & Biases: Acompanha experimentos, registra métricas e visualiza o desempenho.
💾 Bancos de dados
Seção intitulada “💾 Bancos de dados”Bancos de dados vetoriais são componentes essenciais de sistemas RAG, oferecendo armazenamento eficiente e busca por similaridade de embeddings. A escolha do banco de dados depende de fatores como escala, requisitos de latência, modelo de implantação (nuvem ou local) e recursos necessários (busca híbrida, filtros etc.). A lista abaixo apresenta sistemas de banco de dados adequados a aplicações RAG:
Benchmarks comparativos
Seção intitulada “Benchmarks comparativos”Mecanismos distribuídos de processamento e disponibilização de dados:
Seção intitulada “Mecanismos distribuídos de processamento e disponibilização de dados:”- Apache Cassandra: Sistema distribuído de gerenciamento de banco de dados NoSQL.
- MongoDB Atlas: Serviço de banco de dados multimodelo distribuído globalmente, com busca vetorial integrada.
- Vespa: Mecanismo de processamento e disponibilização de big data de código aberto, projetado para aplicações em tempo real.
Mecanismos de busca com recursos vetoriais:
Seção intitulada “Mecanismos de busca com recursos vetoriais:”- Elasticsearch: Oferece recursos de busca vetorial e funcionalidades de busca tradicionais.
- OpenSearch: Mecanismo distribuído de busca e análise, derivado do Elasticsearch.
Bancos de dados vetoriais:
Seção intitulada “Bancos de dados vetoriais:”- Chroma DB: Banco de dados de embeddings de código aberto, projetado nativamente para IA.
- Milvus: Banco de dados vetorial de código aberto para aplicações baseadas em IA.
- Pinecone: Banco de dados vetorial sem servidor, otimizado para fluxos de trabalho de aprendizado de máquina.
- Oracle AI Vector Search: Integra recursos de busca vetorial ao Oracle Database para consultas semânticas baseadas em embeddings vetoriais.
Extensões de bancos de dados relacionais:
Seção intitulada “Extensões de bancos de dados relacionais:”- Pgvector: Extensão de código aberto para busca por similaridade vetorial no PostgreSQL.
- psql_bm25s: Extensão do PostgreSQL para recuperação lexical da família BM25, útil em pipelines de busca por palavras-chave e busca híbrida.
Outros sistemas de banco de dados:
Seção intitulada “Outros sistemas de banco de dados:”- Azure Cosmos DB: Serviço de banco de dados multimodelo distribuído globalmente, com busca vetorial integrada.
- Couchbase: Banco de dados NoSQL distribuído na nuvem.
- Lantern: Mecanismo de busca pessoal que prioriza a privacidade.
- LlamaIndex: Usa um armazenamento vetorial em memória simples para experimentação rápida.
- Neo4j: Sistema de gerenciamento de banco de dados em grafo.
- Qdrant: Banco de dados vetorial de código aberto projetado para busca por similaridade.
- Redis Stack: Armazenamento em memória de estruturas de dados usado como banco de dados, cache e agente de mensagens.
- SurrealDB: Banco de dados multimodelo escalável, otimizado para dados de séries temporais.
- Weaviate: Mecanismo de busca vetorial nativo da nuvem e de código aberto.
Bibliotecas e ferramentas de busca vetorial:
Seção intitulada “Bibliotecas e ferramentas de busca vetorial:”- FAISS: Biblioteca para busca eficiente por similaridade e agrupamento de vetores densos, projetada para lidar com grandes conjuntos de dados e otimizada para recuperar rapidamente os vizinhos mais próximos.
🚀 Considerações para produção
Seção intitulada “🚀 Considerações para produção”A criação de sistemas RAG prontos para produção exige atenção a vários aspectos críticos além do pipeline central de recuperação e geração:
Escalabilidade e desempenho
Seção intitulada “Escalabilidade e desempenho”- Vazão de indexação: Projete pipelines para processar a ingestão de grandes volumes de documentos com atualizações incrementais
- Latência de consultas: Otimize a velocidade de recuperação com indexação eficiente (HNSW, IVF), estratégias de cache e processamento paralelo
- Solicitações concorrentes: Implemente pools de conexões, filas de solicitações e balanceamento de carga para cenários de alto tráfego
- Gerenciamento de recursos: Monitore a utilização de GPU/CPU, o consumo de memória e os pools de conexões do banco de dados
Confiabilidade e monitoramento
Seção intitulada “Confiabilidade e monitoramento”- Observabilidade: Implemente registro, rastreamento e coleta de métricas abrangentes (latência, vazão e taxas de erro)
- Verificações de integridade: Monitore a disponibilidade do serviço de embeddings, a conectividade do banco vetorial e o status da API do LLM
- Tratamento de erros: Implemente lógica de novas tentativas, disjuntores e estratégias de degradação gradual
- Testes A/B: Compare diferentes estratégias de recuperação, métodos de divisão em blocos e modelos de prompt
Gerenciamento de dados
Seção intitulada “Gerenciamento de dados”- Atualizações incrementais: Aceite a indexação de documentos em tempo real ou quase real, sem reindexar tudo
- Controle de versões: Acompanhe versões dos documentos, dos modelos de embeddings e dos templates de prompt
- Qualidade dos dados: Implemente pipelines de validação para detectar embeddings corrompidos, metadados ausentes ou conteúdo desatualizado
- Backup e recuperação: Faça backups regulares dos índices vetoriais e dos armazenamentos de metadados
Segurança e conformidade
Seção intitulada “Segurança e conformidade”- Controle de acesso: Implemente autenticação, autorização e registro de auditoria
- Privacidade dos dados: Criptografe os dados em repouso e em trânsito e atenda aos requisitos de residência de dados
- Filtragem de conteúdo: Aplique moderação de conteúdo, detecção de informações pessoais identificáveis (PII) e verificações de conformidade
- Limitação de taxa: Proteja contra abusos e assegure uma alocação justa de recursos
Otimização de custos
Seção intitulada “Otimização de custos”- Cache de embeddings: Armazene em cache embeddings acessados com frequência para reduzir custos de API
- Recuperação seletiva: Use o roteamento de consultas para evitar operações de recuperação desnecessárias
- Seleção de modelos: Equilibre custo e desempenho ao escolher modelos de embeddings e LLMs
- Dimensionamento adequado de recursos: Otimize a infraestrutura com base nos padrões reais de uso
🔌 Implementações de RAG específicas por plataforma
Seção intitulada “🔌 Implementações de RAG específicas por plataforma”Para obter guias detalhados de implementação por plataforma, consulte a documentação:
- Guia de integração do Supabase: Como criar sistemas RAG com Supabase, pgvector e Edge Functions
💡 Boas práticas
Seção intitulada “💡 Boas práticas”Estratégia de divisão em blocos
Seção intitulada “Estratégia de divisão em blocos”- Divisão em blocos orientada ao domínio: Prefira a divisão semântica ou baseada na estrutura documental à de tamanho fixo para preservar melhor o contexto
- Gerenciamento de sobreposição: Inclua uma sobreposição estratégica (10–20%) para manter o contexto entre os limites dos blocos
- Preservação de metadados: Mantenha a estrutura documental, os cabeçalhos e as indicações de formatação nos metadados dos blocos
- Várias granularidades: Considere a divisão hierárquica em blocos (blocos pequenos para recuperação e maiores para contexto)
Seleção de embeddings
Seção intitulada “Seleção de embeddings”- Avaliação de modelos: Use o ranking MTEB e benchmarks específicos do domínio para selecionar modelos adequados
- Otimização de dimensões: Equilibre as dimensões dos embeddings (mais dimensões = melhor qualidade; menos = recuperação mais rápida)
- Ajuste fino ao domínio: Ajuste os embeddings com dados específicos do domínio sempre que possível
- Consistência: Use o mesmo modelo de embeddings na indexação e nas consultas
Otimização da recuperação
Seção intitulada “Otimização da recuperação”- Busca híbrida: Combine busca semântica (vetorial) e lexical (BM25/palavras-chave) para aumentar a revocação
- Reordenação: Aplique cross-encoders ou modelos de classificação aprendida para melhorar a precisão
- Compreensão de consultas: Implemente classificação de consultas, detecção de intenção e expansão de consultas
- Diversificação de resultados: Evite resultados redundantes aplicando restrições de diversidade
Engenharia de prompts
Seção intitulada “Engenharia de prompts”- Instruções claras: Forneça instruções explícitas sobre como usar o contexto recuperado
- Atribuição de fontes: Solicite citações e exija que as respostas se fundamentem no contexto fornecido
- Exemplos few-shot: Inclua exemplos que demonstrem o formato e a qualidade desejados para as respostas
- Compressão de contexto: Use técnicas como sumarização ou extração quando o contexto exceder os limites
Estrutura de avaliação
Seção intitulada “Estrutura de avaliação”- Métricas multidimensionais: Avalie relevância, precisão, completude e fundamentação
- Intervenção humana: Incorpore feedback humano para melhoria contínua
- Avaliação sintética: Gere consultas de teste e saídas esperadas para testes automatizados
- Monitoramento em produção: Acompanhe a satisfação dos usuários, os padrões de consulta e os modos de falha
Melhoria iterativa
Seção intitulada “Melhoria iterativa”- Ciclos de feedback: Colete feedback dos usuários, registros de consultas e métricas de desempenho
- Experimentação: Teste melhorias sistematicamente (divisão em blocos, recuperação e prompts) com experimentos controlados
- Atualizações de modelos: Planeje atualizações dos modelos de embeddings e estratégias de migração
- Documentação: Mantenha documentação clara da arquitetura, das decisões e dos procedimentos operacionais
Como contribuir
Seção intitulada “Como contribuir”Este recurso é mantido pela comunidade e continua evoluindo. Contribuições são bem-vindas! Para adicionar recursos, corrigir erros ou melhorar a organização:
- Crie um fork do repositório
- Crie uma branch para suas alterações
- Envie um pull request com uma descrição clara
Ao adicionar itens, verifique se os links funcionam, se as descrições são precisas e concisas e se o conteúdo está na seção apropriada.
Licença
Seção intitulada “Licença”Este projeto está licenciado sob a CC0 1.0 Universal.
HagiCode
O HagiCode é um ambiente de programação com agentes. Interações de interface ricas e práticas tornam o planejamento, a execução de agentes e o trabalho em projetos mais acessíveis e fáceis de acompanhar, criando uma experiência de desenvolvimento envolvente.
Uma experiência de desenvolvimento envolvente, com interações de interface ricas e práticas.
- InteligenteOs fluxos de trabalho do OpenSpec transformam a intenção em um caminho executável, da proposta ao design, às tarefas e à entrega.
- EficienteA execução multiagente mantém pesquisa, implementação e revisão em andamento em paralelo, em vários repositórios e com os Agent CLI que você já usa.
- InteressanteInterações de interface ricas e práticas tornam o planejamento, a execução de agentes e o trabalho em projetos mais acessíveis e fáceis de acompanhar.
Baixar para Windows
Compartilhar o HagiCode
Transforme ideias em software entregue.
O HagiCode é um ambiente de programação com agentes: os fluxos de trabalho do OpenSpec planejam a mudança, a execução multiagente a realiza e o Hero Scenario torna o longo percurso visível, para transformar ideias em software entregue.
- Inteligente
- Os fluxos do OpenSpec transformam a intenção em um caminho da proposta à entrega.
- Eficiente
- A execução multiagente conduz pesquisa, implementação e revisão em paralelo.
- Divertido
- As interações de interface facilitam o planejamento, a execução de agentes e os projetos.
© 2026 HagiCode | Powered By hagilight-starlight@0.21.0 | Branch: main | Commit: 745b50b | Built:

