上一篇 下一篇 分享链接 返回 返回顶部

从零部署企业知识库:用 Dify 和 Docker 把公司文档变成智能问答系统

发布人:慈云数据-客服中心 发布时间:20小时前 阅读量:4

ChatGPT 企业知识库搭建|附完整命令

在企业内部,知识往往分散在各种地方:飞书文档、企业微信、PDF 制度文件、产品手册、技术文档、客服 FAQ、销售话术、项目复盘、合同模板等。员工想找到一个准确答案,常常需要翻群消息、问同事、搜网盘,效率很低。

而基于 ChatGPT 搭建企业知识库,可以把企业资料统一整理成可检索、可问答的智能知识系统。员工只需要像聊天一样提问,例如:

“公司报销差旅费需要哪些材料?”
“我们产品 A 和产品 B 的区别是什么?”
“客户问某个功能不支持时,客服应该怎么回复?”
“这个接口的鉴权方式是什么?”

系统就能基于企业内部文档进行回答,并尽量给出引用来源,减少人工查找成本。

本文将介绍一种适合企业落地的知识库搭建方案,并附上完整部署命令。整体方案基于 Dify + Docker + OpenAI / Azure OpenAI / 兼容大模型 API,适合中小团队快速搭建,也适合企业作为知识库原型验证。


一、企业知识库的核心原理

ChatGPT 企业知识库通常不是直接把所有企业文档一次性塞进模型里,而是采用 RAG 技术。

RAG 的全称是:

Retrieval-Augmented Generation,检索增强生成。

它的基本流程如下:

  1. 企业上传文档,例如 PDF、Word、Markdown、网页、FAQ;
  2. 系统将文档切分成多个小片段;
  3. 使用 Embedding 模型把文本片段转换为向量;
  4. 向量存入向量数据库;
  5. 用户提问时,系统先把问题转成向量;
  6. 从向量数据库中检索最相关的文档片段;
  7. 将检索到的内容和用户问题一起交给大模型;
  8. 大模型基于检索内容生成答案。

这样做有几个好处:

  • 不需要重新训练大模型;
  • 企业文档可以持续更新;
  • 成本相对较低;
  • 可以控制知识来源;
  • 支持权限、引用、日志和审计;
  • 回答更贴近企业真实资料。

二、推荐技术方案

本文采用如下方案:

模块 工具
知识库平台 Dify
部署方式 Docker Compose
大语言模型 OpenAI / Azure OpenAI / 兼容 OpenAI API 的模型
向量数据库 Weaviate / 内置服务
数据库 PostgreSQL
缓存 Redis
反向代理 Nginx
HTTPS Certbot / Let’s Encrypt

为什么选择 Dify?

Dify 是一个开源的大模型应用开发平台,支持:

  • 可视化创建聊天机器人;
  • 上传企业知识库;
  • 支持 RAG;
  • 支持 OpenAI、Azure OpenAI、Anthropic、通义千问、智谱、DeepSeek、Ollama 等模型;
  • 支持 API 调用;
  • 支持工作流;
  • 支持团队协作;
  • 支持 Docker 快速部署。

对于企业内部知识库来说,Dify 的门槛比较低,不需要从零开发前端、后端、向量检索和文档解析系统。


三、服务器准备

建议服务器配置如下:

1. 最低配置

项目 配置
CPU 2 核
内存 4 GB
硬盘 40 GB
系统 Ubuntu 22.04 LTS

2. 推荐配置

项目 配置
CPU 4 核及以上
内存 8 GB 及以上
硬盘 100 GB SSD
系统 Ubuntu 22.04 LTS

如果企业文档较多,建议至少准备 8GB 内存。
如果需要本地部署大模型,例如 Qwen、Llama、DeepSeek 等,则需要更高配置,最好配备 GPU。

本文默认使用 Ubuntu 22.04。


四、安装基础环境

先登录服务器。

ssh root@你的服务器IP

更新系统软件包:

apt update && apt upgrade -y

安装常用工具:

apt install -y curl wget git vim unzip htop net-tools ca-certificates gnupg lsb-release

设置服务器时区:

timedatectl set-timezone Asia/Shanghai

查看时间是否正确:

date

五、安装 Docker

如果服务器还没有 Docker,可以使用下面命令安装。

卸载旧版本 Docker:

apt remove -y docker docker-engine docker.io containerd runc

安装依赖:

apt install -y ca-certificates curl gnupg

创建 Docker GPG 目录:

install -m 0755 -d /etc/apt/keyrings

