知识库问答部署

知识库问答部署

WSL 部署 Ollama

Ollama 官网:ollama.com/

Linux 版本安装(很慢):

bash 复制代码
 curl -fsSL https://ollama.com/install.sh | sh

ollama 常用命令:

从注册表拉取模型:ollama pull 模型名

下载:ollama run 模型名

删除:ollama rm 模型名

查看已下载模型:ollama list

查看正在运行的模型:ollama ps

Dify+Ollama部署

Docker 部署 Dify

参考文档:docs.dify.ai/getting-sta...

Docker 安装参考:www.yuque.com/aidabao/stu... 《环境配置》WSL 安装 Docker 部分

一、克隆 Dify 仓库

bash 复制代码
 git clone https://github.com/langgenius/dify.git

二、部署 dify

  1. 切换至 dify 下的 docker 目录
bash 复制代码
 cd dify/docker
  1. 复制配置文件
bash 复制代码
 cp .env.example .env
  1. 下载启动容器
bash 复制代码
 docker compose up -d
  1. 检查容器是否启动
bash 复制代码
 docker compose ps
  1. 访问 dify:通过 ip:端口号进行访问
  2. 更新 Dify
bash 复制代码
 cd dify/docker
 docker compose down
 git pull origin main
 docker compose pull
 docker compose up -d

Dify 连接 Ollama

  1. 添加模型,名称需要与 ollama 中一致(可以使用 ollama list 查看) 若 Dify 部署在服务器,则 URL 为:http://ip:11434 若 Dify 部署在本地 Docker 中:host.docker.internal:11434
  1. 创建应用时选择需要的模型即可

MaxKB 部署

Docker 部署 MaxKB

  1. docker 命令一键启动
bash 复制代码
 # Linux 操作系统
 docker run -d --name=maxkb --restart=always -p 8080:8080 -v ~/.maxkb:/var/lib/postgresql/data -v ~/.python-packages:/opt/maxkb/app/sandbox/python-packages cr2.fit2cloud.com/1panel/maxkb
 
 # 如果设置了docker代理
 docker run -d --name=maxkb --restart=always -p 8080:8080 -v ~/.maxkb:/var/lib/postgresql/data -v ~/.python-packages:/opt/maxkb/app/sandbox/python-packages 1panel/maxkb
 
 # Windows 操作系统
 docker run -d --name=maxkb --restart=always -p 8080:8080 -v C:/maxkb:/var/lib/postgresql/data -v C:/python-packages:/opt/maxkb/app/sandbox/python-packages cr2.fit2cloud.com/1panel/maxkb
  1. 在浏览器输入http://ip/localhost:8080/即可访问 MaxKB 默认用户:admin 默认密码:MaxKB@123..

MaxKB 知识库及应用创建

一、添加模型

这里以 llama3.2 为例,自定义模型名称,选择权限,类型选择大语言模型,选择基础模型(会自动进行下载),API 域名:

若 Ollama 部署在本地,MaxKB 部署在 Docker:http://host.docker.internal:11434

若 Ollama 部署在 WSL,MaxKB 部署在 Docker:http://wsl 的 ip:11434

API Key 随便填一个即可

二、知识库创建

  1. 输入知识库名称及描述,选择模型。 通用型用户可以自己上传本地文件,web 站点会自动爬取站点内容。
  1. 选择要上传的文件/文件夹。

  1. 设置分段规则,建议使用智能分段,对文档内容非常熟悉可以用高级分段。
  1. 开始导入,系统会使用 CPU 进行索引,等待成功即可。

三、应用创建

  1. 设置应用名称、描述,选择类型。
  1. 进行相关的设置,模型选择自己本地的模型并关联创建的知识库,设置提示词和历史聊天记录等,右边可以即时预览测试。

  1. 保存后返回可以通过演示来使用。
  1. 可以在设置概览中是否公开以及嵌入第三方等设置。

AnythingLLM 部署

WSL2-Ubuntu 部署 Ollama + Open-WebUI + AngthingLLM

版本更新

