RAG 引擎横向调研报告
RAG Engine Comparison Report — Zhiheng Platform
报告日期 / Date: 2026-06-04 背景 / Context: 智恒平台已有 LightRAG (:9621) + KohakuRAG,需要更广泛的视野进行技术选型 Backend: FastAPI + PostgreSQL (pgvector) + Redis 数据源 / Data source: 中文教材 PDF(6本道德与法治教材)
一、现有方案分析 / Current Solutions Analysis
LightRAG (HKUDS/LightRAG)
| 维度 | 详情 |
|---|---|
| GitHub | ⭐ 36.1k · v1.5.0 (2026-06-03) |
| 架构 | 知识图谱 RAG — LLM 提取实体/关系构建图谱,双层检索(局部+全局) |
| 存储 | SQLite / Neo4j / MongoDB / PostgreSQL |
| 优势 | 增量更新无需重建索引;跨文档实体关系;图可视化 Web UI;多模态支持 |
| 劣势 | 索引成本高(每 chunk 一次 LLM 调用);图质量依赖 LLM(实体幻觉/重复);检索速度争议(有论文称比传统 RAG 慢 100×);换 embedding 模型需重建全索引 |
| 智恒适用性 | ⭐⭐⭐ 已有部署,但索引成本和图质量问题在大规模教材场景可能成为瓶颈 |
KohakuRAG (KohakuBlueleaf/KohakuRAG)
| 维度 | 详情 |
|---|---|
| 背景 | WattBot 2025 冠军(0.861 分),arXiv:2603.07612 |
| 架构 | 4 层层次树(文档→节→段→句),自底向上 embedding 传播,多查询检索+交叉重排+集成推理 |
| 存储 | SQLite + sqlite-vec(零外部依赖) |
| 优势 | 极致精度(多查询+集成投票);BM25 混合检索;结构化 JSON 输出;Python 配置无 YAML |
| 劣势 | 集成推理成本极高(最佳 n=9 |
| 智恒适用性 | ⭐⭐ 适合高精度评测场景,但不适合生产环境的高并发/低延迟需求 |
二、RAG 框架对比 / RAG Frameworks Comparison
评分标准:⭐ 低/不适合 → ⭐⭐⭐⭐⭐ 高/强烈推荐
| 框架 | ⭐ Stars | 架构 | 存储 | 多模态 | 部署 | 集成难度 | 中文支持 | 性能 | 综合推荐 |
|---|---|---|---|---|---|---|---|---|---|
| RAGFlow | 81.9k | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| LlamaIndex | 49.9k | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| Haystack | 25.5k | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| LangChain+Graph | 117k+34k | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| GraphRAG | 33.4k | ⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐ | ⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐ | ⭐⭐ |
| DSPy | 34.8k | ⭐⭐⭐ | ⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐ | ⭐⭐ |
| MemGPT/Letta | 23.1k | ⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐ | ⭐ |
说明:
- 架构:分层索引、多路检索、重排支持
- 存储:向量后端支持广度
- 多模态:PDF/图片混合检索能力
- 部署:Docker/单机/云原生,资源需求
- 集成难度:与 FastAPI 后端的集成复杂度
- 中文支持:中文分词、embedding 兼容性
- 性能:检索延迟、吞吐量、扩展性
详细分析 / Detailed Analysis
1. RAGFlow ⭐⭐⭐⭐⭐ (最推荐用于生产)
- 核心优势:深度文档解析(MinerU/Docling),最佳中文支持(中国团队),模板化分块+多路召回+融合重排,完整的生产级 API
- 存储:Elasticsearch(默认)/ Infinity(可切换)+ MySQL + MinIO + Redis
- 部署:Docker Compose,需 4+ CPU / 16+ GB RAM / 50+ GB 磁盘
- 集成:有内置 RESTful API,Python SDK,可嵌入 FastAPI
- 中文:⭐⭐⭐⭐⭐ 原生中文文档解析 + HanLP + MinerU,跨语言查询
- 劣势:资源需求较高,对智恒的低配服务器可能偏重
2. LlamaIndex ⭐⭐⭐⭐ (最推荐的开发框架)
- 核心优势:最丰富的索引类型(VectorStoreIndex、PropertyGraphIndex、TreeIndex、RAPTOR、分层检索),20+ 向量存储后端,RAPTOR 树形索引非常适合教材层次结构
- 存储:pgvector/PostgreSQL 原生支持(与智恒现有 PG 完美集成)
- 部署:
pip install,框架级集成(非独立服务) - 集成:⭐⭐⭐⭐⭐ 纯 Python 库,直接嵌入 FastAPI,零额外服务
- 中文:bge-m3 / multilingual-e5 兼容,无专用中文分块器但足够
- 劣势:需要自己搭建完整 pipeline(分块→索引→检索→重排)
3. Haystack ⭐⭐⭐⭐ (推荐用于明确 pipeline 控制)
- 核心优势:管道式编排,组件级可观测性,企业级采用(Apple/Meta/Netflix),Hayhooks 一键生成 REST API
- 存储:pgvector/Qdrant/Weaviate/Elasticsearch 等全面支持
- 部署:
pip install或 Docker - 集成:⭐⭐⭐⭐⭐ 管道即 API,Hayhooks 自动生成 REST 端点
- 中文:ChineseDocumentSplitter(HanLP 驱动)
- 劣势:学习曲线中等,企业平台功能需 Haystack Enterprise
4. LangChain + LangGraph ⭐⭐⭐
- 核心优势:最大生态(117k stars),最多集成(50+ 存储),LangGraph 状态图编排
- 劣势:包碎片化严重(
langchain-*上百个子包),学习曲线陡峭,对于 RAG 场景过度复杂 - 结论:如果后续需要复杂 agent 编排才值得引入
5. GraphRAG ⭐⭐
- 核心优势:Microsoft 知识图谱 RAG,多跳推理最强,全局查询能力
- 劣势:索引成本极高(官方文档明确警告),Azure 依赖重,无 Docker 独立部署,无中文优化
- 结论:适合大规模企业数据推理,不适合智恒的低配场景
6. DSPy ⭐⭐
- 核心优势:自动 prompt 优化,代码优先,纯库无服务
- 劣势:不是检索基础设施,无内置向量存储,多模态有限
- 结论:可作为 LlamaIndex/Haystack 之上的优化层,非独立 RAG 方案
7. MemGPT/Letta ⭐
- 核心优势:持久化记忆分层架构(核心/归档/回忆)
- 劣势:不是传统 RAG 框架,是 agent 记忆系统;无 PDF 解析;中文无优化
- 结论:适合长对话 agent 场景,与智恒文档检索需求不匹配
三、向量数据库对比 / Vector Database Comparison
| 向量库 | ⭐ Stars | 延迟 (1M) | 吞吐量 | 部署 | 中文 | 多模态 | 混合检索 | FastAPI | 推荐度 |
|---|---|---|---|---|---|---|---|---|---|
| Qdrant | 29.9k | ~3.5ms | ~1,238 RPS | Docker 67MB | ✅ | ✅ | ✅ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| pgvector | 20.9k | ~15-40ms | ~471 QPS* | PG 扩展 | ✅ | ❌ | ⚠️ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| Milvus | 43.7k | ~18-30ms | ~219 RPS* | Docker 888MB | ⭐⭐⭐⭐⭐ | ✅ | ✅ | ⭐⭐⭐ | ⭐⭐⭐ |
| Weaviate | 16k | ~5ms | ~1,142 RPS | Docker 82MB | ✅ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| Chroma | 28k | ~10-30ms | ~5-8k QPS | Docker 159MB | ✅ | ❌ | ✅ | ⭐⭐⭐⭐ | ⭐⭐ |
*pgvector QPS 基于 50M 向量 + pgvectorscale;Milvus RPS 为单机模式,集群模式更高
详细分析
1. Qdrant ⭐⭐⭐⭐⭐ (独立向量库首选)
- 核心优势:Rust + io_uring,最低延迟(3.5ms),最小镜像(67MB),原生异步客户端
- FastAPI 集成:
AsyncQdrantClient官方支持,有 FastAPI 教程 - 中文:存储层语言无关,配合 BGE-M3 完美
- 混合检索:Dense + Sparse (BM25) + RRF 融合
- 量化:Scalar/Binary/PQ 量化,内存节省 97%
2. pgvector ⭐⭐⭐⭐ (与智恒现有架构完美匹配)
- 核心优势:PostgreSQL 扩展,零新服务,统一数据模型,ACID + JOIN
- 智恒现状:已有 PostgreSQL,
$0额外成本 - 扩展:pgvectorscale (DiskANN) 将 50M 向量延迟降低 28×
- 限制:>10M 向量性能下降明显,无内置多模态
- 结论:智恒的教材数据量(6 本教材)远小于 10M,pgvector 完全够用
3. Milvus ⭐⭐⭐
- 核心优势:万亿级扩展,最丰富索引类型(9+),内置 BGE-M3
- 劣势:部署重(etcd + MinIO + Milvus),888MB 镜像,学习曲线高
- 结论:智恒不需要万亿级向量,过度设计
4. Weaviate ⭐⭐⭐
- 核心优势:多模态第一(CLIP/ImageBind/Gemini),混合检索最强
- 劣势:内存消耗大(HNSW 全在内存),GraphQL API 增加复杂度
- 结论:除非需要跨模态检索,否则性价比不高
5. Chroma ⭐⭐
- 核心优势:最简单 API(3 行代码),自动 embedding
- 劣势:单节点上限 ~10M 向量,无原生异步客户端,非生产级
- 结论:适合原型验证,不适合生产
四、综合评分矩阵 / Final Scoring Matrix
针对智恒平台的适配度评分 (满分 5 星)
| 候选方案 | 架构适配 | 存储兼容 | 多模态 | 部署成本 | 集成难度 | 中文支持 | 性能 | 总分 |
|---|---|---|---|---|---|---|---|---|
| LightRAG (现有) | 4 | 3 | 4 | 3 | 3 | 3 | 3 | 23/35 |
| KohakuRAG (现有) | 4 | 4 | 3 | 4 | 3 | 2 | 2 | 22/35 |
| RAGFlow | 5 | 3 | 5 | 2 | 3 | 5 | 3 | 26/35 |
| LlamaIndex + pgvector | 5 | 5 | 4 | 5 | 5 | 4 | 4 | 32/35 |
| Haystack + pgvector | 4 | 5 | 4 | 5 | 5 | 4 | 4 | 31/35 |
| RAGFlow + Qdrant | 5 | 3 | 5 | 3 | 3 | 5 | 4 | 28/35 |
部署成本:考虑智恒服务器资源(低配)和已有 PostgreSQL
五、推荐方案 / Recommendation
🥇 首选:LlamaIndex + pgvector
理由:
- 零新服务 — 直接用智恒已有的 PostgreSQL + pgvector,不增加运维复杂度
- 完美集成 — LlamaIndex 是纯 Python 库,直接嵌入 FastAPI 后端
- 索引类型丰富 — RAPTOR 树形索引天然适合教材的 章节→节→知识点 层次
- 中文兼容 — bge-m3 embedding 支持中文,教材 PDF 足够结构化为文本
- 轻量部署 —
pip install llama-index,无额外容器 - 多路检索 + 重排 — 原生支持 RouterQueryEngine + 多路召回 + 重排
实施路径:
FastAPI 后端
├─ LlamaIndex
│ ├─ VectorStoreIndex (pgvector)
│ ├─ RAPTOR tree index (教材层次)
│ ├─ bge-m3 embedding
│ └─ BM25 混合检索 (可选)
└─ PostgreSQL (已有)
└─ pgvector 扩展
🥈 备选:RAGFlow(⚠️ 生产级完整方案,但 ARM64 不兼容)
理由:
- 最佳中文文档解析 — MinerU/Docling 对教材 PDF 的深度解析能力
- 开箱即用 — 完整 API + Web UI + 多路召回 + 融合重排
- 多模态 — 支持 PDF 中的图片、表格、公式
劣势:
- 需要额外服务(ES/Infinity + MySQL + MinIO + Redis),资源需求较高
- 对低配学校服务器可能偏重
⚠️ 阻塞问题:ARM64 架构不兼容
- 实测 POC 失败:
exec format error— RAGFlow Docker 镜像(infiniflow/ragflow:v0.25.6)仅支持 x86_64 (linux/amd64) - 当前机器是 ARM64 (linux/arm64/v8),Docker 启动立即崩溃
- 与 cold-rolling-planner 遇到的问题一致
- 如果智恒未来迁移到 x86_64 服务器,RAGFlow 是更好的长期选择;当前 ARM64 环境无法使用
适用场景:
- 如果智恒未来需要支持扫描版教材(OCR)、跨模态检索(图片搜索),且服务器架构为 x86_64
🥉 不推荐但在特定场景有价值
| 方案 | 何时考虑 |
|---|---|
| GraphRAG | 需要跨文档多跳推理(如"教材中所有提到'法律'的章节关联") |
| DSPy | 在 LlamaIndex 之上做 prompt 自动优化 |
| Haystack | 需要组件级可观测性和管道调试 |
| Milvus | 数据量达到亿级(目前不需要) |
六、POC 建议 / POC Plan
POC 1: LlamaIndex + pgvector(推荐首选验证)
验证内容:
- 用 6 本教材 PDF 构建索引
- 测试检索准确率(对比 LightRAG)
- 测量延迟和吞吐量
- 验证中文分块效果
预期时间: 1-2 天
POC 2: RAGFlow(可选)
验证内容:
- Docker Compose 部署
- MinerU 解析教材 PDF 质量
- API 检索测试
- 资源占用测量
预期时间: 2-3 天
七、与现有方案的迁移策略 / Migration Strategy
阶段 1: 并行运行
LightRAG (:9621) 继续服务
LlamaIndex + pgvector 并行验证
阶段 2: A/B 测试
对同一批查询比较检索质量和延迟
阶段 3: 切换
保留 LightRAG 作为实验环境
LlamaIndex + pgvector 成为生产主检索
六、POC 实测结果 / POC Results
POC 1: LlamaIndex + Qwen3-Embedding-4B ✅ 通过
使用智恒实际教材数据(6本道德与法治 PDF)进行端到端验证:
| 指标 | 结果 |
|---|---|
| 文档数量 | 6 本教材 |
| 总文本量 | 312,438 中文字符 |
| 分块数 (nodes) | 423 |
| 分块配置 | chunk_size=1024, overlap=100 |
| Embedding 模型 | Qwen3-Embedding-4B (:8080) |
| Embedding 维度 | 1536 |
| 索引构建时间 | 9.2s |
| 平均检索延迟 | 56.3ms |
| P95 检索延迟 | 56.7ms |
| 检索质量 | ✅ 高相关性,正确定位到对应教材 |
检索质量示例:
| 查询 | 命中文档 | Top 分数 | 是否准确 |
|---|---|---|---|
| 什么是公民的基本权利和义务? | 八年级下册 | 0.74 | ✅ 准确 |
| 社会主义核心价值观的内容是什么? | 九年级上册 | 0.64 | ✅ 准确 |
| 七年级上册道德与法治的核心内容是什么? | 七年级上册 | 0.68 | ⚠️ 返回了版权页而非内容页 |
发现:
- 检索延迟极低(56ms),适合实时教师交互
- 中文文本提取质量良好(PyMuPDF 成功提取 312K 字符)
- 部分查询返回了教材元数据(版权页/目录)而非内容,建议添加元数据过滤
- 使用 Qwen3-Embedding-4B embedding 质量足够中文场景
- 无需每查询调用 LLM,成本可控
POC 2: RAGFlow ❌ 失败 — ARM64 架构不兼容
| 指标 | 结果 |
|---|---|
| 镜像 | infiniflow/ragflow:v0.25.6 (12.6GB) |
| 配置 | Infinity + CPU |
| 错误 | exec format error |
| 原因 | 镜像仅支持 linux/amd64,机器为 linux/arm64/v8 |
Docker 启动后 ragflow-cpu 容器持续重启,infinity 容器同样异常。结论:RAGFlow 目前无法在 ARM64 机器上运行。
三种方案对比
| 方案 | 延迟 | 索引成本 | 每查询 LLM | ARM64 | 部署复杂度 |
|---|---|---|---|---|---|
| LightRAG | ~100ms (估) | 高 (LLM/chunk) | 是 | ✅ | 中 |
| KohakuRAG | 高 | 低 | 是 (9-11 次!) | ✅ | 低 |
| LlamaIndex+pgvector | 56ms | 低 | 否 | ✅ | 低 |
| RAGFlow | 中 | 低 | 否 | ❌ | 高 |
七、迁移策略 / Migration Strategy
| 指标 | LightRAG | KohakuRAG | LlamaIndex+pgvector | RAGFlow |
|---|---|---|---|---|
| 索引成本 | 高 (LLM/chunk) | 低 (纯 embedding) | 低 (纯 embedding) | 低 |
| 查询延迟 | 中 (~100ms) | 高 (9-11 LLM 调用) | 低 (56ms POC实测) | 中 (~100ms) |
| 中文解析 | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 多模态 | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 部署复杂度 | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ |
| 社区活跃度 | ⭐⭐⭐⭐ | ⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| 适合智恒 | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐ (ARM64 ❌) |
参考资源
- 智恒后端:
/home/ubuntu/dev/GXNU/zhiheng/ - 教材 PDF:
/home/ubuntu/dev/GXNU/zhiheng-chi-zhan/data/lightrag_inputs/default/(6 本) - 现有 RAG:LightRAG 运行在 :9621
- LightRAG: https://github.com/HKUDS/LightRAG
- KohakuRAG: https://github.com/KohakuBlueleaf/KohakuRAG (arXiv:2603.07612)
- RAGFlow: https://github.com/infiniflow/ragflow
- LlamaIndex: https://github.com/run-llama/llama_index
- Haystack: https://github.com/deepset-ai/haystack
- Qdrant: https://github.com/qdrant/qdrant
- pgvector: https://github.com/pgvector/pgvector