添加 Docker 官方 GPG Key:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
  | gpg --dearmor -o /etc/apt/keyrings/docker.gpg

设置权限:

chmod a+r /etc/apt/keyrings/docker.gpg

添加 Docker 软件源:

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" \
  | tee /etc/apt/sources.list.d/docker.list > /dev/null

更新软件源:

apt update

安装 Docker 和 Docker Compose:

apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

启动 Docker:

systemctl enable docker
systemctl start docker

检查 Docker 版本:

docker version

检查 Docker Compose 版本:

docker compose version

六、部署 Dify 企业知识库平台

进入安装目录:

mkdir -p /opt
cd /opt

拉取 Dify 源码:

git clone https://github.com/langgenius/dify.git

进入 Docker 部署目录:

cd /opt/dify/docker

复制环境变量配置文件:

cp .env.example .env

编辑配置文件:

vim .env

.env 文件中,需要重点关注以下配置。

1. 修改访问域名

如果你暂时没有域名,可以先用服务器 IP。

CONSOLE_WEB_URL=http://你的服务器IP
APP_WEB_URL=http://你的服务器IP
SERVICE_API_URL=http://你的服务器IP

如果你已经准备好域名,例如:

kb.example.com

则可以配置为:

CONSOLE_WEB_URL=https://kb.example.com
APP_WEB_URL=https://kb.example.com
SERVICE_API_URL=https://kb.example.com

2. 设置密钥

为了安全,建议修改密钥字段。可以使用下面命令生成随机密钥:

openssl rand -base64 42

然后在 .env 中修改类似字段,例如:

SECRET_KEY=你生成的随机字符串

3. 配置上传文件大小

企业知识库经常需要上传 PDF、Word、Excel 等文件,可以适当调大上传限制。

UPLOAD_FILE_SIZE_LIMIT=100

表示单个文件最大 100MB。


七、启动 Dify

/opt/dify/docker 目录下执行:

docker compose up -d

查看容器状态:

docker compose ps

正常情况下,你会看到多个服务处于 running 状态,例如:

api
worker
web
db
redis
nginx
weaviate

查看日志:

docker compose logs -f

如果只想查看 API 日志:

docker compose logs -f api

如果只想查看 Web 日志:

docker compose logs -f web

等待几分钟后,访问:

http://你的服务器IP

或者:

https://你的域名

首次访问时,按照页面提示创建管理员账号。


八、配置大模型 API

登录 Dify 后,进入:

设置 -> 模型供应商

根据你的实际情况选择模型。

方案一:使用 OpenAI

如果使用 OpenAI,需要准备:

  • OpenAI API Key;
  • 可访问 OpenAI API 的网络环境。

常见配置:

Provider: OpenAI
API Key: sk-xxxx
Model: gpt-4o-mini / gpt-4.1-mini / gpt-4o
Embedding Model: text-embedding-3-small

推荐组合:

用途 模型
聊天问答 gpt-4o-mini
高质量问答 gpt-4o / gpt-4.1
向量嵌入 text-embedding-3-small
高质量嵌入 text-embedding-3-large

方案二:使用 Azure OpenAI

如果企业已经采购 Azure OpenAI,可以选择 Azure OpenAI,并填写:

API Key
API Base
API Version
Deployment Name

示例:

API Base: https://你的资源名.openai.azure.com
API Version: 2024-02-15-preview
Deployment Name: gpt-4o-mini

方案三:使用兼容 OpenAI API 的模型

很多国产模型平台也支持 OpenAI Compatible API,例如:

  • DeepSeek;
  • 通义千问;
  • 智谱;
  • Moonshot;
  • 火山方舟;
  • 零一万物;
  • 本地 vLLM;
  • One API;
  • LiteLLM。

如果使用兼容 OpenAI API 的服务,通常需要填写:

Base URL
API Key
Model Name

例如 DeepSeek:

Base URL: https://api.deepseek.com
API Key: sk-xxxx
Model: deepseek-chat

九、创建企业知识库

登录 Dify 后,进入:

知识库 -> 创建知识库

建议按照部门或业务场景拆分知识库,例如:

公司制度知识库
产品资料知识库
客服话术知识库
技术文档知识库
销售培训知识库
项目交付知识库

不要把所有资料都混在一个知识库里。
合理拆分可以提高检索准确率,也方便后续权限管理。


十、上传企业文档

Dify 支持多种文档格式,常见包括:

  • PDF;
  • TXT;
  • Markdown;
  • HTML;
  • DOCX;
  • CSV;
  • Excel;
  • 网页内容。