bash 复制代码
sudo apt update -ysudo apt install vim wget curl git -y

WSL2 开启Systemd

bash 复制代码
sudo vim /etc/wsl.conf

修改/添加以下字段:

bash 复制代码
systemd=true
Windows PowerShell下运行 (关闭后重启生效)
bash 复制代码
wsl --shutdown

Docker 安装

失败则参考:www.yuque.com/aidabao/stu... 《环境配置》WSL 安装 Docker 部分

bash 复制代码
curl -fsSL https://get.docker.com -o get-docker.shsudo sh get-docker.shsudo usermod -aG docker <username>sudo systemctl list-unit-files| grep dockersudo service docker start
docker 换源

阿里云 Docker 镜像加速服务页面:cr.console.aliyun.com/cn-hangzhou...

bash 复制代码
sudo vim /etc/docker/daemon.json
添加以下内容(清华源)
json 复制代码
{
	"registry-mirrors": ["https://registry.docker-cn.com"]
}

sudo systemctl daemon-reload

sudo systemctl restart dockersudo docker info

Ollama 安装

命令行安装(很慢)

ollama.com/

github.com/ollama/olla...

github.com/ollama/olla...

bash 复制代码
curl -fsSL https://ollama.com/install.sh | sh
增加启动环境变量 (放开外部访问)
bash 复制代码
sudo vi /etc/systemd/system/ollama.service
添加以下内容
bash 复制代码
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_ORIGINS=*"
ExecStart=/usr/local/bin/ollama serve
启动服务
bash 复制代码
sudo systemctl start ollama

curl http://localhost:11434

显示 Ollama is running

bash 复制代码
ip addr | grep inet |grep eth

显示 inet ip/port brd ip scope global eth0

bash 复制代码
curl http://ip:11434
Docker方式安装
bash 复制代码
docker pull ollama/ollama

docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

docker exec -it ollama ollama run gemma:2bdocker exec -it ollama /bin/bash
下载模型
bash 复制代码
ollama pull gemma:2b

ollama list
调用模型(命令行窗口)
bash 复制代码
# 运行模型/如果未下载会先下载
ollama run gemma:2b
调用模型(Curl接口运行)
bash 复制代码
curl http://localhost:11434/api/chat -d '{"model": "gemma:2b","messages": [{ "role": "user", "content": "who are you" }]}'
调用模型(Python代码调用,建议在conda下运行)
bash 复制代码
vim test.pyimport requestsimport jsondef send_message_to_ollama(message, port=11434):url = f"http://localhost:{port}/api/chat"payload = {"model": "gemma:2b","messages": [{"role": "user", "content": message}]}response = requests.post(url, json=payload)if response.status_code == 200:response_content = ""for line in response.iter_lines():if line:response_content += json.loads(line)["message"]["content"]return response_contentelse:return f"Error: {response.status_code} - {response.text}"if __name__ == "__main__":user_input = "who are you"response = send_message_to_ollama(user_input)print("Ollama's response:")print(response)
在 conda环境中运行Python脚本
bash 复制代码
conda activate tfpip install requestspython test.pyconda deactivate

Open WebUI 部署

openwebui.com/

github.com/open-webui/...

Docker方式安装
bash 复制代码
docker pull ghcr.io/open-webui/open-webui:main

# 使用代理
docker pull ghcr.nju.edu.cn/open-webui/open-webui:main

# 查看已安装镜像
docker images
Ollama 在同一台电脑
bash 复制代码
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
Ollama 在不同一台电脑
bash 复制代码
docker run -d -p 3000:8080 -e OLLAMA_BASE_URL=https://example.com -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
更新 open-webui
bash 复制代码
docker run --rm --volume /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --run-once open-webui
部署后启动(时间有点长)

打开网站 http://127.0.0.1:3000

先注册,再登录。登录后,选择模式(正常情况,会显示出刚才ollama已经下载好的模型)

