Skip to content

Ollama+RAGFlow构建私有知识库

muliao.com选择镜像conda3_24.4.0_3.8.19-ubuntu20.04_11.8

ollama使用官方linux部署脚本进行部署

ragflow使用docker进行部署

安装过程中参考文章内容

https://ragflow.io/docs/v0.17.2/

https://github.com/ollama/ollama/blob/main/docs/linux.md

安装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

image-20250321151406777

ragflow的web页面的默认端口是80,我们通过参数修改为SVR_80_PORT=8891,8891对应的公网端口可以从控制台预留端口进行查询。此时就可以通过muliao.com的对外IP及对外映射端口登录ragflow的web地址了.

image-20250321151815864

体验RAGFlow

首次登录ragflow页面可以进行注册并登录。登录之后可以切换为简体中文,点击头像设置模型为ollama.

image-20250321152205463

设置ollama服务的相关信息,点击确定,如果无报错返回即添加成功。

image-20250321152836632

image-20250321173059705

在知识库页面中添加

image-20250321153217077

image-20250321153242500

在知识库-贾维斯中上传文档并解析,我们上传一个文档《NVIDIA-H100-GPU-Architecture-Whitepaper-zhCN》。

image-20250321173645274

在聊天中新建助理 [贾维斯],知识库选择贾维斯。提示引擎设置Rerank模型。模型设置ollama。其他参数可根据需要修改。

image-20250321174007832

image-20250321174202155

image-20250321174242260

然后在贾维斯助理中创建新聊天。Enjoy!

image-20250321174945784