上传文档时,建议注意以下几点:

1. 文档标题要清晰

不建议使用:

新建文档1.pdf
最终版.docx
最终版修改版.docx
销售资料.pdf

建议使用:

2024版员工报销制度.pdf
产品A用户操作手册-v1.3.pdf
客服售后问题处理SOP.docx
销售标准话术-企业客户版.md

2. 文档内容要结构化

知识库并不是魔法。
如果原始文档非常混乱,模型也很难给出稳定答案。

建议文档使用清晰结构:

# 标题

## 一、适用范围

## 二、具体规则

## 三、操作流程

## 四、常见问题

## 五、联系方式

3. 避免过多无意义内容

例如页眉、页脚、重复声明、乱码、目录页、广告图等,都会影响检索质量。

4. 推荐使用 Markdown

对于制度、流程、FAQ、产品说明等内容,Markdown 往往比 PDF 更适合知识库。

示例:

# 差旅报销制度

## 适用范围

本制度适用于公司正式员工因公出差产生的费用报销。

## 报销材料

员工提交差旅报销时,需要提供以下材料:

1. 出差申请单;
2. 发票;
3. 行程单;
4. 付款凭证;
5. 部门负责人审批记录。

## 报销时限

员工应在出差结束后 7 个工作日内提交报销申请。

十一、创建聊天应用

知识库创建完成后,需要创建一个聊天应用。

进入:

工作室 -> 创建应用 -> 聊天助手

应用名称可以设置为:

企业知识库助手

然后在应用配置中添加刚才创建的知识库。

建议系统提示词设置如下:

你是公司的企业知识库助手。请严格基于已提供的知识库内容回答问题。
如果知识库中没有相关信息,请明确说明“根据当前知识库资料,暂未找到相关信息”,不要编造答案。
回答时请尽量使用清晰的条目结构。
如果检索结果包含来源,请在答案末尾列出参考来源。

这个提示词很重要,它可以降低模型胡编乱造的概率。


十二、推荐的知识库参数

不同平台版本界面略有差异,但一般会有以下参数。

1. Top K

表示每次从知识库中取多少个相关片段。

推荐值:

3 - 8

如果文档内容较短,可以设置为 3。
如果业务复杂,可以设置为 5 或 8。

2. 相似度阈值

表示检索结果与问题的相关程度。

推荐值:

0.4 - 0.7

如果阈值太低,可能引入无关内容。
如果阈值太高,可能检索不到内容。

3. 分段长度

推荐:

500 - 1000 tokens

制度类、FAQ 类文档可以分段短一点。
技术文档、产品手册可以适当长一点。

4. 是否开启引用来源

建议开启。

企业知识库不是普通聊天机器人,答案最好可以追溯来源。
这样员工可以知道答案来自哪份制度、哪份手册、哪份 SOP。


十三、通过 API 调用企业知识库

Dify 支持 API 调用。你可以把企业知识库集成到:

  • 企业微信机器人;
  • 飞书机器人;
  • 钉钉机器人;
  • 内部 OA;
  • CRM;
  • 工单系统;
  • 官网客服;
  • 浏览器插件;
  • 内部管理后台。

在 Dify 应用中获取 API Key 后,可以使用下面命令测试。

1. 阻塞式调用

curl -X POST 'http://你的服务器IP/v1/chat-messages' \
  -H 'Authorization: Bearer app-你的APIKey' \
  -H 'Content-Type: application/json' \
  -d '{
    "inputs": {},
    "query": "员工差旅报销需要提交哪些材料?",
    "response_mode": "blocking",
    "conversation_id": "",
    "user": "employee-001"
  }'

如果使用 HTTPS 域名:

curl -X POST 'https://kb.example.com/v1/chat-messages' \
  -H 'Authorization: Bearer app-你的APIKey' \
  -H 'Content-Type: application/json' \
  -d '{
    "inputs": {},
    "query": "产品A支持哪些支付方式?",
    "response_mode": "blocking",
    "conversation_id": "",
    "user": "employee-001"
  }'

2. 流式调用

流式调用适合聊天窗口,可以边生成边展示。

curl -X POST 'https://kb.example.com/v1/chat-messages' \
  -H 'Authorization: Bearer app-你的APIKey' \
  -H 'Content-Type: application/json' \
  -d '{
    "inputs": {},
    "query": "请总结客服处理退款问题的标准流程",
    "response_mode": "streaming",
    "conversation_id": "",
    "user": "employee-001"
  }'

