RAGFlow 详细介绍与完整教程
1. RAGFlow 是什么?
RAGFlow 是一个基于 检索增强生成(Retrieval-Augmented Generation, RAG) 的开源框架,专注于 文档知识问答 和 企业级知识管理。它结合了 向量数据库检索 和 大语言模型(LLM),能够高效地从海量文档中提取信息并生成精准回答。
核心特点
✅ 文档解析能力强:支持 PDF、Word、Excel、PPT、TXT 等
✅ 智能分块与向量化:优化文本分块策略,提高检索质量
✅ 多路召回 + 重排序:提升答案相关性
✅ 可视化知识库管理:便于文档管理和效果调优
✅ 支持多种 LLM:如 GPT-4、LLaMA、ChatGLM 等
2. RAGFlow 核心架构
mermaid
graph LR
A[文档上传] --> B[文本解析 & 分块]
B --> C[向量化存储]
C --> D[向量数据库]
D --> E[用户提问]
E --> F[检索相关片段]
F --> G[LLM 生成答案]
G --> H[返回结果]
- 文档解析:使用 OCR/NLP 技术提取文本
- 文本分块:按语义分割(避免信息丢失)
- 向量化:采用 Embedding 模型(如 BGE、OpenAI)
- 检索增强:从向量数据库(Milvus/FAISS)召回相关内容
- 生成答案:LLM 结合检索结果生成回答
3. 快速安装与部署
(1) 环境准备
- Python 3.8+
- CUDA(如需 GPU 加速)
- Docker(推荐)
(2) 安装 RAGFlow
# 克隆仓库
git clone https://github.com/infiniflow/ragflow.git
cd ragflow
# 安装依赖
pip install -r requirements.txt
# 启动后端服务(默认使用 Milvus 向量库)
docker-compose up -d
# 启动 Web UI
python src/web/main.py
访问 http://localhost:7860
进入管理界面。
4. 完整使用教程
(1) 上传文档
通过 Web UI 或 API 上传文件:
import requests
url = "http://localhost:8000/api/v1/upload"
files = {"file": open("report.pdf", "rb")}
response = requests.post(url, files=files)
print(response.json())
(2) 构建知识库
from ragflow import RAGFlow
rag = RAGFlow(
embedding_model="bge-small", # 向量模型
llm_model="gpt-3.5-turbo", # 生成模型
database="milvus" # 向量数据库
)
# 添加文档到知识库
rag.add_document("report.pdf")
(3) 进行问答
question = "如何申请年度休假?"
answer = rag.query(question)
print(answer)
输出示例:
{
"answer": "员工需提前3天在OA系统提交申请...",
"sources": ["report.pdf (Page 12)"]
}
5. 高级功能
(1) 自定义分块策略
from ragflow.splitters import SemanticSplitter
splitter = SemanticSplitter(
chunk_size=500,
overlap=50
)
rag.set_splitter(splitter)
(2) 混合检索(Hybrid Search)
结合 关键词搜索 + 向量搜索:
rag.enable_hybrid_search(
keyword_weight=0.3,
vector_weight=0.7
)
(3) 重排序(Reranking)
使用 BAAI/bge-reranker 提升结果质量:
rag.enable_reranker(model="bge-reranker-large")
6. 性能优化技巧
分块优化:
- 技术文档:
chunk_size=300-500
- 合同文本:
chunk_size=800-1000
- 技术文档:
Embedding 选择:
- 中文:
bge-large-zh
- 多语言:
paraphrase-multilingual-mpnet-base-v2
- 中文:
- 缓存机制:
rag.enable_cache("redis://localhost:6379")
7. 企业级部署方案
架构示例
mermaid
graph TB
A[用户] --> B[负载均衡]
B --> C[RAGFlow API 集群]
C --> D[Milvus 向量数据库]
C --> E[PostgreSQL 元数据存储]
D --> F[GPU 推理节点]
Kubernetes 部署
# ragflow-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: ragflow
spec:
replicas: 3
template:
spec:
containers:
- name: ragflow
image: ragflow:latest
ports:
- containerPort: 8000
8. 常见问题解答
Q1: 如何处理扫描版 PDF?
A: 启用 OCR 模块:
rag.enable_ocr(engine="paddleocr")
Q2: 如何接入企业微信?
A: 使用 Webhook:
rag.add_output_channel("wecom", webhook_url="YOUR_WEBHOOK")
9. 总结
- RAGFlow 适合:企业知识库、智能客服、法律/医疗文档分析
- 优势:开箱即用、检索精度高、支持复杂文档
- 扩展性:可对接任意 LLM 和向量数据库
推荐场景
场景 | 推荐配置 |
---|---|
金融合同分析 | bge-large + GPT-4 |
客服知识库 | bge-small + LLaMA3 |
学术论文检索 | hybrid search + reranker |
GitHub: https://github.com/infiniflow/ragflow
通过本教程,您已掌握 RAGFlow 的核心功能与部署方法,现在可以构建自己的智能问答系统了! 🚀