Ollama+RAGFlow构建私有知识库
muliao.com选择镜像conda3_24.4.0_3.8.19-ubuntu20.04_11.8
ollama使用官方linux部署脚本进行部署
ragflow使用docker进行部署
安装过程中参考文章内容
安装Docker
在Ubuntu 20.04上安装Docker可以通过以下步骤完成:
更新软件包索引
打开终端并执行命令以确保你的软件包索引是最新的。
bash
sudo apt-get update
sudo apt-get update
安装一些必要的软件包,以便apt能够通过HTTPS使用仓库:
bash
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
添加Docker的官方GPG密钥:
这一步是为了确保你从Docker下载的软件是安全可靠的。
bash
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
设置稳定的仓库:
添加Docker的APT仓库到你的系统中。
bash
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
再次更新软件包索引:
因为你刚添加了一个新的仓库,所以需要再次更新软件包索引。
bash
sudo apt-get update
sudo apt-get update
从新添加的仓库中安装Docker CE:
现在你可以安装最新的Docker版本了。
bash
sudo apt-get -y install docker-ce
sudo apt-get -y install docker-ce
验证Docker是否安装成功:
安装完成后,运行下面的命令来确认Docker已经正确安装并且可以正常工作。
bash
sudo docker --version
sudo docker --version
(可选)修改docker的数据目录
默认docker的镜像和容器存储都在/var/lib/docker目录下,如果系统盘空间较小,建议将docker数据目录调整到其他可用空间更大的目,避免系统盘空间不足。详细操作步骤请查看Docker数据目录。
安装Ollama
在Ubuntu 20.04上安装Ollama可以通过以下步骤完成:
执行如下命令进行Ollama安装,打开终端并执行命令。
curl -fsSL https://ollama.com/install.sh | sh
curl -fsSL https://ollama.com/install.sh | sh
返回如下提示,显示安装完毕。
bash
>>> Installing ollama to /usr/local
>>> Downloading Linux amd64 bundle
######################################################################## 100.0%
>>> Creating ollama user...
>>> Adding ollama user to render group...
>>> Adding ollama user to video group...
>>> Adding current user to ollama group...
>>> Creating ollama systemd service...
WARNING: systemd is not running
>>> NVIDIA GPU installed.
>>> The Ollama API is now available at 127.0.0.1:11434.
>>> Install complete. Run "ollama" from the command line.
>>> Installing ollama to /usr/local
>>> Downloading Linux amd64 bundle
######################################################################## 100.0%
>>> Creating ollama user...
>>> Adding ollama user to render group...
>>> Adding ollama user to video group...
>>> Adding current user to ollama group...
>>> Creating ollama systemd service...
WARNING: systemd is not running
>>> NVIDIA GPU installed.
>>> The Ollama API is now available at 127.0.0.1:11434.
>>> Install complete. Run "ollama" from the command line.
修改配置文件/etc/systemd/system/ollama.service,在[service]部分增加如下环境变量,以便其他服务可以直接访问ollama的api:
bash
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_HOST=0.0.0.0:11434"
启动ollama服务,并设置开机启动:
bash
systemctl status ollama
systemctl start ollama
systemctl enable ollama
systemctl status ollama
systemctl start ollama
systemctl enable ollama
修改配置文件,可以通过重启ollama生效
bash
systemctl daemon-reload
systemctl restart ollama
systemctl daemon-reload
systemctl restart ollama
拉去一个小模型qwen2.5:1.5b,使用提示词,验证ollama服务。
bash
ollama pull qwen2.5:1.5b
ollama run qwen2.5:1.5b
ollama pull qwen2.5:1.5b
ollama run qwen2.5:1.5b
安装RAGFlow
修改系统配置文件/etc/sysctl.conf
参数vm.max_map_count,RAGFlow安装过程中会安装ElasticSearch,对于像 Elasticsearch 这样的应用,内存映射文件(mmap)被广泛用于提高索引和搜索性能。如果 vm.max_map_count 设置得太低,Elasticsearch 可能会遇到内存不足的问题,导致异常行为或错误。
bash
vm.max_map_count=262144
vm.max_map_count=262144
修改完毕后,执行如下命令验证生效。
bash
sysctl -p
sysctl -p
下载v0.17.2版本的ragflow仓库。
git clone -b v0.17.2 https://github.com/infiniflow/ragflow.git
git clone -b v0.17.2 https://github.com/infiniflow/ragflow.git
正常安装部署之前,需要将镜像下载需要切换到国内镜像地址。
修改配置文件docker/.env,将RAGFLOW_IMAGE的默认值修改,.env文件中有描述信息
RAGFLOW_IMAGE=swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow:v0.17.2
RAGFLOW_IMAGE=swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow:v0.17.2
修改RAGFLOW的端口,将docker/.env中修改并增加,由于muliao.com默认内部端口映射为8890、8891、8892、8893等。
SVR_HTTP_PORT=8890
SVR_80_PORT=8891
SVR_443_PORT=8892
SVR_HTTP_PORT=8890
SVR_80_PORT=8891
SVR_443_PORT=8892
修改docker/docker-compose.yml文件,将ports属性修改如下:
container_name: ragflow-server
ports:
- ${SVR_HTTP_PORT}:9380
- ${SVR_80_PORT}:80
- ${SVR_443_PORT}:443
container_name: ragflow-server
ports:
- ${SVR_HTTP_PORT}:9380
- ${SVR_80_PORT}:80
- ${SVR_443_PORT}:443
执行如下命令并进行安装。
docker compose -f docker/docker-compose.yml up -d
docker compose -f docker/docker-compose.yml up -d
安装过程中需要下载如下镜像:mysql、minio、redis、elasticsearch,可以根据docker/docker-compose-base.yml 文件中的地址,提前进行单个下载
image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION}
image: infiniflow/infinity:v0.6.0-dev3
image: mysql:8.0.39
image: quay.io/minio/minio:RELEASE.2023-12-20T01-00-02Z
image: valkey/valkey:8
image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION}
image: infiniflow/infinity:v0.6.0-dev3
image: mysql:8.0.39
image: quay.io/minio/minio:RELEASE.2023-12-20T01-00-02Z
image: valkey/valkey:8
等docker compose命令执行完毕后,可以看到输出结果:
WARN[0000] The "HF_ENDPOINT" variable is not set. Defaulting to a blank string.
WARN[0000] The "MACOS" variable is not set. Defaulting to a blank string.
[+] Running 10/67
[+] Running 67/67 Pulling 32.4s
✔ redis Pulled 190.1s
✔ es01 Pulled 129.4s
✔ mysql Pulled 201.0s
✔ ragflow Pulled 239.1s
✔ minio Pulled 178.0s
[+] Running 11/11
✔ Network docker_ragflow Created 0.0s
✔ Volume "docker_mysql_data" Created 0.0s
✔ Volume "docker_minio_data" Created 0.0s
✔ Volume "docker_redis_data" Created 0.0s
✔ Volume "docker_esdata01" Created 0.0s
✔ Container ragflow-redis Started 3.0s
✔ Container ragflow-es-01 Started 3.0s
✔ Container ragflow-mysql Healthy 13.5s
✔ Container ragflow-minio Started 3.0s
! es01 Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. 0.0s
✔ Container ragflow-server Started
WARN[0000] The "HF_ENDPOINT" variable is not set. Defaulting to a blank string.
WARN[0000] The "MACOS" variable is not set. Defaulting to a blank string.
[+] Running 10/67
[+] Running 67/67 Pulling 32.4s
✔ redis Pulled 190.1s
✔ es01 Pulled 129.4s
✔ mysql Pulled 201.0s
✔ ragflow Pulled 239.1s
✔ minio Pulled 178.0s
[+] Running 11/11
✔ Network docker_ragflow Created 0.0s
✔ Volume "docker_mysql_data" Created 0.0s
✔ Volume "docker_minio_data" Created 0.0s
✔ Volume "docker_redis_data" Created 0.0s
✔ Volume "docker_esdata01" Created 0.0s
✔ Container ragflow-redis Started 3.0s
✔ Container ragflow-es-01 Started 3.0s
✔ Container ragflow-mysql Healthy 13.5s
✔ Container ragflow-minio Started 3.0s
! es01 Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. 0.0s
✔ Container ragflow-server Started
通过docker ps -a查看服务启动信息
bash
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
45ccb6bf6368 swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow:v0.17.2 "./entrypoint.sh" 3 minutes ago Up 3 minutes 0.0.0.0:8891->80/tcp, [::]:8891->80/tcp, 0.0.0.0:8892->443/tcp, [::]:8892->443/tcp, 0.0.0.0:8890->9380/tcp, [::]:8890->9380/tcp ragflow-server
05d1db73ecee quay.io/minio/minio:RELEASE.2023-12-20T01-00-02Z "/usr/bin/docker-ent…" 3 minutes ago Up 3 minutes 0.0.0.0:9000-9001->9000-9001/tcp, [::]:9000-9001->9000-9001/tcp ragflow-minio
5e9d8f083f33 elasticsearch:8.11.3 "/bin/tini -- /usr/l…" 3 minutes ago Up 3 minutes (healthy) 9300/tcp, 0.0.0.0:1200->9200/tcp, [::]:1200->9200/tcp ragflow-es-01
ab6405fbf989 valkey/valkey:8 "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp ragflow-redis
62c0f6346aeb mysql:8.0.39 "docker-entrypoint.s…" 3 minutes ago Up 3 minutes (healthy) 33060/tcp, 0.0.0.0:5455->3306/tcp, [::]:5455->3306/tcp ragflow-mysql
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
45ccb6bf6368 swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow:v0.17.2 "./entrypoint.sh" 3 minutes ago Up 3 minutes 0.0.0.0:8891->80/tcp, [::]:8891->80/tcp, 0.0.0.0:8892->443/tcp, [::]:8892->443/tcp, 0.0.0.0:8890->9380/tcp, [::]:8890->9380/tcp ragflow-server
05d1db73ecee quay.io/minio/minio:RELEASE.2023-12-20T01-00-02Z "/usr/bin/docker-ent…" 3 minutes ago Up 3 minutes 0.0.0.0:9000-9001->9000-9001/tcp, [::]:9000-9001->9000-9001/tcp ragflow-minio
5e9d8f083f33 elasticsearch:8.11.3 "/bin/tini -- /usr/l…" 3 minutes ago Up 3 minutes (healthy) 9300/tcp, 0.0.0.0:1200->9200/tcp, [::]:1200->9200/tcp ragflow-es-01
ab6405fbf989 valkey/valkey:8 "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp ragflow-redis
62c0f6346aeb mysql:8.0.39 "docker-entrypoint.s…" 3 minutes ago Up 3 minutes (healthy) 33060/tcp, 0.0.0.0:5455->3306/tcp, [::]:5455->3306/tcp ragflow-mysql
ragflow的web页面的默认端口是80,我们通过参数修改为SVR_80_PORT=8891,8891对应的公网端口可以从控制台预留端口进行查询。此时就可以通过muliao.com的对外IP及对外映射端口登录ragflow的web地址了.
体验RAGFlow
首次登录ragflow页面可以进行注册并登录。登录之后可以切换为简体中文,点击头像设置模型为ollama.
设置ollama服务的相关信息,点击确定,如果无报错返回即添加成功。
在知识库页面中添加
在知识库-贾维斯中上传文档并解析,我们上传一个文档《NVIDIA-H100-GPU-Architecture-Whitepaper-zhCN》。
在聊天中新建助理 [贾维斯],知识库选择贾维斯。提示引擎设置Rerank模型。模型设置ollama。其他参数可根据需要修改。
然后在贾维斯助理中创建新聊天。Enjoy!