十四、配置 Nginx 和 HTTPS

如果你已经在 Dify Docker 中使用自带 Nginx,可以先通过 HTTP 访问。
但企业正式使用时,建议配置 HTTPS。

假设你的域名是:

kb.example.com

并且已经将域名 A 记录解析到服务器 IP。

安装 Nginx:

apt install -y nginx

安装 Certbot:

apt install -y certbot python3-certbot-nginx

创建 Nginx 配置:

vim /etc/nginx/sites-available/kb.example.com

写入以下内容:

server {
    listen 80;
    server_name kb.example.com;

    client_max_body_size 100M;

    location / {
        proxy_pass http://127.0.0.1:80;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_read_timeout 300;
        proxy_connect_timeout 300;
        proxy_send_timeout 300;
    }
}

启用站点:

ln -s /etc/nginx/sites-available/kb.example.com /etc/nginx/sites-enabled/

检查配置:

nginx -t

重启 Nginx:

systemctl restart nginx

申请 HTTPS 证书:

certbot --nginx -d kb.example.com

查看证书自动续期:

certbot renew --dry-run

注意:如果 Dify 自带的 Docker Nginx 已经占用了服务器 80 端口,则外部 Nginx 可能无法启动。实际部署时可以选择一种方式:

  1. 使用 Dify 自带 Nginx;
  2. 修改 Dify Docker 端口,例如映射到 8080;
  3. 再由宿主机 Nginx 反向代理到 8080。

如果需要修改 Dify 的端口,可以编辑:

cd /opt/dify/docker
vim docker-compose.yaml

找到 Nginx 服务端口映射,例如:

ports:
  - "80:80"
  - "443:443"

改成:

ports:
  - "8080:80"

然后重启:

docker compose down
docker compose up -d

此时宿主机 Nginx 的 proxy_pass 应该改为:

proxy_pass http://127.0.0.1:8080;

十五、数据备份与恢复

企业知识库一定要做备份。
至少需要备份:

  • PostgreSQL 数据;
  • 上传文件;
  • 向量数据库数据;
  • .env 配置文件;
  • docker-compose 配置。

进入部署目录:

cd /opt/dify/docker

查看容器名称:

docker compose ps

1. 备份 PostgreSQL

创建备份目录:

mkdir -p /opt/backup/dify

执行数据库备份:

docker compose exec db pg_dump -U postgres dify > /opt/backup/dify/dify_db_$(date +%F).sql

如果数据库用户名或库名不同,请以 .env 配置为准。

2. 备份 Dify 配置

cp /opt/dify/docker/.env /opt/backup/dify/.env_$(date +%F)
cp /opt/dify/docker/docker-compose.yaml /opt/backup/dify/docker-compose_$(date +%F).yaml

3. 备份 Docker Volume

查看 volume:

docker volume ls

可以用 tar 备份指定 volume,例如:

docker run --rm \
  -v docker_app_storage:/data \
  -v /opt/backup/dify:/backup \
  alpine \
  tar czf /backup/app_storage_$(date +%F).tar.gz -C /data .

实际 volume 名称可能不同,可以通过以下命令确认:

docker volume ls | grep dify

4. 定时备份

编辑定时任务:

crontab -e

添加每天凌晨 2 点备份:

0 2 * * * cd /opt/dify/docker && docker compose exec -T db pg_dump -U postgres dify > /opt/backup/dify/dify_db_$(date +\%F).sql

十六、系统升级命令

Dify 会持续更新。升级前一定要先备份。

进入目录:

cd /opt/dify

拉取最新代码:

git pull

进入 Docker 目录:

cd /opt/dify/docker

拉取最新镜像:

docker compose pull

重启服务:

docker compose down
docker compose up -d

查看状态:

docker compose ps

查看日志:

docker compose logs -f

十七、常见问题排查

1. 容器没有启动

查看容器状态:

docker compose ps

查看日志:

docker compose logs -f

如果某个服务异常,例如 api:

docker compose logs -f api

2. 端口被占用

查看 80 端口占用:

lsof -i:80

或:

netstat -tunlp | grep :80

如果是 Nginx 占用,可以停止:

systemctl stop nginx

如果是其他容器占用:

docker ps

停止指定容器:

docker stop 容器ID

3. 上传文件失败

检查上传大小限制:

cd /opt/dify/docker
vim .env

确认:

UPLOAD_FILE_SIZE_LIMIT=100

然后重启:

