deepseek+RAGFlow部署AI机器人知识库检索
前言
因dify的AI客服+知识库检索能力较差,而技术部那边也是建议采用ragflow+知识库做AI客服,那就记录一下部署过程咯。
RAGFlow
RAGFlow 是一款基于深度文档理解构建的开源 RAG (Retrieval-Augmented Generation )引擎。RAGFlow 可以为各种规模的企业及个人提供一套精简的 RAG 工作流程,结合大语言模型(LLM)针对用户各类不同的复杂格式数据提供可靠的问答以及有理有据的引用。
这个项目地址:
https://github.com/infiniflow/ragflow
开源也有在线saas感觉还不错,也可以直接试用一下
https://demo.ragflow.io
系统架构
前提条件
- CPU >= 4 核
- RAM >= 16 GB
- Disk >= 50 GB
- Docker >= 24.0.0 & Docker Compose >= v2.26.1
- 安装Ollama+DeepSeek 模型,参考:
https://199604.com/3244
下载、部署RagFlow
修改相关配置,主要是解决端口冲突和文件大小的限制,参考手册:https://github.com/infiniflow/ragflow/blob/main/README_zh.md
主要看这几个docker 相关的文件
.env
是基础环境文件,改了里面的端口要跟service_conf.yaml
里面的保持一致。- 3 和 4 都是docker的基础配置,主要是怕端口冲突。
# 先下下ragflow源码
git clone https://github.com/infiniflow/ragflow.git
# 修改下环境变量文件
# 下载RagFlow完整版,含Embedding模型
cd ragflow
vi docker/.env
# 注释轻量版本
# RAGFLOW_IMAGE=infiniflow/ragflow:v0.16.0-slim
# 打开完整版本,完整版内置模型请查看:https://ragflow.io/docs/dev/configurations
RAGFLOW_IMAGE=infiniflow/ragflow:v0.16.0
# 确保 vm.max_map_count 不小于 262144:
sysctl vm.max_map_count
sudo sysctl -w vm.max_map_count=262144
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
sysctl -p
# 修改上传文件大小
vim docker/nginx/nginx.conf
client_max_body_size 500M; //128M还是小
cd ragflow
# 启动命令,拉镜像需要点时间哈,完整版9多G
docker compose -f docker/docker-compose.yml up -d
如果你遇到 Docker 镜像拉不下来的问题,可以在 docker/.env 文件内根据变量
RAGFLOW_IMAGE
的注释提示选择华为云或者阿里云的相应镜像。
- 华为云镜像名:
swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow
- 阿里云镜像名:
registry.cn-hangzhou.aliyuncs.com/infiniflow/ragflow
使用ragflow创建知识库
打开的浏览器,访问http://ip/
进行注册,注册后即可进行配置使用。
有个小BUG,注册可以无限注册,且无安全要求,这是一个小安全隐患。
知识库相关操作
先增加模型,然后,上传文件
点击头像,然后,选择模型供应商
选择Ollama,添加对应的chat和embedding模型,chat模型,也就是我们的DeepSeek模型,另外embedding模型就是对文本内容取向量的模型,我这边使用bgm-m3模型。
系统模型设置
点击 系统模型设置,如下图所示,默认的实际上也是可以用的,但还是修改到deepseek
创建知识库
点击创建知识库
设置好文档语言,权限,模型即可
点击新增文件,上传完之后,要点击解析,它才能分片到向量数据库里,这样聊天机器人才能引用知识库。
知识库问答
新建一个助理
配置助理信息
这里面配置很多,主要你所需要用到的知识库啥的
在助理设置里,就填写个名字,愿意的话就改下开场白,最重要吧下面的知识库选为你自己刚刚创建的
切换到提示引擎们可以按你的需求改下提示词啥的,其他参数根据要求自己修改
切换到模型设置,选择 ollama 图标里的 DeepSeek 版本即可
这个就是模型的细节,具体参数需要自己进行微调。
验证聊天!
然后就愉快地聊天吧!
内网部署
因为生产环境是无法拉取镜像,无法上传,因此需要找一台能正常拉取镜像虚拟机进行中转!
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.11.3
docker pull mysql:8.0.39
docker pull quay.io/minio/minio:RELEASE.2023-12-20T01-00-02Z
docker pull valkey/valkey:8
docker pull infiniflow/ragflow:v0.16.0
docker save -o elasticsearch.tar docker.elastic.co/elasticsearch/elasticsearch:8.11.3
docker save -o mysql.tar mysql:8.0.39
docker save -o minio.tar quay.io/minio/minio:RELEASE.2023-12-20T01-00-02Z
docker save -o valkey.tar valkey/valkey:8
docker save -o ragflow.tar infiniflow/ragflow:v0.16.0
docker load < elasticsearch.tar
docker load < mysql.tar
docker load < minio.tar
docker load < valkey.tar
docker load < ragflow.tar
最后,ragflow总体感觉搜索能力是不错的,但也存在某些bug与安全问题,这个请自行进行二开避免一下。
还有,实际上RAGFlow有很多细节支持,需要你配置和自定义,这点需要花时间去测试和研究才行。
参考文档
1.https://ragflow.io/docs/dev/