基于 DuckDB 或 PostgreSQL 的 Python 检索增强生成(RAG)工具包。
Raudaschl/rag-fusion
RAG-Fusion 的 Python 参考实现,通过 LLM 改写查询、BM25 与向量混合检索及 RRF 融合提升检索效果。
- Star
- 960
- Fork
- 113
- 未关闭 Issue
- 0
- 最近提交
- 28天前
这是什么?
RAG-Fusion 是一种用于检索增强生成(RAG)的检索方法。它先由 LLM 把用户问题改写成多个不同角度的查询,每个查询分别用 BM25 关键词检索和向量检索,再通过 Reciprocal Rank Fusion(RRF)合并排序结果,让多次出现的文档排到前面。它适合用户用词与文档索引不一致、单一表述容易漏掉相关资料的场景。
仓库中,main.py 提供基于 ChromaDB 和 OpenAI 的基础向量检索流程,eval/ 目录则是评测工具,可在 BEIR 的 NFCorpus 数据集上比较基线、混合检索、RAG-Fusion 等多种方案。此外还包含交叉编码器重排序模块,以及按 NDCG、精确率、召回率和 MRR 等指标记录的实验报告和每种配置的成本与延迟数据。
根据仓库中的实验结果,混合检索后加入重排序器能带来幅度不大但具有统计显著性的提升;若重排序器已足够强,仅使用向量的融合方案收益则很有限。
核心功能
- 01由 LLM 为用户问题生成多个改写查询,覆盖不同表述。
- 02对每个查询同时执行 BM25 关键词检索和向量检索。
- 03使用 Reciprocal Rank Fusion 合并排序结果。
- 04在融合后的候选池上支持交叉编码器等重排序环节。
- 05在 NFCorpus 数据集上用 IR 指标和 bootstrap 置信区间评测各检索方案。
- 06将 LLM 改写结果缓存到磁盘,并在本地持久化 ChromaDB 向量。
适用场景
- 检索术语多样的专业文献,如医学或科研论文。
- 在漏检代价较高的检索流程中提升召回率。
- 在将查询改写与排名融合引入 RAG 系统前进行实验验证。
快速上手
- 1
安装核心依赖
pip install openai chromadb python-dotenv tqdm tabulate rank_bm25 - 2
从模板创建 .env 文件
cp .env.example .env - 3
在 .env 中填入你的 OpenAI API 密钥,然后运行演示
python main.py
使用前须知
- 运行演示和查询改写需要付费的 OpenAI API 密钥。
- main.py 中的演示仅使用向量检索;表现最好的混合检索加重排序方案位于 eval/ 目录,需要额外安装依赖。
- 实验依赖特定的大语言模型和决策模型,其中部分可能已停用或无法使用。
标签
常见问题
- rag-fusion 是什么?
- RAG-Fusion 的 Python 参考实现,通过 LLM 改写查询、BM25 与向量混合检索及 RRF 融合提升检索效果。 RAG-Fusion 是一种用于检索增强生成(RAG)的检索方法。它先由 LLM 把用户问题改写成多个不同角度的查询,每个查询分别用 BM25 关键词检索和向量检索,再通过 Reciprocal Rank Fusion(RRF)合并排序结果,让多次出现的文档排到前面。它适合用户用词与文档索引不一致、单一表述容易漏掉相关资料的场景。
- rag-fusion 可以免费使用吗?用的什么许可证?
- rag-fusion 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- rag-fusion 还在维护吗?
- 活跃维护中。rag-fusion 最近一次提交是在 2026年10月10日。
- rag-fusion 适合用来做什么?
- 检索术语多样的专业文献,如医学或科研论文。 在漏检代价较高的检索流程中提升召回率。 在将查询改写与排名融合引入 RAG 系统前进行实验验证。
- rag-fusion 怎么安装和运行?
- 安装核心依赖: pip install openai chromadb python-dotenv tqdm tabulate rank_bm25 从模板创建 .env 文件: cp .env.example .env 在 .env 中填入你的 OpenAI API 密钥,然后运行演示: python main.py
- 在哪里获取 rag-fusion?
- 源代码和安装说明在 GitHub 上:https://github.com/Raudaschl/rag-fusion
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
面向 Go 的可嵌入向量数据库,接口类似 Chroma,无第三方依赖,可选持久化。
基于 Azure 的 RAG 解决方案加速器,让聊天助手基于你自己的文档作答,并附带原文引用。
基于 PostgreSQL 表数据的 RAG 问答应用,结合 pgvector 检索和 OpenAI 模型,可部署到 Azure。
本地优先的 AI 记忆系统,逐字保存对话历史,并通过语义搜索检索,提供 MCP 服务与命令行工具。
一个无向量的 RAG 引擎,为长文档构建层级树索引,由 LLM 推理检索答案。