为什么选 RAGFlow
当时调研了几个本地 RAG 方案:
- Dify:功能强大但配置复杂,适合有技术团队的公司
- AnythingLLM:界面友好,但中文处理效果一般
- RAGFlow:中文支持好,有专门的文档解析引擎,开源且可以完全本地部署
我们的需求是:完全内网部署(不能把文档传出去)、中文优先、HR 同事能自己维护。RAGFlow 中文团队背景,这一点有优势。
部署过程
前提:一台能联网的服务器,8GB 内存以上,装了 Docker 和 Docker Compose。
我们用的是公司内网的一台备用服务器,16GB 内存,还够用。
Step 1:拉取镜像
git clone https://github.com/infiniflow/ragflow.git
cd ragflow
Step 2:配置 docker-compose.yml
主要改两个地方:
# 改端口,避免和其他服务冲突
ports:
- "9380:9380" # API 端口
- "80:80" # 前端端口
# 如果没有 GPU,注释掉 GPU 相关配置
# deploy:
# resources:
# reservations:
# devices: ...
Step 3:选模型
没有 GPU 的情况下有两个方案:
- 连接远程 API(推荐 DeepSeek,性价比高)
- 用 Ollama 跑本地模型(需要至少 16GB 内存)
我们选了 DeepSeek API,设置在 RAGFlow 的 Settings → Model Providers 里。
Step 4:启动
docker compose up -d
第一次启动会拉几个镜像,大约 10-15 分钟。启动后访问 http://服务器IP:80。
文档准备:踩坑最多的地方
坑 1:PDF 扫描件识别效果很差。
我们的一些老规章制度是扫描 PDF,RAGFlow 的 OCR 处理这类文件质量很不稳定。解决方法:用 Adobe Acrobat 或者在线工具先把扫描件转成可选中文字的 PDF,再上传。
坑 2:表格内容丢失。
Excel 或者带表格的 Word,直接上传后表格内容经常识别错乱。解决方法:把表格内容转成纯文本段落,或者重新整理成 Markdown 格式再上传。
坑 3:文档太长,切片不合理。
RAGFlow 默认切片设置对长文档效果不好。建议在上传时选「Manual」切片模式,按章节手动标记分割点。
我们最终的文档整理策略:
- 每类文件一个知识库(员工手册一个、薪酬福利一个、入离职流程一个)
- 文档先转成 Word 再上传,确保格式干净
- 每份文档加一段「本文档包含内容概要」的前言,帮助检索
查询调优
RAGFlow 默认的 Chunk 大小是 512 token,对于 HR 文档有时太小,导致回答缺乏上下文。
建议调整:
Chunk size: 1024
Overlap: 128
Top-K retrieval: 5
另外开启「Hybrid Search」模式(关键词+向量混合检索),对于员工问「请假几天需要审批」这类有具体词汇的问题效果更好。
上线后的实际使用情况
我们给 HR 同事培训了半天,主要是演示怎么问问题。
效果好的场景:
- 「年假政策是什么,工作几年之后有多少天」
- 「报销流程是什么,需要哪些材料」
- 「试用期工资是否包含绩效」
效果差的场景:
- 「这个情况应该怎么处理」(需要判断,不是查信息)
- 「法规要求是什么」(我们没有上传外部法规文件)
- 跨知识库的综合问题(系统没打通)
上线第一个月,HR 自报「重复回答基础问题」的时间从每周约 3 小时降到约 40 分钟。
维护经验
- 文档更新要及时重新上传(旧文档不会自动更新)
- 每季度检查一次回答质量,把常见问题整理成「标准问法」加进文档
- 设置一个反馈渠道,让员工报告错误答案
结论
RAGFlow 不是开箱即用的,文档整理阶段的工作量比预期大两倍。但如果你愿意花时间把文档准备好,它能稳定地处理「查规章制度」这类重复性工作。
对于没有技术团队但有内网需求的 HR 部门,这是目前我见过的性价比最高的本地 RAG 方案之一。