docker compose down
docker compose up -d

同时也要检查 Nginx 配置:

client_max_body_size 100M;

4. 知识库回答不准确

可以从以下几个方向优化:

  • 原始文档是否清晰;
  • 文档是否有重复内容;
  • 分段是否过大或过小;
  • Top K 是否合适;
  • 相似度阈值是否过高;
  • 提示词是否要求“基于知识库回答”;
  • 是否开启了引用来源;
  • 问题是否过于模糊;
  • 是否需要拆分多个知识库。

5. 模型调用失败

检查模型 API Key 是否正确。
也可以在服务器上测试网络:

curl https://api.openai.com/v1/models \
  -H "Authorization: Bearer 你的OpenAI_API_Key"

如果使用兼容 API,例如 DeepSeek:

curl https://api.deepseek.com/v1/models \
  -H "Authorization: Bearer 你的APIKey"

十八、企业落地建议

搭建完成只是第一步,真正决定知识库效果的是后续运营。

1. 建立知识负责人制度

每个部门指定知识负责人,例如:

部门 负责人职责
人事 维护制度、考勤、福利、报销文档
产品 维护产品介绍、功能说明、版本更新
技术 维护接口文档、部署文档、故障处理手册
客服 维护 FAQ、售后 SOP、投诉处理流程
销售 维护销售话术、竞品对比、报价规则

2. 定期清理旧文档

知识库中最危险的问题不是“没有答案”,而是“拿旧答案当新答案”。

建议:

  • 每月检查高频文档;
  • 每季度清理过期资料;
  • 文档标题标注版本号;
  • 废弃文档及时下线;
  • 重要制度保留发布日期和生效日期。

3. 建立反馈机制

员工使用知识库时,应该能够反馈:

  • 答案不准确;
  • 答案过期;
  • 没有找到答案;
  • 来源文档错误;
  • 需要补充知识。

这些反馈可以帮助知识库持续优化。

4. 控制敏感数据

不要随意上传以下内容:

  • 客户隐私;
  • 员工身份证信息;
  • 银行账号;
  • 合同敏感条款;
  • 未公开财务数据;
  • 源代码密钥;
  • API Token;
  • 数据库密码。

如果确实需要上传,应做好权限隔离和脱敏处理。


十九、适合接入的企业场景

ChatGPT 企业知识库可以优先落地以下场景:

1. HR 助手

可回答:

  • 入职流程;
  • 转正流程;
  • 请假规则;
  • 报销制度;
  • 社保公积金;
  • 公司福利;
  • 绩效考核。

2. 客服助手

可回答:

  • 产品常见问题;
  • 退款规则;
  • 投诉处理流程;
  • 售后话术;
  • 故障排查步骤;
  • 客户升级策略。

3. 销售助手

可回答:

  • 产品卖点;
  • 竞品对比;
  • 报价规则;
  • 客户异议处理;
  • 行业案例;
  • 标准销售话术。

4. 技术助手

可回答:

  • API 文档;
  • 部署流程;
  • 数据库规范;
  • 故障排查;
  • 代码规范;
  • 运维 SOP。

5. 管理助手

可回答:

  • 公司制度;
  • 审批流程;
  • 项目管理规范;
  • 会议纪要;
  • 战略资料;
  • 经营分析口径。

二十、总结

通过 Dify、Docker 和大模型 API,我们可以较快搭建一套 ChatGPT 企业知识库系统。它不需要重新训练大模型,而是通过 RAG 技术,把企业文档转换成可检索、可问答的知识系统。

完整流程包括:

  1. 准备服务器;
  2. 安装 Docker;
  3. 部署 Dify;
  4. 配置模型 API;
  5. 创建知识库;
  6. 上传企业文档;
  7. 创建聊天助手;
  8. 配置检索参数;
  9. 接入企业内部系统;
  10. 做好备份、安全和持续运营。

需要注意的是,企业知识库不是一次性项目,而是持续运营项目。
模型能力决定回答上限,文档质量决定回答下限,知识运营决定长期价值。

如果企业希望快速验证 AI 知识库价值,可以先选择一个小范围场景,例如 HR 制度问答或客服 FAQ,整理 20 到 50 份高质量文档,搭建一个 MVP 版本。等效果稳定后,再逐步扩展到产品、销售、技术、交付、管理等更多业务场景。

只要文档质量足够好,权限控制足够清晰,反馈机制足够完善,ChatGPT 企业知识库就能成为企业内部非常实用的 AI 助手。

目录结构
全文