轻量级、模块化、主权设计的 RAG 实验与应用框架,支持多模态文档摄取、混合检索与重排,提供 OpenAI API 兼容接口。
OpenRag 是由法国开源企业 Linagora 开发的全栈 RAG 框架,采用"sovereign-by-design"理念,不锁定任何厂商。框架覆盖文档摄取到生成问答的完整流水线:支持 txt/md/pdf/docx/pptx/音频/图片等多模态文件解析,统一转为 Markdown;通过格式感知分块与上下文摘要增强进行文档切分;默认使用 jina-embeddings-v3 向量化并存入 Milvus;检索阶段提供语义+BM25 混合搜索、Query Reformulation、HyDE 查询增强及 GTE/Jina v2 多语言重排。LLM 层采用 OpenAI API 兼容设计,可接入 Mistral/GPT-4/Claude 或本地 vLLM 模型,独立配置 VLM 用于图片理解。提供 FastAPI 服务层与 OpenAI 兼容 Chat API,可无缝对接 OpenWebUI、LangChain、N8N 等工具。内置 Indexer 文档管理 UI 与 Chainlit 对话 UI,均支持多语言。支持多租户分区隔离、Token/OIDC 认证、Ray 分布式并行、Kubernetes Helm Chart 生产部署,以及基于 UMAP+HDBScan 的自动评估管线。AGPL-3.0 许可,Python 为主(94.2%),当前版本 v1.1.9。
核心能力#
- 多模态文档摄取:文本(txt/md)、文档(pdf/docx/doc/pptx,PDF 默认 MarkerLoader 支持 OCR 及复杂排版,可选 Docling)、音频(wav/mp3/mp4 等自动转录)、图片(png/jpeg/jpg/svg,VLM 驱动生成描述文本替换原图),所有格式统一转为 Markdown。
- 混合检索与重排:语义向量搜索 + BM25 关键词搜索,支持 Query Reformulation 与 HyDE 查询增强,可选通过 Infinity Inference Server 使用 GTE 或 Jina v2 进行多语言重排。
- LLM 无关设计:支持任意兼容 OpenAI API 的 LLM 及本地 vLLM 部署模型,独立 VLM 配置用于图片理解。
- OpenAI API 兼容接口:提供 OpenAI 格式兼容 Chat API,可对接 OpenWebUI、LangChain、N8N 等前端与工作流工具。
- 多租户分区:文档按 Partition 组织,支持不同用户/团队文档集合隔离。
- 自动评估管线:内置 UMAP + HDBScan 聚类从已索引文档生成合成 QA 数据集,本地 LLM 评分查询-文档块对以量化检索质量。
- Web UI:原生 Indexer 文档管理界面与 Chainlit 对话界面,均支持多语言(i18n)。
- 认证:Token 模式(默认 Bearer Token)与 OIDC 模式(支持 Keycloak、LemonLDAP::NG 等 IdP)。
- 分布式扩展:通过 Ray 并行化分块、嵌入、摄取任务,支持多机多 GPU;提供 Kubernetes Helm Chart(
charts/openrag-stack)与 Ansible playbook 用于生产部署。
部署方式#
- 快速部署:Docker Compose,支持 GPU(NVIDIA Container Toolkit)和 CPU 两种 profile。
- 生产部署:Kubernetes Helm Chart 或 Ansible 自动化。
- 前置条件:Python 3.12+、Docker 和 Docker Compose。
核心配置项#
| 配置项 | 说明 | 默认值 |
|---|---|---|
BASE_URL / API_KEY / MODEL | LLM 端点、密钥、模型名 | 需手动填写 |
VLM_BASE_URL / VLM_MODEL | 视觉语言模型 | 可与 LLM 相同 |
EMBEDDER_MODEL_NAME | 嵌入模型 | jinaai/jina-embeddings-v3 |
RETRIEVER_TOP_K | 检索返回文档数 | 20 |
RERANKER_ENABLED | 是否启用重排 | true |
RERANKER_MODEL | 重排模型 | Alibaba-NLP/gte-multilingual-reranker-base |
AUTH_MODE | 认证模式 | token |
WEBSEARCH_API_TOKEN | Web 搜索 API(可选) | 未设置则静默禁用 |