KruxAI/ragbuilder
A toolkit to create optimal Production-readyRetrieval Augmented Generation(RAG) setup for your data
RagBuilder 是什么?
RagBuilder 是一个 Python 库,可帮助您为任何文档集合自动构建**生产就绪的检索增强生成(RAG)**管道。它使用贝叶斯优化搜索 RAG 超参数空间(块大小、分块策略、检索器类型、重排序器、LLM 等),在测试集上评估每个配置,并返回性能最佳的设置。
核心功能
| 功能 | 运作方式(依 README 所述) |
|---|---|
| 超参数调优 | 使用贝叶斯优化尝试分块、向量存储、检索器、重排序器和 LLM 设置的多种组合。 |
| 预定义模板 | 内置“最先进”的 RAG 模板(例如图检索器、上下文分块器),可直接使用。 |
| 测试数据 | 您可以生成合成测试集,或提供自己的查询/答案进行评估。 |
| 组件访问 | 优化后,您可以直接获取底层的向量存储、检索器和生成器对象。 |
| API 部署 | 单次调用 builder.serve() 即可启动本地 HTTP API(POST /query)。 |
| 项目持久化 | 管道可保存到磁盘(builder.save()),并稍后重新加载(RAGBuilder.load())。 |
典型工作流程(快速入门示例)
from ragbuilder import RAGBuilder
# 1️⃣ 加载数据(URL、PDF 等)并使用默认配置
builder = RAGBuilder.from_source_with_defaults(
input_source='https://lilianweng.github.io/posts/2023-06-23-agent/'
)
# 2️⃣ 执行优化(默认试验次数)
results = builder.optimize()
# 3️⃣ 查询完成的管道
answer = results.invoke("What is HNSW?")
print(answer)
# 4️⃣ 查看简短的优化报告
print(results.summary())
相同的模式也适用于自定义模型、自定义分块器或自定义测试数据集。
自定义点
- 数据摄取 – 选择文档加载器(
pymupdf、unstructured、web等)、分块器(字符、语义、基于 token 等)和嵌入模型。 - 检索 – 混合向量相似度、BM25、多查询、图式检索,并指定权重。
- 重排序 – 插入任何列出的重排序器(BGE、mxbai、Cohere、Jina、FlashRank、RankLLM、ColBERT 等)。
- 生成 – 提供一个或多个 LLM 配置(OpenAI、Azure OpenAI 等)和优化设置(例如试验次数)。
- 评估 – 使用内置的 Ragas 评估,或提供自定义评估器类。
所有这些皆通过小型 Pydantic 风格配置对象(DataIngestOptionsConfig、RetrievalOptionsConfig、GenerationOptionsConfig)来表达。
安装与环境
- 需要 Python 3.10+。
- 建议创建隔离的虚拟环境(
uv venv ragbuilder)。 - 通过
uv pip install ragbuilder安装(或使用文档中链接的其他方法)。 - 在
.env文件中设置必要的 API 密钥 – 至少需要OPENAI_API_KEY。也支持 Mistral、Cohere、Azure OpenAI 和 Neo4j 的可选密钥。
部署与安全注意事项
- 内置 UI 和 API 默认绑定
127.0.0.1;远程访问需要 API 令牌(RAGBUILDER_API_TOKEN)和 TLS 终止。 - 提供 Docker Compose 以进行容器化设置(包含用于图式检索的 Neo4j)。
- 基本遥测会发送至 Cloudflare 收集器;可使用
ENABLE_ANALYTICS=false禁用。
项目状态
此仓库不再积极维护 – 仍可供参考,但不保证会处理新的问题或拉取请求。
TL;DR – RagBuilder 是一个 Python 工具包,可自动化 RAG 管道的设计、优化和部署,让您专注于数据,同时它会搜索分块、检索、重排序和 LLM 设置的最佳组合。
相关
- 项目
- 项目
- 项目
- 项目