ragflow部署以及api调用整理
一、部署前准备
- 系统要求
- 硬件:CPU≥4核,内存≥16GB,硬盘≥50GB(slim版本约10GB,完整版约18-20GB)
- 软件:Docker≥24.0.0、Docker Compose≥v2.26.1、Git(若需克隆仓库)。
- 环境配置
- Docker镜像加速:国内用户需在Docker配置中添加镜像源(如阿里云、网易云等),否则可能拉取失败。
- 虚拟化支持:Windows需启用Hyper-V、容器等组件;Linux需检查
vm.max_map_count≥262144
(临时设置:sudo sysctl -w vm.max_map_count=262144
)。
二、部署步骤
1. 下载RAGFlow
- 克隆仓库:
若Git速度慢,可直接从GitHub下载ZIP文件解压。git clone https://github.com/infiniflow/ragflow.git
- 克隆国内仓库:
https://gitcode.com/zhaochiyue/ragflow.git
2. 修改Docker配置
- 选择镜像版本:
进入ragflow/docker
目录,编辑.env
文件,修改RAGFLOW_IMAGE
变量:- slim版:无嵌入模型,适合资源有限(约10GB)。
- 完整版:含嵌入模型,需设置为
RAGFLOW_image=infiniflow/ragflow:v0.17.0
(约18GB)。
- 端口冲突处理:若默认80端口被占用,修改
docker-compose.yml
中的端口映射(如8080:80
)。
3. 启动服务
- 拉取镜像并启动:
首次启动会自动拉取镜像,耗时较长(约15-30分钟)。cd ragflow/docker docker compose -f docker-compose.yml up -d # 或使用docker-compose-CN.yml(部分版本)
- 验证服务状态:
若输出包含docker logs -f ragflow-server
* Running on http://127.0.0.1:9380
,则启动成功。 - 存在问题:
可能出现ragflow-mysql error启动出错。可以等10分钟,再次运行docker compose up -d就正常了。
三、配置模型与知识库
1. 添加模型提供商
- Ollama配置:
- 在RAGFlow界面点击“模型提供商”→“添加Ollama”,填写模型名称(如
deepseek-r1
)和基础URL(本机IP或host.docker.internal:11434
)。 - 确保Ollama已部署并运行
ollama run deepseek-r1
。
- 在RAGFlow界面点击“模型提供商”→“添加Ollama”,填写模型名称(如
- Xinference配置:
若使用GPU加速模型,需启动Xinference容器并配置API地址。
2. 创建知识库
- 上传文件:支持Word、PDF、Excel等格式,需至少上传一个文件解析。
- 配置解析参数:选择分段标识符(如标题、章节)和切片方法(如按段落或固定长度)。
四、常见问题解决
- 镜像拉取失败:
- 检查Docker镜像源配置,或更换为华为云、阿里云镜像(如
swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow
)。 - 使用
docker images
确认镜像完整性,若缺失手动拉取。
- 检查Docker镜像源配置,或更换为华为云、阿里云镜像(如
- 服务无法访问:
- 检查防火墙或安全组是否开放端口(默认80或9380)。
- Windows用户尝试访问
http://localhost
或http://host.docker.internal:9380
。
- 内存不足:
- 建议使用完整版时关闭其他占用内存的程序,或升级硬件配置。
五、参考资源
- 官方文档:RAGFlow Docs
- 视频教程:DeepSeek+RagFlow部署实操
- 模型选择:推荐从Ollama的1.5B版本开始测试,逐步升级至8B模型。
六、api调用
1、添加api_key
2、调用聊天接口
import httpvar chat_id = "93b53a5820d511f0a8360242ac160006" //dialog_id
var BASE_URL = "http://192.168.1.1:80/"
var url = BASE_URL + String.format("api/v1/chats_openai/%s/chat/completions",chat_id)
var API_KEY = "ragflow-Q1N2E2OTk0MjBkYjExZjA4MzZkMDI0Mm" //需修改本地的api_keyvar headers = {"Content-type": "application/json","Authorization": "Bearer " + API_KEY
}
var params = {"model": "model","messages": [{"role":"user","content":msg}],"stream": false
}
// return url
return http.connect(url).header(headers).body(params).post().getBody()