docker 没法访问时
bash 复制代码
sudo docker run -d --network=host -v open-webui:/app/backend/data -e OLLAMA_BASE_URL=http://127.0.0.1:11434 --name open-webui88 --restart always ghcr.io/open-webui/open-webui:main

打开网站 http://127.0.0.1:8080

AngthingLLM 部署

useanything.com

Docker方式安装
bash 复制代码
docker pull mintplexlabs/anythingllm:master

docker run -d -p 3001:3001 --restart always mintplexlabs/anythingllm:master
  1. 打开网站 http://localhost:3001/
  2. 完成安装后,先会要求配置大模型LLM Preference 选择 OllamaOllama Base URL 输入 http://ip:11434正常连通里,可以在Chat Model Selection 选择Ollama已经下载的模型
  3. 选择嵌入模式和向量数据库Embedding Preference 选择 AnythingLLM Embedder
  4. 向量数据库连接选择Vector Database Connection 选择 LanceDB
  5. 配置完成后,给工作空间起个名字,即可进入AnythingLLM中。

FastGPT 部署

一、前置工作

准备 Docker、Docker Compose 环境

最新版本的 Docker 已集成 Docker Compose,使用docker compose​命令

bash 复制代码
# 安装 Docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
systemctl enable --now docker

# 安装 docker-compose
curl -L https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

# 验证安装
docker -v
docker-compose -v

二、Docker 部署 FastGPT

下载 docker-compose.yml

bash 复制代码
mkdir fastgpt
cd fastgpt
curl -O https://raw.githubusercontent.com/labring/FastGPT/main/projects/app/data/config.json

# pgvector 版本(测试推荐,简单快捷)
curl -o docker-compose.yml https://raw.githubusercontent.com/labring/FastGPT/main/files/docker/docker-compose-pgvector.yml

# milvus 版本
# curl -o docker-compose.yml https://raw.githubusercontent.com/labring/FastGPT/main/files/docker/docker-compose-milvus.yml
# zilliz 版本
# curl -o docker-compose.yml https://raw.githubusercontent.com/labring/FastGPT/main/files/docker/docker-compose-zilliz.yml

修改环境变量

找到 yml 文件中,fastgpt 容器的环境变量进行下面操作:

  • PgVector版本
bash 复制代码
FE_DOMAIN=你的前端你访问地址,例如 http://192.168.0.1:3000;https://cloud.fastgpt.cn
  • Milvus 版本
bash 复制代码
FE_DOMAIN=你的前端你访问地址,例如 http://192.168.0.1:3000;https://cloud.fastgpt.cn
  • Zilliz 版本

    • 打开 Zilliz Cloud, 创建实例并获取相关秘钥。
    • 修改MILVUS_ADDRESSMILVUS_TOKEN链接参数,分别对应 zillizPublic EndpointApi key,记得把自己ip加入白名单。
    • 修改FE_DOMAIN=你的前端你访问地址,例如 http://192.168.0.1:3000;cloud.fastgpt.cn

启动容器

在 docker-compose.yml 同级目录下执行。请确保docker-compose​版本最好在2.17以上,否则可能无法执行自动化命令。

bash 复制代码
# 启动容器
docker-compose up -d

# 等待10s,OneAPI第一次总是要重启几次才能连上Mysql
sleep 10

# 重启一次oneapi(由于OneAPI的默认Key有点问题,不重启的话会提示找不到渠道,临时手动重启一次解决,等待作者修复)
docker restart oneapi

打开 OneAPI 添加模型

可以通过ip:3001​访问OneAPI,默认账号为root​密码为123456​。在OneApi中添加合适的AI模型渠道。

  1. 登录 One API
  1. 创建渠道

在 One API 中添加对应渠道,直接点击 【添加基础模型】,不要遗漏了向量模型(Embedding)

  1. 创建令牌
  1. 修改账户余额

One API 默认 root 用户只有 200刀,可以自行修改编辑。

  1. 修改 FastGPT 的环境变量

有了 One API 令牌后,FastGPT 可以通过修改 baseurl​ 和 key​ 去请求到 One API,再由 One API 去请求不同的模型。修改下面两个环境变量:

