Toolkit em Python para Retrieval-Augmented Generation que armazena e pesquisa documentos no DuckDB ou PostgreSQL.
Raudaschl/rag-fusion
Implementação de referência em Python do RAG-Fusion, que combina reformulações de consultas por LLM, busca BM25 e vetorial e Reciprocal Rank Fusion para melhorar a recuperação, com um ambiente de avaliação usando o NFCorpus.
- Estrelas
- 960
- Forks
- 113
- Issues abertas
- 0
- Último commit
- há 28 dias
O que é?
RAG-Fusion é um método de recuperação para geração aumentada por recuperação. Um LLM reformula a consulta do usuário em várias versões, com perspectivas diferentes. Cada versão é pesquisada tanto com busca por palavras-chave BM25 quanto com busca vetorial, e as listas ordenadas são combinadas com Reciprocal Rank Fusion, fazendo com que documentos presentes em várias listas subam para o topo. O método é voltado a casos em que uma única formulação da consulta não encontra materiais relevantes, como quando o vocabulário do usuário difere da forma como o corpus foi indexado.
O repositório contém um pipeline básico em main.py que usa busca vetorial com ChromaDB e OpenAI, além de um ambiente de avaliação em eval/ que compara as variantes baseline, hybrid, RAG-Fusion e hybrid-diverse no conjunto de dados NFCorpus do BEIR. Também inclui etapas de reordenação com cross-encoder e análises de experimentos que medem NDCG, precisão, recall e MRR, além de custo e latência para cada configuração.
As medições do repositório sugerem que adicionar um reranker após a fusão híbrida gera ganhos pequenos, mas estatisticamente significativos, enquanto a fusão apenas vetorial traz pouco benefício quando já há um reranker robusto.
Recursos principais
- 01Gera várias reformulações da consulta do usuário com LLM para abranger diferentes formas de expressão.
- 02Combina busca por palavras-chave BM25 e busca vetorial para cada variante da consulta.
- 03Combina os resultados ordenados com Reciprocal Rank Fusion.
- 04Oferece suporte a etapas de reordenação com cross-encoder e outros rerankers no conjunto de candidatos combinados.
- 05Avalia variantes de recuperação no conjunto de dados NFCorpus usando métricas de IR e intervalos de confiança por bootstrap.
- 06Armazena em cache no disco as reformulações de consultas feitas por LLM e persiste localmente os embeddings do ChromaDB.
Casos de uso
- Pesquisar literatura especializada, como artigos médicos ou científicos, em que a terminologia varia.
- Melhorar o recall em pipelines de recuperação nos quais deixar passar um documento relevante tem um custo alto.
- Experimentar reformulação de consultas e fusão de rankings antes de adotá-las em um sistema RAG.
Início rápido
- 1
Instale as dependências principais
pip install openai chromadb python-dotenv tqdm tabulate rank_bm25 - 2
Crie o arquivo .env a partir do modelo
cp .env.example .env - 3
Adicione sua chave de API da OpenAI ao .env e execute a demonstração
python main.py
Antes de usar
- A execução da demonstração e das reescritas requer uma chave de API da OpenAI paga.
- A demonstração em main.py usa apenas busca vetorial; a configuração hybrid-plus-rerank de melhor desempenho está em eval/ e requer pacotes adicionais.
- Os experimentos dependem de modelos específicos de LLM e de decisão, alguns dos quais podem ter sido descontinuados ou estar indisponíveis.
Tópicos
Perguntas frequentes
- O que é rag-fusion?
- Implementação de referência em Python do RAG-Fusion, que combina reformulações de consultas por LLM, busca BM25 e vetorial e Reciprocal Rank Fusion para melhorar a recuperação, com um ambiente de avaliação usando o NFCorpus. RAG-Fusion é um método de recuperação para geração aumentada por recuperação. Um LLM reformula a consulta do usuário em várias versões, com perspectivas diferentes. Cada versão é pesquisada tanto com busca por palavras-chave BM25 quanto com busca vetorial, e as listas ordenadas são combinadas com Reciprocal Rank Fusion, fazendo com que documentos presentes em várias listas subam para o topo. O método é voltado a casos em que uma única formulação da consulta não encontra materiais relevantes, como quando o vocabulário do usuário difere da forma como o corpus foi indexado.
- rag-fusion é gratuito? Qual é a licença?
- rag-fusion é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
- rag-fusion ainda é mantido?
- Manutenção ativa. O último commit de rag-fusion foi em 10 de out. de 2026.
- Para que posso usar rag-fusion?
- Pesquisar literatura especializada, como artigos médicos ou científicos, em que a terminologia varia. Melhorar o recall em pipelines de recuperação nos quais deixar passar um documento relevante tem um custo alto. Experimentar reformulação de consultas e fusão de rankings antes de adotá-las em um sistema RAG.
- Como instalar rag-fusion?
- Instale as dependências principais: pip install openai chromadb python-dotenv tqdm tabulate rank_bm25 Crie o arquivo .env a partir do modelo: cp .env.example .env Adicione sua chave de API da OpenAI ao .env e execute a demonstração: python main.py
- Onde consigo rag-fusion?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/Raudaschl/rag-fusion
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
Banco de dados vetorial incorporável para Go, com uma interface semelhante à do Chroma, sem dependências de terceiros e com persistência opcional em disco.
Acelerador de RAG hospedado no Azure que usa seus documentos como base para um assistente de chat e responde com citações inline das fontes.
Aplicativo de chat RAG que responde a perguntas em linguagem natural sobre linhas de uma tabela PostgreSQL, usando busca com pgvector e modelos da OpenAI, com implantação no Azure.
Sistema de memória de IA local-first que armazena o histórico de conversas na íntegra e o recupera por busca semântica, com acesso via servidor MCP e CLI.
Um servidor RAG sem código que indexa uma pasta de documentos em um dos 8 bancos de dados vetoriais e mantém as respostas atualizadas conforme os arquivos mudam.