OneRAG
一行配置切换向量库/大模型的生产级 RAG 框架,兼容 OpenAI SDK,支持 GraphRAG
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
一行配置切换向量库/大模型的生产级 RAG 框架,兼容 OpenAI SDK,支持 GraphRAG
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
深夜 11 点,你正为 RAG 系统的向量数据库选型头疼——用 ChromaDB 快速 PoC,还是直接上 Pinecone 应对生产流量?两个方案的代码路径几乎完全不同,改完怕引出其他问题。
OneRAG 就是来解决这个问题的:一个代码库,通过修改配置就能在 6 种向量数据库、5 种 LLM、6 种 Reranker 之间自由切换,无需重写业务逻辑。
OneRAG 诞生于一个 RAG Chat Service 产品经理之手——他在多个项目迭代中发现,每次换向量数据库、换 LLM Provider 都要重写大量代码。既然 RAG 管道的前置检索 + 后置生成的逻辑是固定的,为什么不能把组件接口抽象出来?
于是他用 Python + FastAPI 搭建了这套框架,目标明确:让开发者用同一套代码,从 PoC 一路跑到生产环境。
目前项目已有 124 颗 GitHub Stars,采用 MIT 许可证。核心语言为 Python,主要话题涵盖 rag、vector-database、fastapi、langchain-alternative、graphrag 等。
想象你有一套乐高积木,基础底板是固定的(Query 入口 → 检索 → 重排序 → 生成 → 输出),但每一层积木块都可以自由替换:
| 积木层 | 可替换选项 |
|---|---|
| 检索层 | Weaviate / ChromaDB / Pinecone / Qdrant / pgvector / MongoDB / Grok |
| 生成层 | Google Gemini / OpenAI / Anthropic Claude / Ollama / OpenRouter |
| 重排序层 | Jina / Cohere / Google / OpenAI / OpenRouter / Sentence-Transformers |
| 缓存层 | Memory / Redis / Semantic |
替换方式极其简单——在 .env 或 YAML 中改一行配置即可。
Query → Router → Expansion → Retriever → Cache → Reranker → Generator → PII Masking → Response
每个阶段都有明确的职责定义,支持细粒度配置:
项目提供了 /v1/chat/completions 接口,完全兼容 OpenAI SDK。现有代码只需改一行 base_url:
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="not-needed")
response = client.chat.completions.create(
model="gemini",
messages=[{"role": "user", "content": "RAG是什么?"}],
)
这意味着 LangChain、Cursor、Open WebUI 等任何使用 OpenAI SDK 的工具,都能零成本接入 OneRAG。
项目自带 React 前端,提供实时流式聊天(WebSocket)和文档管理界面,支持多语言(韩/英/日/中)和深色模式。另有管理后台可监控会话和性能。

项目提供了三种启动方式,门槛逐级降低:
| 方式 | 需求 | 说明 |
|---|---|---|
make start | Docker | Weaviate + FastAPI + Swagger UI 一键启动 |
make easy-start | 仅 Python | 本地 ChromaDB,零配置快速体验 |
| Ollama 模式 | Ollama | 离线运行,无需任何 API Key |
其中 make easy-start 最为友好:自动生成配置、预置 25 条示例数据、CLI 界面直接对话。Ollama 模式下完全离线运行,适合安全敏感或无外网的环境。
项目采用了完整的工程化实践:
技术栈方面,项目基于 FastAPI 构建 REST API,异步处理高效;Pydantic 做数据验证;无 LangChain 依赖(官方定位为"LangChain Alternative"),更轻量可控。
RAG 系统的核心痛点从来不是"能不能做",而是"换了组件怎么办"。OneRAG 用配置驱动的方式,把这个痛点降低了一个量级。它不是最简单的 RAG 入门项目,但可能是最适合长期维护的项目之一。
随着向量数据库和 LLM 生态持续快速迭代,能够在不改变业务代码的前提下快速切换底层组件——这种灵活性本身就是一种竞争力。
相关资源