bash 复制代码
# 务必写上 v1。如果在同一个网络内,可改成内网地址。

OPENAI_BASE_URL=https://xxxx.cloud.sealos.io/v1

# 下面的 key 是由 One API 提供的令牌
CHAT_API_KEY=sk-xxxxxx
接入其他模型(文心一言为例)
  1. OneAPI 新增模型渠道 类型选择百度文心千帆。
  1. 修改 FastGPT 环境变量

可以在 /projects/app/src/data/config.json​ 里找到配置文件(本地开发需要复制成 config.local.json),按下面内容修改配置文件:

配置模型关键点在于model​ 需要与 OneAPI 渠道中的模型一致。

json 复制代码
{
  "llmModels": [ // 语言模型配置
    {
      "model": "ERNIE-Bot", // 这里的模型需要对应 One API 的模型
      "name": "文心一言", // 对外展示的名称
      "avatar": "/imgs/model/openai.svg", // 模型的logo
      "maxContext": 16000, // 最大上下文
      "maxResponse": 4000, // 最大回复
      "quoteMaxToken": 13000, // 最大引用内容
      "maxTemperature": 1.2, // 最大温度
      "charsPointsPrice": 0,
      "censor": false,
      "vision": false, // 是否支持图片输入
      "datasetProcess": true, // 是否设置为知识库处理模型
      "usedInClassify": true, // 是否用于问题分类
      "usedInExtractFields": true, // 是否用于字段提取
      "usedInToolCall": true, // 是否用于工具调用
      "usedInQueryExtension": true, // 是否用于问题优化
      "toolChoice": true, // 是否支持工具选择
      "functionCall": false, // 是否支持函数调用
      "customCQPrompt": "", // 自定义文本分类提示词(不支持工具和函数调用的模型
      "customExtractPrompt": "", // 自定义内容提取提示词
      "defaultSystemChatPrompt": "", // 对话默认携带的系统提示词
      "defaultConfig":{}  // 请求API时,挟带一些默认配置(比如 GLM4 的 top_p)
    }
  ],
  "vectorModels": [ // 向量模型配置
    {
      "model": "text-embedding-ada-002",
      "name": "Embedding-2",
      "avatar": "/imgs/model/openai.svg",
      "charsPointsPrice": 0,
      "defaultToken": 700,
      "maxToken": 3000,
      "weight": 100
    },
  ]
}
  1. 重启 FastGPT
bash 复制代码
docker-compose down
docker-compose up -d

# 新版Docker使用以下命令:
docker compose down
docker compose up -d

访问 FastGPT

目前可以通过 ip:3000​ 直接访问(注意防火墙)。登录用户名为 root​,密码为docker-compose.yml​环境变量里设置的 DEFAULT_ROOT_PSW​。

首次运行,会自动初始化 root 用户,密码为 1234​(与环境变量中的DEFAULT_ROOT_PSW​一致),日志里会提示一次MongoServerError: Unable to read from a snapshot due to pending collection catalog changes;​可忽略。

RAGFlow 部署

Docker 部署RAGFlow

克隆仓库

bash 复制代码
git clone https://github.com/infiniflow/ragflow.git
cd ragflow/docker
git checkout -f v0.17.0

使用预构建的 Docker 镜像并启动服务器

bash 复制代码
docker compose -f docker-compose.yml up -d

检查服务器状态

bash 复制代码
docker logs -f ragflow-server

以下输出表示启动成功:

plaintext 复制代码
____   ___    ______ ______ __
    / __ \ /   |  / ____// ____// /____  _      __
   / /_/ // /| | / / __ / /_   / // __ \| | /| / /
  / _, _// ___ |/ /_/ // __/  / // /_/ /| |/ |/ /
 /_/ |_|/_/  |_|\____//_/    /_/ \____/ |__/|__/

 * Running on all addresses (0.0.0.0)

在浏览器中,输入服务器的 IP 地址并登录

