前置条件
- 1已注册腾讯云账号
- 2已购买一台轻量应用服务器(建议 4C8G 起步)
- 3服务器已安装 Docker 与 docker compose 插件
读完想动手?新用户首单 8 折上云
服务器 + 大模型 API + 对象存储,新用户首购享 20% 补贴
FastGPT 腾讯云私有化部署完整指南
本教程将详细介绍如何在 腾讯云轻量应用服务器上,用 Docker Compose 一键部署国产开源 RAG 知识库平台 FastGPT,从云服务器选型、模型网关 OneAPI 聚合国产模型、知识库分段与召回的参数化精调,到 Nginx HTTPS、备份与故障排查,全程实测,跟着做即可搭建一套数据不出内网的私有 AI 问答助手。
前置准备
在开始之前,请确保你已经完成以下准备工作:
- 已注册腾讯云账号
- 已购买一台轻量应用服务器(建议 4C8G 起步)
- 服务器已安装 Docker 与 docker compose 插件
为什么选 FastGPT
在写具体步骤之前,先回答:为什么不用现成的 SaaS 知识库,而非要自己搭?
一句话定位
信息
FastGPT = 国产开源 RAG 知识库 + 可视化工作流编排 + 支持多家国产大模型 + 数据完全留在自己服务器。
它不是单纯的聊天界面(那用 Open WebUI 就够了),而是能把公司文档变成可问答、可溯源、可嵌入工作流的 AI 应用平台 —— 上传文档、调召回参数、就能产出一个给同事用的私有助手。
同类方案对比
| 平台 | 开源协议 | 知识库 RAG 深度 | 工作流编排 | 中文体验 | 部署难度 |
|---|---|---|---|---|---|
| FastGPT | Apache 2.0 | ⭐ 极深(分段/召回/溯源精调) | ✅ 支持 | ⭐ 优秀 | 中等 |
| Dify | Apache 2.0 | 深 | ⭐ 极强(生态丰富) | 优秀 | 中等 |
| MaxKB | GPL v3 | 深 | 一般 | 优秀 | 低 |
| QAnything | Apache 2.0 | 深(有道文档强项) | ❌ 无 | 优秀 | 低 |
| AnythingLLM | MIT | 一般 | ❌ 无 | 一般 | ⭐ 极低 |
关键事实:
- Apache 2.0 协议(以官方仓库 LICENSE 为准),商用无需授权费、无分成,这是企业落地的前提
- 国产全中文项目,界面、文档、报错都看得懂,排障不用猜
- 提供召回质检与引用溯源:答案来自哪一段文档、相似度多少都看得见,避免张口就来
- 支持微信公众号、飞书、企业微信、钉钉等渠道接入(通过 LinkAI 或自写插件)
什么时候该选 FastGPT
✅ 适合:知识库 / 内部文档问答 / 客服助手 / 想把 AI 嵌入现有工作流(工单、报销、HR 问答)/ 数据敏感必须不出服务器 / 用国产模型为主
❌ 不适合:只是偶尔问两句(用 DeepSeek App 官网更省事)/ 完全不想碰服务器(用 SaaS 版)/ 只需要给 VS Code 补全代码(那是 Ollama + Continue 的场景)
云服务器选型
知识库平台的瓶颈主要在数据库与解析服务,不在 GPU(因为我们已经把模型算力求助于云端 API)。
前往 腾讯云轻量应用服务器 选购页按表对照:
| 配置 | 内存余量能否扛住全套栈 | 3 人并发是否流畅 | 文档体量上限 | 适用场景 |
|---|---|---|---|---|
| 4C8G | ✅ 够用 | ✅ 流畅 | 数百篇文档 / 数万条 chunk | 起步推荐,小团队内部知识库 |
| 8C16G | ⭐ 宽裕 | ✅ 流畅 | 数千篇文档 / 数十万条 chunk | 生产推荐,正式对外或部门级 |
| 16C32G | 非常富裕 | ✅ | 海量知识库 + 高并发 | 企业级、需要与业务系统对接 |
磁盘:
| 项目 | 占用估算 | 说明 |
|---|---|---|
| PostgreSQL + pgvector | 每 1 万条 chunk 约占 100MB 到 300MB | 向量维度越高越大 |
| MongoDB | 数百 MB 到数 GB | 存应用配置、对话、日志 |
| 原始文档附件 | 按实际大小 | 建议单独挂数据盘,或定期清理 |
提示
💡 务实建议:先用 4C8G 把整套跑通、把文档喂进去验证效果。真正跑出价值后再升配,腾讯云轻量支持平滑升配,不用重装。
为什么中间要加一层 OneAPI(模型网关)
FastGPT 需要两类模型:
| 类型 | 用途 | 推荐国产方案 |
|---|---|---|
| 对话 / Chat 模型 | 生成回答 | DeepSeek V4.1 Flash(便宜)、Qwen3-Max(强推理) |
| Embedding 向量模型 | 把文档切片转成向量做检索 | 阿里云百炼 text-embedding-v3(国产、便宜、1536 维) |
把这两类、可能还不止一家厂家的模型,统一交给 OneAPI 聚合成一个 OpenAI 兼容地址 + 一个令牌,FastGPT 只认这一个入口。好处是:
- 换模型不动 FastGPT:在 OneAPI 后台改渠道映射即可
- 统一限流与额度:给不同应用分配不同令牌,防止某个测试应用刷爆额度
- 集中看账:所有调用消耗在 OneAPI 一处可见
- 故障切换:某家挂了,在网关层切到备用渠道(如 Qwen)而不是改所有应用
警告
⚠️ 如果你只打算用一家、一个模型,也可以在 FastGPT 里直接填 API Key,跳过 OneAPI。本教程给出网关方案是因为现实中几乎一定会用到多家。
环境准备
1. 安装 Docker(走腾讯云内网源)
腾讯云服务器务必用内网镜像源,比 Docker 官方源快一个数量级:
1# 安装依赖
2apt-get update
3apt-get install -y ca-certificates curl gnupg lsb-release
4
5# 添加腾讯云内网 Docker GPG key
6curl -fsSL https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu/gpg -o docker-keyring.gpg
7gpg --dearmor -o /etc/apt/keyrings/docker.gpg docker-keyring.gpg
8
9# 添加腾讯云内网 Docker 软件源
10echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
11
12# 安装 Docker Engine 与 compose 插件
13apt-get update
14apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
15
16# 配置 Docker Hub 镜像加速器(关键!否则拉 PostgreSQL/Mongo 镜像会慢到超时)
17mkdir -p /etc/docker
18tee /etc/docker/daemon.json <<-'EOF'
19{
20 "registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
21}
22EOF
23systemctl daemon-reload
24systemctl restart docker
25
26# 把当前用户加入 docker 组,免去每次 sudo
27usermod -aG docker $USER警告
⚠️ 修改用户组后必须退出 SSH 重新登录才能生效,否则后续 docker 命令依然报权限不足。
2. 安装 Swap(小内存机型必做)
4C8G 及以下的机器强烈建议加 swap,否则加载或重建向量索引时大概率 OOM:
1# 创建 4GB swap 文件
2fallocate -l 4G /swapfile
3chmod 600 /swapfile
4mkswap /swapfile
5swapon /swapfile
6
7# 写入 fstab 保证重启后依然生效
8echo "/swapfile none swap sw 0 0" | tee -a /etc/fstab
9
10# 验证生效
11free -h3. 开放端口范围检查
腾讯云轻量应用服务器有两层防火墙:控制台的安全组 + 系统内的 ufw/iptables。请先在控制台放行 80、443、3000(3000 是 FastGPT 默认 Web 端口);生产环境建议只放 80/443,3000 仅内网访问。
路径 A:Docker Compose 一键部署(推荐)
A1. 编写 compose 文件
创建部署目录并写入 compose:
1mkdir -p /opt/fastgpt/api/fastgpt && cd /opt/fastgpt/api/fastgpt
2
3cat > config.json <<-'EOF'
4{
5 "feConfigs": {
6 "lafEnv": "https://laf.dev"
7 },
8 "systemEnv": {
9 "openapiPrefix": "fastgpt",
10 "vectorMaxProcess": 15,
11 "qaMaxProcess": 15,
12 "pgHNSWEfSearch": 100
13 },
14 "llmModels": [],
15 "vectorModels": []
16}
17EOF警告
⚠️ openapiPrefix 千万别改错或留空,改成别的会导致接口全部 404。用 fastgpt 即可。
1cd /opt/fastgpt
2
3cat > docker-compose.yml <<-'EOF'
4version: '3.3'
5
6services:
7 pg:
8 image: pgvector/pgvector:pg16
9 container_name: postgres
10 restart: always
11 ports:
12 - 5432:5432
13 networks:
14 - fastgpt
15 environment:
16 - POSTGRES_USER=username
17 - POSTGRES_PASSWORD=password
18 - POSTGRES_DB=postgres
19 volumes:
20 - ./pg/data:/var/lib/postgresql/data
21 healthcheck:
22 test: ["CMD", "pg_isready", "-U", "username", "-d", "postgres"]
23 interval: 10s
24 timeout: 5s
25 retries: 5
26
27 mongo:
28 image: mongo:5.0.18
29 container_name: mongo
30 restart: always
31 ports:
32 - 27017:27017
33 networks:
34 - fastgpt
35 environment:
36 - MONGO_INITDB_ROOT_USERNAME=username
37 - MONGO_INITDB_ROOT_PASSWORD=password
38 volumes:
39 - ./mongo/data:/data/db
40
41 one-api:
42 image: justsong/one-api
43 container_name: one-api
44 restart: always
45 ports:
46 - 3001:3000
47 networks:
48 - fastgpt
49 environment:
50 - TZ=Asia/Shanghai
51 volumes:
52 - ./one-api/data:/data
53
54 fastgpt:
55 container_name: fastgpt
56 image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:latest
57 ports:
58 - 3000:3000
59 networks:
60 - fastgpt
61 depends_on:
62 pg:
63 condition: service_healthy
64 mongo:
65 condition: service_started
66 restart: always
67 environment:
68 - DEFAULT_ROOT_PSW=1234
69 - OPENAI_BASE_URL=http://one-api:3000/v1
70 - CHAT_API_KEY=sk-fastgpt
71 - DB_MAX_LINK=30
72 - TOKEN_KEY=anyrandomtoken key
73 - ROOT_KEY=root_key
74 - FILE_TOKEN_KEY=filetokenkey
75 volumes:
76 - ./datasets:/data
77 - ./fastgpt/config.json:/app/data/config.json
78
79networks:
80 fastgpt:
81EOF警告
⚠️ 几个易错点必须改:
DEFAULT_ROOT_PSW=1234是 root 初始密码,部署后第一件事就是改,否则任何人都能用 root/1234 登进你的知识库CHAT_API_KEY=sk-fastgpt必须与你在 OneAPI 里生成的令牌完全一致(见 A3)OPENAI_BASE_URL=http://one-api:3000/v1中one-api是容器服务名,别写成 localhost,否则 FastGPT 容器内连不到网关TOKEN_KEY/ROOT_KEY/FILE_TOKEN_KEY请用随机字符串(可用openssl rand -base64 24生成),不要照抄上面的
提示
💡 为什么 pg 要配 healthcheck + condition: service_healthy:PostgreSQL 首次启动会初始化数据目录,要几十秒才真正可用。不加健康检查,FastGPT 会在 pg 还没 ready 时就连接,报「数据库连接失败」然后崩溃退出。这是新手最常见的第一次启动失败原因。
A2. 启动全部服务
1cd /opt/fastgpt
2docker compose up -d
3
4# 观察各容器状态,四个都 Up 才算成功
5docker compose ps
6
7# 跟踪 FastGPT 启动日志(第一次会跑数据库迁移,约 1 到 2 分钟)
8docker compose logs -f fastgpt看到日志出现「migrate」「success」「listen on port 3000」之类字样即启动完成。
A3. 在 OneAPI 里配置国产模型渠道
浏览器访问 http://<你的公网IP>:3001,默认账号 root 密码 123456(登录后立即修改)。
第一步:添加对话模型渠道
- 顶部切换到「渠道」标签
- 点击「添加新的渠道」
- 类型选择 DeepSeek(OneAPI 已内置国产/国际主流厂商适配)
- 名称填
DeepSeek-V4.1-Flash - 模型填
deepseek-v4.1-flash - 密钥填你在 DeepSeek 开放平台申请的 API Key
- 代理留空,保存
同样方法再加一个 阿里云 DashScope / 通义千问 渠道作为备用轮训(模型填 qwen-plus),上下文来回场景更强。
第二步:添加 Embedding 向量模型渠道
- 再添加一个渠道,类型选 阿里云百炼 / 通义
- 名称填
text-embedding-v3 - 模型填
text-embedding-v3 - 密钥填阿里云百炼 DashScope 的 API Key
警告
⚠️ Embedding 模型只能用固定的一种:知识库一旦用了某个 embedding 模型建立索引,后续不能更换。更换向量模型必须删除知识库重建索引,这会丢失原有对话记录关联。所以一开始就要选好,推荐稳定便宜的 text-embedding-v3。
第三步:生成给 FastGPT 用的令牌
- 顶部切换到「令牌」标签
- 点击「添加新的令牌」
- 名称填
fastgpt - 模型范围选「无限制」或勾选刚才添加的那些模型
- 保存后复制生成的令牌,它就是compose 里的
CHAT_API_KEY
A4. 在 FastGPT 里纳管模型
访问 http://<你的公网IP>:3000,用 root + 你设的密码登录。进入「账号 → 模型配置」:
| 配置项 | 填写值 | 说明 |
|---|---|---|
| 语言模型 / Base URL | http://one-api:3000/v1 | 与 compose 里一致,走容器内网 |
| 语言模型 / 密钥 | sk-fastgpt | OneAPI 生成的令牌 |
| 索引模型(Embedding) | text-embedding-v3 | 与 OneAPI 渠道名一致 |
保存后新建应用测试一次对话,能正常流式回复即打通。
路径 B:手动安装配置(深入定制)
想自己控制端口、走外网 URL、或服务器不方便用 Docker 时,走这条路径。
B1. 单独部署 PostgreSQL(含 pgvector 扩展)
1apt-get install -y postgresql postgresql-contrib
2
3# 安装 pgvector 向量扩展
4cd /tmp && git clone --branch v0.7.0 https://github.com/pgvector/pgvector.git
5cd pgvector && make && make install
6
7# 进 psql 启用扩展
8su postgres -c "psql -c 'CREATE EXTENSION vector;'"警告
⚠️ pgvector 需要 PostgreSQL 11 以上版本。腾讯云 Ubuntu 22.04 自带的是 PG 14/15,满足条件。
B2. 手动跑 FastGPT 源码
1git clone https://github.com/labring/FastGPT.git
2cd FastGPT/api/fastgpt
3
4python3 -m venv .venv && source .venv/bin/activate
5
6# 使用腾讯云内网 PyPI 源加速
7pip config set global.index-url https://mirrors.cloud.tencent.com/pypi/simple
8pip install -r requirements.txt
9
10deactivate && pnpm install
11pnpm dev警告
⚠️ 源码方式需 Node 18+ 与 pnpm,排障成本远高于 Docker,仅建议给要做二次开发的人。生产部署请用路径 A。
建第一个知识库(核心环节)
服务跑通不等于能用,知识库的召回质量才是关键。
第一步:提交待 XX 步参数
FastGPT 会把文档切分成 chunk 后再向量化。参数决定了检索精度:
| 参数 | 作用 | 推荐值(实测命中率较高) | 说明 |
|---|---|---|---|
| 分块 / 分句 | 切分文本的粒度 | 每块 500 到 2000 字 | 太大会模糊相关度,太小则丢失上下文 |
| 训练模式 | 自动 QA / 直接分段 | 「直接分段」 | 新手先用直接分段,后期再转自动 QA |
| 最大分段长度 | 每段最大 token | 设 500 到 1500 | 文档较长时先用 1000 |
| 分段重叠长度 | 相邻段重叠的 token 数 | 设 100 到 200 token | 减少语义在切分处被截断 |
| 最小相似度分数 | 检索最小相似度阈值 | 设 0.3 | 低于此值不返回任何片段会导致无命中;太高会答非所问 |
| 最大引用 tokens | 返回给模型的最大上下文 | 设 3000 到 5000 | 太大浪费 token,太小上下文不全 |
| 引用相似度百分比 | 溯源显示的相似度 | 勾选显示 | 让用户知道答案来源可信度 |
提示
💡 实测经验:最小相似度 0.3 是通用起点。如果知识库检索经常「答非所问」,大概率是阈值太低拉进了无用片段;如果经常「没有相关内容」,则是阈值太高或分段太长。先用 0.3,再通过「搜索测试」微调。
第二步:上传并索引文档
FastGPT 支持 PDF、DOCX、Markdown、TXT、CSV、HTML 与网页 URL。上传后在左侧「知识库 → 详情」看数据处理状态:
| 状态 | 含义 | 后续动作 |
|---|---|---|
| ⬜ 待处理 | 排队中 | 等待,或检查 vectorMaxProcess 是否太低 |
| 🟡 解析中 | 还在读文件 | 大 PDF 慢是正常的 |
| 🟢 已就绪 | ✅ 可检索 | 可以发起问答了 |
| 🔴 失败 | 解析报错 | 大概率是加密 PDF 或格式损坏,转换后重传 |
第三步:搜索测试(必做)
在知识库详情页有「搜索测试」入口,输入一个你确定文档里有的关键词:
- 能召回到相关片段 → ✅ 配置正确
- 召回不到 → 检查最小相似度是否过高、分段是否过长
- 召回不相关 → 调低最小相似度、或换更好的 embedding 模型
这一步必须做,因为对话显示404 正常不代表检索正确,只有测试通过才能证明知识库真的能用。
验证配置自检
部署完跑下面四项验收:
1. 服务健康
1# 四个容器状态应全是 healthy / Up
2docker compose ps
3
4# FastGPT 端口返回 200
5curl -o /dev/null -s -w "%{http_code}" http://127.0.0.1:30002. 数据库连接
1# PostgreSQL 内是否已建立文档向量表
2docker exec postgres psql -U username -d postgres -c "\dt"3. 模型通道
在 FastGPT 里新建一个应用,选刚才配的模型,发一句「你好」,能收到流式回复即通过。
4. 知识库检索
用「搜索测试」验证至少一个文档片段能召回。
场景化实操
场景 1:企业内部产品手册问答助手
痛点:产品文档几百页,新人问啥都要 @ 老同事,重复劳动。
做法:
- 把 Confluence / 语雀导出的 Markdown 打包,或用网页 URL 批量导入
- 知识库参数按推荐表设置,重点调好最小相似度
- 在应用编排里写清楚 system prompt:限定「只根据知识库回答」「没有依据就说不知道」
- 发布为链接,分享给部门
效果:常见问题自助解决率通常能到 60% 到 80%,剩下的再转人工。
场景 2:客服工单助手(半自动)
痛点:客服要在多个系统里翻历史工单找答案。
做法:
- 把历史工单导出 CSV 批量导入
- 应用编排选择「工具调用」模式,先检索知识库,命中才回答
- 未命中时自动回复「已转人工」,避免 AI 瞎编
注意:客服场景必须开启引用溯源,让用户看到依据,也方便质检。
场景 3:配合微信机器人联动
知识库跑通后,把它作为「大脑」接到机器人上(见教程 DeepSeek 接入微信完整指南),同事在群里 @ 机器人就能查制度、查文档。
提示
💡 这也点出了私有化部署真正的价值:一旦同事习惯在群里 @ 机器人查制度,「7x24 常驻」就成了刚需 —— 而这正是一台云服务器最擅长的场景。
高级配置
1. Nginx 反向代理 + HTTPS(生产必做)
不要把 3000 端口直接暴露公网:
1apt-get install -y nginx certbot python3-certbot-nginx
2
3cat > /etc/nginx/sites-available/fastgpt <<-'EOF'
4server {
5 listen 80;
6 server_name kb.yourcompany.com;
7
8 location / {
9 proxy_pass http://127.0.0.1:3000;
10 proxy_set_header Host $host;
11 proxy_set_header X-Real-IP $remote_addr;
12 proxy_http_version 1.1;
13 proxy_set_header Upgrade $http_upgrade;
14 proxy_set_header Connection "upgrade";
15 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
16 proxy_set_header X-Forwarded-Proto $scheme;
17 # 上传大文档需要
18 client_max_body_size 100m;
19 }
20}
21EOF
22
23ln -s /etc/nginx/sites-available/fastgpt /etc/nginx/sites-enabled/
24nginx -t && systemctl reload nginx
25
26# 签发免费证书
27certbot --nginx -d kb.yourcompany.com2. 安全加固(务必做)
⚠️ 三条铁律:
| 风险 | 后果 | 做法 |
|---|---|---|
| 3000 端口裸奔公网 | 任何人都能访问你的知识库 | 只放 80/443,或限制 IP |
| 默认密码 root/1234 | 后台被他人登录 | 部署后立即改 DEFAULT_ROOT_PSW |
| OneAPI 令牌泄露 | API 额度被盗刷 | 令牌只给必要范围,不用就删 |
1# 生产环境:把 3000 只监听内网
2docker compose down
3# 修改 compose 中 ports 为:
4# - "127.0.0.1:3000:3000"
5docker compose up -d3. 数据备份与恢复
知识库一旦重建成本高(要重新向量化),务必定期备份:
1## PostgreSQL(含向量数据)
2docker exec postgres pg_dump -U username postgres > /backup/pg_$(date +%F).sql
3
4## MongoDB(应用配置、对话记录)
5docker exec mongo mongodump --username username --password password --archive=/backup/mongo_$(date +%F).archive
6
7## 原始附件目录
8tar czf /backup/datasets_$(date +%F).tar.gz /opt/fastgpt/datasets
9
10## 同步到腾讯云 COS(内网免流量)
11# coscli cp /backup/pg_*.sql cos://your-bucket/backups/警告
⚠️ pg_dump 出的 .sql 里包含向量类型,恢复时目标库必须已安装 pgvector 扩展,否则恢复会报类型不存在。
4. 成本估算(不含服务器)
| 项目 | 单价 | 估算 |
|---|---|---|
Embedding text-embedding-v3 | 约 0.0005 元 / 千 tokens | 建一次 1000 页文档约几元 |
| DeepSeek V4.1 Flash | 输入 0.8 元 / 百万 tokens | 日常问答几乎可忽略 |
| Qwen3-Max(强推理) | 较高,需看百炼实时计价 | 建议设为「复杂问题」备用模型 |
提示
💡 省钱技巧:把默认模型设为便宜的 DeepSeek V4.1 Flash,只在用户明确说「深度分析」时才切到 Qwen3-Max。OneAPI 的模型路由让你能轻松做这种分流。
故障排查表
| # | 症状 | 可能原因 | 解决方案 |
|---|---|---|---|
| 1 | docker: command not found | Docker 未安装成功 | 重跑腾讯云内网源安装步骤;确认 apt-get install docker-ce 执行完成 |
| 2 | permission denied while trying to connect to docker socket | 当前用户不在 docker 组 | usermod -aG docker $USER 后必须重新登录 SSH |
| 3 | 拉取 postgres/mongo 镜像超时 / 极慢 | 没配 registry-mirror | 按本文「环境准备」配置 mirror.ccs.tencentyun.com 后 systemctl restart docker |
| 4 | FastGPT 容器反复重启 | pg 未 ready 就连 | compose 里确认 pg 有 healthcheck,fastgpt 用 condition: service_healthy |
| 5 | CREATE EXTENSION vector 报错 | 镜像缺 pgvector | 用 pgvector/pgvector:pg16 镜像,不要用纯 postgres |
| 6 | 首次登录说密码错误 | root 密码没改成功 | 检查 compose 里 DEFAULT_ROOT_PSW 是否被 yaml 特殊字符截断,给密码加引号 |
| 7 | FastGPT 界面报「模型未响应」 | OneAPI 地址或令牌不对 | OPENAI_BASE_URL 必须是 http://one-api:3000/v1;令牌与 OneAPI 生成的完全一致 |
| 8 | OneAPI 渠道测试失败 | API Key 无效或模型名错 | 到厂商控制台确认 Key 有效未过期;模型名与厂商文档对齐(如 deepseek-v4.1-flash) |
| 9 | 对话报 404 model not found | 渠道模型名 ≠ 请求模型名 | OneAPI 渠道的「模型」字段必须包含应用里选择的那个模型名 |
| 10 | Embedding 报 dimension mismatch | 换了 embedding 模型没重建索引 | 不能换索引模型;必须删除知识库重建,或用回原来的模型 |
| 11 | 搜索测试无结果 | 最小相似度过高 / 分段太长 | 先把最小相似度降到 0.2 试试;分段长度调到 800 到 1200 |
| 12 | 答非所问 | 相似度太低拉进垃圾片段 | 提高最小相似度到 0.4 左右;开启 rerank 重排序 |
| 13 | 文档一直是「解析中」 | 加密 PDF / 损坏文件 | 先本地转一次再看;或用 vectorMaxProcess 提高并发 |
| 14 | 上传大文件失败 | Nginx 限制 | client_max_body_size 调到 100m 以上 |
| 15 | 公网访问不了 3000 | 腾讯云两层防火墙 | 控制台安全组 + 系统 ufw 都要放行;生产建议只开 80/443 |
| 16 | MongoDB 认证失败 | 密码含特殊字符未 URL 编码 | 连接串里把 @ # 等字符转义,或改用简单密码 |
| 17 | 磁盘很快占满 | mongo 日志 / 附件堆积 | 定期归档;把 /opt/fastgpt/datasets 挂到数据盘;配 logrotate |
| 18 | 重启服务器后服务没起来 | 未设开机自启 | compose 里 restart: always;并 systemctl enable docker 保证 docker 先起来 |
| 19 | 召回忽高忽低 | pgHNSWEfSearch 太低 | 提高到 100 或更高(牺牲一点性能换召回率) |
| 20 | 想换 embedding 模型 | 已经建了索引 | 必须重建知识库;先在测试库验证效果再动生产 |
总结
通过本文,你在腾讯云上完成了 FastGPT 国产 RAG 知识库的私有化部署,得到了一套文档不出内网、答案可溯源、模型可随时切换的 AI 问答平台。
| 环节 | 关键点 |
|---|---|
| 选型 | 4C8G 起步、8C16G 生产;瓶颈在内存与磁盘,不在 GPU |
| 模型网关 | OneAPI 聚合 DeepSeek 对话 + 百炼 embedding;换模型不动 FastGPT |
| 召回质量 | 最小相似度从 0.3 起调;分段 500 到 1500;必做「搜索测试」 |
| 安全 | 3000 不裸奔、默认密码必改、令牌只给必要范围 |
| 备份 | pg_dump + mongodump;恢复前目标库要先装 pgvector |
四条落地建议:
- Embedding 模型一开始就选好 —— 中途更换必须重建知识库,这是最容易带来返工的决策。
- 先做搜索测试再谈应用 —— 对话能通不等于检索正确,只有测试通过才证明知识库真的能用。
- 默认用便宜模型,难问题才切强模型 —— OneAPI 做这种分流最省成本,日常问答用 Flash 档完全够。
- 先想清楚「谁在用、问什么」再建库 —— 召回质量取决于文档组织方式。先挑一个真实高频问题(如报销流程)跑通,再逐步扩展,比一上来灌几千篇文档有效得多。
现在上传一份你团队的真实文档,问它一个只有内部才知道答案的问题 —— 当答案准确且带出处地返回时,你会明白把数据留在自己服务器上的意义。
常见问题
Q和直接用 Dify 相比,FastGPT 的优势在哪?
两者都是优秀的国产编排平台,但侧重点不同。FastGPT 在知识库 RAG 方向做得更细:分段策略、向量检索最小相似度、引用溯源百分比都能参数化精调,还提供召回质检工具;界面偏「知识库问答」心智,中文文档扎实。Dify 则在通用 Agent 与应用商店生态上更强。如果你的首要诉求是「把公司文档喂进去问得出、还得能溯源」,FastGPT 上手更直接。
Q搭建需要买很贵的 GPU 服务器吗?
不需要。本方案把 embedding(向量化)和对话大模型都交给国产云端 API(阿里云百炼 text-embedding-v3 与 DeepSeek / Qwen),服务器只跑 FastGPT 自身的服务与数据库。因此 4C8G 就能跑起来,生产级知识库建议 8C16G。只有当你要完全离线连 embedding 都自己算,才需要 GPU。
Q为什么要用 OneAPI 做一层模型网关,不能直接填 API Key 吗?
FastGPT 支持直接配 API Key,但一旦你接了多家(DeepSeek 对话 + 百炼 embedding + Qwen 备用),管理多个密钥、统一走一处限流和计费会很乱。OneAPI 是国产的模型网关,把这些都聚合成一个 OpenAI 兼容地址和一个令牌,FastGPT 只认这一个入口。后续换模型、加渠道都不用动 FastGPT 的配置,排障也更集中。