云计算、AI、云原生、大数据等一站式技术学习平台

网站首页 > 教程文章 正文

Deepseek+fastGPT部署企业本地知识库步骤和注意事项

jxf315 2025-03-20 15:49:15 教程文章 61 ℃


在网上评论说dify的知识库的回答不准确,相比fastGPT会差很多,尝试在本地跑一跑试,由于官方文档更新不及时以及最新版本的大模型配置做了变更,网上的文档在配置模型时都是老版本的配置,在实际部署过程中,踩了几个坑,有想本地化部署的可以拿本文做参考。

开源地址:GitHub - labring/FastGPT: FastGPT is a knowledge-based platform built on the LLMs, offers a comprehensive suite of out-of-the-box capabilities such as data processing, RAG retrieval, and visual AI workflow orchestration, letting you easily develop and deploy complex question-answering systems without the need for extensive setup or configuration.

官网的安装文档:Docker Compose 快速部署 | FastGPTGitHub微信群

也可以先体验他的线上版本(https://cloud.fastgpt.cn/)再考虑要不要装在本地体验。


先看看本地部署后的运行效果图:


黑色区域是我本地的服务部署环境,用了两个虚拟机。

部署步骤如下:

一,确定ollama/docker/docker compose已安装成功,并且下载了deepseek相关版本的大模型。

二,下载dify的两个安装文件并安装。

三,配置模型。

四,重新构建docker并在FastGPT中引入模型。

五,在fastGPT中使用本地知识库。

六,安装总结。



一,确定ollama/docker/docker compose已安装成功,并且下载了deepseek相关版本的大模型。

1.1,先确认ollama的安装是否成功(未下载请执行以下命令 ),

ollama run deepseek-r1:14b

ollama run nomic-embed-text:latest

执行ollama list,

再执行 ollama run deepseek-r1:14b 。(注意deepseek-r1:14b是我电脑上能跑的最大的版本,可能你的版本不一致,请换成你下载的版本。)


1.2,确认可以用本地IP来访问ollama(
http://172.24.77.26:11434/)。具体的IP地址根据你的电脑做替换,如果不能用IP访问,需要改一下ollama的配置文件,可以在线问一下deepseek,“其它电脑可以访问本机的ollama”,即更改config.json中的bind改成0.0.0.0即可。



1.3,docker/docker compose请自行参考其它资料安装(或者问deepseek,使用国内网络快速安装docker(win11或ubuntu))。



二,下载dify的两个安装文件并安装。

这两个文件下载时可能会有网络问题,特意贴出来:

2.1,config.json

// 已使用 json5 进行解析,会自动去掉注释,无需手动去除
{
  "feConfigs": {
    "lafEnv": "https://laf.dev" // laf环境。 https://laf.run (杭州阿里云) ,或者私有化的laf环境。如果使用 Laf openapi 功能,需要最新版的 laf 。
  },
  "systemEnv": {
    "vectorMaxProcess": 10, // 向量处理线程数量
    "qaMaxProcess": 10, // 问答拆分线程数量
    "vlmMaxProcess": 10, // 图片理解模型最大处理进程
    "tokenWorkers": 30, // Token 计算线程保持数,会持续占用内存,不能设置太大。
    "pgHNSWEfSearch": 100, // 向量搜索参数。越大,搜索越精确,但是速度越慢。设置为100,有99%+精度。
    "customPdfParse": {
      "url": "", // 自定义 PDF 解析服务地址
      "key": "", // 自定义 PDF 解析服务密钥
      "doc2xKey": "", // doc2x 服务密钥
      "price": 0 // PDF 解析服务价格
    }
  }
}

2,2,docker-compose.yml

# 数据库的默认账号和密码仅首次运行时设置有效
# 如果修改了账号密码,记得改数据库和项目连接参数,别只改一处~
# 该配置文件只是给快速启动,测试使用。正式使用,记得务必修改账号密码,以及调整合适的知识库参数,共享内存等。
# 如何无法访问 dockerhub 和 git,可以用阿里云(阿里云没有arm包)

version: '3.3'
services:
  # db
  pg:
    # image: pgvector/pgvector:0.8.0-pg15 # docker hub
    image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.8.0-pg15 # 阿里云
    container_name: pg
    restart: always
    # ports: # 生产环境建议不要暴露
    #   - 5432:5432
    networks:
      - fastgpt
    environment:
      # 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果
      - POSTGRES_USER=username
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=postgres
    volumes:
      - ./pg/data:/var/lib/postgresql/data
  mongo:
    # image: mongo:5.0.18 # dockerhub
    image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # 阿里云
    # image: mongo:4.4.29 # cpu不支持AVX时候使用
    container_name: mongo
    restart: always
    # ports:
    #   - 27017:27017
    networks:
      - fastgpt
    command: mongod --keyFile /data/mongodb.key --replSet rs0
    environment:
      - MONGO_INITDB_ROOT_USERNAME=myusername
      - MONGO_INITDB_ROOT_PASSWORD=mypassword
    volumes:
      - ./mongo/data:/data/db
    entrypoint:
      - bash
      - -c
      - |
        openssl rand -base64 128 > /data/mongodb.key
        chmod 400 /data/mongodb.key
        chown 999:999 /data/mongodb.key
        echo 'const isInited = rs.status().ok === 1
        if(!isInited){
          rs.initiate({
              _id: "rs0",
              members: [
                  { _id: 0, host: "mongo:27017" }
              ]
          })
        }' > /data/initReplicaSet.js
        # 启动MongoDB服务
        exec docker-entrypoint.sh "$@" &

        # 等待MongoDB服务启动
        until mongo -u myusername -p mypassword --authenticationDatabase admin --eval "print('waited for connection')" > /dev/null 2>&1; do
          echo "Waiting for MongoDB to start..."
          sleep 2
        done

        # 执行初始化副本集的脚本
        mongo -u myusername -p mypassword --authenticationDatabase admin /data/initReplicaSet.js

        # 等待docker-entrypoint.sh脚本执行的MongoDB服务进程
        wait $!

  # fastgpt
  sandbox:
    container_name: sandbox
    # image: ghcr.io/labring/fastgpt-sandbox:v4.9.0 # git
    image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-sandbox:v4.9.0 # 阿里云
    networks:
      - fastgpt
    restart: always
  fastgpt:
    container_name: fastgpt
    # image: ghcr.io/labring/fastgpt:v4.9.0 # git
    image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.9.0 # 阿里云
    ports:
      - 3000:3000
    networks:
      - fastgpt
    depends_on:
      - mongo
      - pg
      - sandbox
    restart: always
    environment:
      # 前端外部可访问的地址,用于自动补全文件资源路径。例如 https:fastgpt.cn,不能填 localhost。这个值可以不填,不填则发给模型的图片会是一个相对路径,而不是全路径,模型可能伪造Host。
      - FE_DOMAIN=
      # root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
      - DEFAULT_ROOT_PSW=1234
      # AI Proxy 的地址,如果配了该地址,优先使用
      - AIPROXY_API_ENDPOINT=http://aiproxy:3000
      # AI Proxy 的 Admin Token,与 AI Proxy 中的环境变量 ADMIN_KEY
      - AIPROXY_API_TOKEN=aiproxy
      # 模型中转地址(如果用了 AI Proxy,下面 2 个就不需要了,旧版 OneAPI 用户,使用下面的变量)
      # - OPENAI_BASE_URL=http://oneapi:3000/v1
      # - CHAT_API_KEY=sk-fastgpt
      # 数据库最大连接数
      - DB_MAX_LINK=30
      # 登录凭证密钥
      - TOKEN_KEY=any
      # root的密钥,常用于升级时候的初始化请求
      - ROOT_KEY=root_key
      # 文件阅读加密
      - FILE_TOKEN_KEY=filetoken
      # MongoDB 连接参数. 用户名myusername,密码mypassword。
      - MONGODB_URI=mongodb://myusername:mypassword@mongo:27017/fastgpt?authSource=admin
      # pg 连接参数
      - PG_URL=postgresql://username:password@pg:5432/postgres
      # sandbox 地址
      - SANDBOX_URL=http://sandbox:3000
      # 日志等级: debug, info, warn, error
      - LOG_LEVEL=info
      - STORE_LOG_LEVEL=warn
      # 工作流最大运行次数
      - WORKFLOW_MAX_RUN_TIMES=1000
      # 批量执行节点,最大输入长度
      - WORKFLOW_MAX_LOOP_TIMES=100
      # 自定义跨域,不配置时,默认都允许跨域(多个域名通过逗号分割)
      - ALLOWED_ORIGINS=
      # 是否开启IP限制,默认不开启
      - USE_IP_LIMIT=false
    volumes:
      - ./config.json:/app/data/config.json

  # AI Proxy
  aiproxy:
    image: 'ghcr.io/labring/sealos-aiproxy-service:latest'
    container_name: aiproxy
    restart: unless-stopped
    depends_on:
      aiproxy_pg:
        condition: service_healthy
    networks:
      - fastgpt
    environment:
      # 对应 fastgpt 里的AIPROXY_API_TOKEN
      - ADMIN_KEY=aiproxy
      # 错误日志详情保存时间(小时)
      - LOG_DETAIL_STORAGE_HOURS=1
      # 数据库连接地址
      - SQL_DSN=postgres://postgres:aiproxy@aiproxy_pg:5432/aiproxy
      # 最大重试次数
      - RetryTimes=3
      # 不需要计费
      - BILLING_ENABLED=false
      # 不需要严格检测模型
      - DISABLE_MODEL_CONFIG=true
    healthcheck:
      test: ['CMD', 'curl', '-f', 'http://localhost:3000/api/status']
      interval: 5s
      timeout: 5s
      retries: 10
  aiproxy_pg:
    # image: pgvector/pgvector:0.8.0-pg15 # docker hub
    image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.8.0-pg15 # 阿里云
    restart: unless-stopped
    container_name: aiproxy_pg
    volumes:
      - ./aiproxy_pg:/var/lib/postgresql/data
    networks:
      - fastgpt
    environment:
      TZ: Asia/Shanghai
      POSTGRES_USER: postgres
      POSTGRES_DB: aiproxy
      POSTGRES_PASSWORD: aiproxy
    healthcheck:
      test: ['CMD', 'pg_isready', '-U', 'postgres', '-d', 'aiproxy']
      interval: 5s
      timeout: 5s
      retries: 10
networks:
  fastgpt:

2.3,创建一个fastgpt的目录,把上面两个文件放在一起,注意系统原来是使用官网的镜像,发现下载速度特别慢,已把所有的镜像都改成阿里云,基本上半小时就能完成下载。

2.4,在fastgpt目录中使用docker-compose up -d安装,成功安装后有5个docker;



2.5,如果有服务无法启动,有可能是端口被占用了,尤其是3000,3306,5432的端口,很有可能您的其它docker或应用已开启了,碰到这种情况,也可以直接更改docker-compose.yml文件中对应镜像的ports,只要改前面的宿主机端口就可以了,我的机器上跑了dify,发现5432已占用,就像如下做更改(只改前一个,其它地方都不要动):


2.6,打开http://127.0.0.1:3000,初始化的用户/密码:root/1234,安装好的版本是V4.8.23。



3,配置模型

这是部署后最大的难题,资料多但又没说清楚,对于新手特别不友好。他的帮助文档中是写了有四种方式可以配置模型,对于新用户来说很难理解,我们遵守一个原则,全部用ollama下载开源本地模型实现,你会发现你 不知道用那一种,然后说这个V4.8.23已经支持AI Proxy接入,然后你打开对应的功能进去,发现和他帮助文档中的截图不一样,很多新人在这一步基本上就不想再往下安装体验了。


这是官网帮助文档中说有应该有四个页签,实际后面两个是没有的。


这是安装后的界面,实际后面两个页签是没有的

建议先按我的简单方法来用:

3.1,使用OneAPI来配置模型:

流程:大致就是打开http://127.0.0.1:3001,进入One API,在渠道中配置本地或在线的大模型,再在令牌中配置一个新令牌,复制令牌的的KEY,再返回到第2步中,更改docker-compose.yml,再用docker重新compose,然后再进入http://127.0.0.1:3000,进入帐号-模型提供商进行配置与测试。

如果你在下面的步骤中迷失了,请返回看上一段说的流程。

3.1.1,开源的本地模型的调用原理可以这样理解:


3.1.2,打开http://127.0.0.1:3001,默认用户名/密码:root/1234,第一次可能会要求更改密码,按要求操作即可。

3.1.3,进入渠道,点创建新的渠道,参照下面的图片进行配置(5

个小步骤):




当右上角出现成功的提示时,表示One API与Ollama中的模型已经配置好了。


如果不成功,一般检查模型中的名称是否与ollama list出来的是否一致,或者是更换代理的地址,如上面图中的第4步,你可以用http://localhost:11434,或http://172.17.0.0.1:11434,或http://127.0.0.1:11434,可能你在网页或别的地方是可以用的,但是测试就是通不过,那是因为网页上能打开ollama的网址实际上docker在调用ollama时并不一致的。总结一句话就是换着你本地IP与上面三个都试试。

3.1.4,因为知识库还要用到 nomic-embed-text:latest 的模型,你按上述步骤再操作一次即可。

3.1.5,进入令牌,按下面5步操作:


令牌的操作步骤


展示操作结果

注意同时选择 nomic-embed-text:latest 模型。

3.1.5,复制令牌:


如我复制后的结果:sk-f3Qp2qEWjFKo6VZh0395Cc650d9b4791A138Be7c3b0993B3


4,重新构建docker并在FastGPT中引入模型。

4.1,更改docker-compose.yml

我们在安装模型的2.2的步骤中,就是下载了docker-compose.yml,现在要把上一步复制的KEY替换该文件中的CHAT_API_KEY=后面。


4.2,运行更新docker的命令。

docker compose down && docker-compose up -d

如果有出错,就是刚才复制的内容不对,复制的KEY应该是sk-开头的。


4.3,重新打开http://127.0.0.1:3000,帐号-模型供应商,模型配置,新增模型,语言模型,填写模型ID(ollama list列出的名称,不能有错,本示例如:deepseek-r1:14b),模型提供商(ollama),别名(建议与模型ID一样),然后点确认。后面的自定义请求地址,自定义请求KEY一定要空白。我在这里折腾了半个晚上。网上的资料都没有说,官网也没有说的,反正让你去慢慢摸。




4.4,fastGPT连接OneAPI模型测试:

按下图所示进行操作。

这里也是有坑的:

A,如果你在OneAPI中测试是通过的(即3.1.3的步骤),那么在这里测试不通过,可以先检查一下模型的名称,确认一下4.3步骤中说的自定义请求地址,自定义请求KEY一定要空白。

B,只要是按我上面的步骤来,配置肯定是没有问题的,可能是电脑网络或性能的问题,把docker的主机和ollama的主机都重启一下,如果有其它程序也是用ollama,可能你连接超时导致的。

4.5,把nomic-embed-text:latest模型按4.3的步骤操作,新增模型时要选择索引模型,其它操作类似。





五,在fastGPT中使用本地知识库。

5.1,新建知识库:知识库 - 新建 - 通用知识库 - 在这里可以配置前面步骤安装好的两个模型。名称可以输入中文,如我的资料。



5.2,导入相关的pdf文件,新建/导入 - 文本数据集 - 本地文件 - 再选择下一步。




5.3,数据处理配置先用默认,再下一步,点开始上传,完成对文档的分析之后,上传文件显示已就绪就表示可以来使用了。

这里会有坑就是一开始我们不要用高级配置,也有可能你的文档是图片内容,他还无法解决,最好的办法就是先用一个简单的表格或文档来测试。

5.4,创建简易应(对话):点工作台 - 新建 - 简易应用 - 填入应用的名称,选择知识库+对话引导。在关联知识库中点选择按钮,可以选择你刚刚添加好的文件,在右边的对话框中就可以问你上传内容的知识了。




5.5,保存并发布。


具体的知识库的调优和测试我就不在此展示了,有兴趣的可以看我dify中的知识库测试例子。

DeepseekR1+ollama+dify1.0.0搭建企业/个人知识库(入门避坑版)



六,安装总结。

6.1,两个安装文件很多网络环境下载不下来;可以用本文中的内容。

6.2,从官网下载下来的docker-compose.yml默认是用官网的镜像,下载非常慢,建议开启阿里云的镜像,在他的文件中有,只是被注释掉了。

6.3,官网帮助文档中说的AIProxy看起来简单,但是目前下载下来的镜像是不支持的,掉到这个坑里就要浪费很多时间。

6.4,OneAPI配置模型时,测试不通过,建议更换以下三个代理试试:http://127.0.0.1:11434 http://172.17.0.1:11434 http://localhost:114343,只要你的ollama是正常运行,而且是可以用本机IP地址访问的,那么以上三个IP肯定能测试通过。

6.5,OneAPI配置模型的令牌,是可以添加多个本地或线上模型的,但是是有限制的,可能超过6个后就无法保存,需要再添加一个令牌,如果再添加一个令牌现在的方式是还不知道如何解决。

6.6,按他的在线帮助文档AIProxy是更简单能配置大模型的,但是目前尝试过是无法配置的。

6.7,因为我们就是要本地化部署,所以模型比较小的情况下,知识库回答的质量是比较差的,但是基本上用了32B或以上的模型后,质量都比较好。

具体dify的功能与fastGPT的功能对比,在此也不展开了,建议有兴趣的先装在本机上体验一下。

最近发表
标签列表