输入 http://IP_OF_YOUR_MACHINE​(sans 端口号),若使用默认配置时可以省略默认的 HTTP 服务端口 80​。

LobeChat 部署

Docker 部署 LobeChat

bash 复制代码
$ docker run -d -p 3210:3210 \
  -e OPENAI_API_KEY=sk-xxxx \
  -e ACCESS_CODE=lobe66 \
  --name lobe-chat \
  lobehub/lobe-chat

  # 如果需要lobe-chat自启动
  $ docker run -d -p 3210:3210 \
  --restart=always \
  -e OPENAI_API_KEY=sk-xxxx \
  -e ACCESS_CODE=lobe66 \
  --name lobe-chat \
  lobehub/lobe-chat

如果有 OpenAI API Key ,使用 API Key 替换上述命令中的 sk-xxxx

使用代理地址

bash 复制代码
$ docker run -d -p 3210:3210 \
  -e OPENAI_API_KEY=sk-xxxx \
  -e OPENAI_PROXY_URL=https://api-proxy.com/v1 \
  -e ACCESS_CODE=lobe66 \
  --name lobe-chat \
  lobehub/lobe-chat

docker run -d -p 3210:3210 -e OPENAI_API_KEY=sk-xxxx -e OPENAI_PROXY_URL=https://api-proxy.com/v1 -e ACCESS_CODE=lobe66 --name lobe-chat lobehub/lobe-chat

LobeChat 集成 Ollama

本地启动 Ollama

已经在本地 11434​ 端口启动了 Ollama 服务。运行以下 Docker 命令行,在本地启动 LobeChat

bash 复制代码
docker run -d -p 3210:3210 -e OLLAMA_PROXY_URL=http://host.docker.internal:11434 lobehub/lobe-chat

非本地启动 Ollama

由于 Ollama 默认参数在启动时设置了仅本地访问,所以跨域访问以及端口监听需要进行额外的环境变量设置 OLLAMA_ORIGINS​ 和 OLLAMA_HOST​。

设置环境变量(Windows)

在 Windows 上,Ollama 继承了您的用户和系统环境变量。

  1. 首先通过 Windows 任务栏点击 Ollama 退出程序。
  2. 从控制面板编辑系统环境变量。
  3. 为您的用户账户编辑或新建 Ollama 的环境变量,比如OLLAMA_HOSTOLLAMA_ORIGINS等。
  4. 点击OK/应用保存。
  5. 重新运行Ollama
设置环境变量(Linux)

如果 Ollama 作为 systemd 服务运行,应该使用systemctl​设置环境变量:

  1. 通过调用sudo systemctl edit ollama.service编辑 systemd 服务。
bash 复制代码
sudo systemctl edit ollama.service
  1. 对于每个环境变量,在[Service]部分下添加Environment
bash 复制代码
[Service]
Environment="OLLAMA_HOST=0.0.0.0"
Environment="OLLAMA_ORIGINS=*"
  1. 保存并退出。
  2. 重载systemd并重启 Ollama:
bash 复制代码
sudo systemctl daemon-reload
sudo systemctl restart ollama

完整ollama.service配置如下:

bash 复制代码
[Unit]
Description=Ollama Service
After=network-online.target

[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_ORIGINS=*"
Environment="..."
[Install]
WantedBy=default.target

使用 LobeChat

在设置中配置好相应的模型即可进行对话,Ollama 服务地址:http://ip:11434 或者http://host.docker.internal:11434​,模型列表有几十种供选择,如果本地未下载,对话时会提示进行下载

停止、删除所有的docker容器和镜像

列出所有的容器 ID

bash 复制代码
docker ps -aq

停止所有的容器

bash 复制代码
docker stop $(docker ps -aq)

删除所有的容器

bash 复制代码
docker rm $(docker ps -aq)

删除所有的镜像

bash 复制代码
docker rmi $(docker images -q)

附:强制删除镜像

bash 复制代码
docker rmi -f <容器ID>

停止并删除使用该镜像的容器

bash 复制代码
docker stop <容器ID>
docker rm <容器ID>