Appearance
私有化部署与推理选型:数据不出域怎么做
1. 本节产出
一份私有化部署方案:什么必须私有化、什么可以走公有云、推理引擎怎么选、GPU 资源怎么估算,以及一个用 Ollama 跑通的最小 PoC。
2. 前置依赖
3. 为什么「全私有化」通常是过度要求
客户说「数据不出域」,第一反应往往是「全部本地部署」。但拆开看:
| 组件 | 是否含敏感数据 | 必须私有化吗 |
|---|---|---|
| 知识库文档 | ✅ 含 | 是 |
| 向量库 | ✅ 含 | 是 |
| Embedding 模型 | ⚠️ 处理时短暂接触 | 建议是 |
| 生成模型(LLM) | ⚠️ 处理时短暂接触 | 取决于合规要求 |
| Agent 编排代码 | ❌ 不含 | 否 |
| 前端 | ❌ 不含 | 否 |
关键认知:数据「出域」的风险发生在「发送给外部模型」的那一刻。所以核心是「不要让敏感原文离开内网」,而不是「所有软件都装在本地」。
3.1 三种部署形态
| 形态 | 做法 | 适用 | 成本 |
|---|---|---|---|
| 纯公有云 | 全部走厂商 API | 无合规约束 | 最低 |
| 混合(推荐) | 检索/灌库/Embedding 本地,生成走云端 | 数据在内网、可接受 prompts 外发 | 中 |
| 全私有 | 模型也本地部署 | 严格合规 | 高 |
混合形态是最常见的选择:知识库和向量化在内网,只有「检索出的片段 + 问题」发给云端模型。风险可控,成本远低于全私有。
但要注意:混合形态下,检索出的片段仍然会外发。如果片段本身包含敏感原文,等于还是出域了。这一点必须在合规评审时说清楚,不能含糊。
4. 核心原理
4.1 推理引擎选型
| 引擎 | 特点 | 适用 |
|---|---|---|
| Ollama | 极简部署、模型库丰富 | PoC / 小规模(推荐起步) |
| vLLM | 高吞吐、PagedAttention、生产级 | 生产首选 |
| Xinference | 多模型管理、支持 Embedding/Rerank | 需要统一管理时 |
| TensorRT-LLM | 极致性能、NVIDIA 专属 | 性能极致优化 |
| llama.cpp | CPU/边缘设备 | 无 GPU 场景 |
推荐路径:先用 Ollama 验证效果,再用 vLLM 上生产。
4.2 模型选型(开源)
| 用途 | 推荐方向 | 显存需求(参考) |
|---|---|---|
| 生成(7B 级) | Qwen / Llama 系列 | 16GB+ |
| 生成(14B~32B) | 效果明显更好 | 40GB+ |
| Embedding | BGE-M3 / bge-large-zh | 4GB+ |
| Rerank | bge-reranker | 4GB+ |
中文场景优先选国产开源模型(Qwen 系列等),中文能力明显优于同规模的多语言模型。
4.3 GPU 资源估算
估算公式(粗略):
显存 ≈ 参数量(B) × 2(FP16)× 1.2(开销)
7B 模型 → 约 17GB → 单卡 A10(24GB) 或 4090(24GB)
14B 模型 → 约 34GB → 单卡 A100(40GB) 或双卡
32B 模型 → 约 77GB → 双卡 A100(80GB)
并发能力:
7B + vLLM + A10:约 20-50 并发(取决于输入输出长度)关键指标是「并发下每用户 Token 生成速度」,不是峰值吞吐。用户体验的底线大约是 20 tokens/s/用户。
4.4 私有化的真实成本
| 成本项 | 说明 | 量级 |
|---|---|---|
| GPU 硬件 | 一次性 | 单卡数万至数十万 |
| 机房/电力/运维 | 持续 | 显著 |
| 人力 | 需要懂推理服务的人 | 常被低估 |
| 模型升级 | 换模型要重新评估、重新部署 | 持续投入 |
对比公有云:按量付费的话,日均 100 万 Token 的场景,私有化的回本周期通常在 1-2 年。低于这个量级,公有云更划算。
决策时要算这笔账,而不是「私有化感觉更安全」。
5. 代码走查
5.1 Ollama 快速起 PoC
yaml
# docker-compose.private.yml
services:
ollama:
image: ollama/ollama:latest
ports: ["11434:11434"]
volumes:
- ollama-data:/root/.ollama
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
ollama-webui:
image: ghcr.io/open-webui/open-webui:main
ports: ["3000:8080"]
environment:
- OLLAMA_BASE_URL=http://ollama:11434
volumes:
ollama-data:bash
# 拉取并运行模型
docker exec -it ollama ollama pull qwen2.5:7b
docker exec -it ollama ollama run qwen2.5:7b "你好"5.2 Spring AI 接本地 Ollama
xml
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-ollama</artifactId>
</dependency>yaml
spring:
ai:
ollama:
base-url: http://localhost:11434
chat:
options:
model: qwen2.5:7b
temperature: 0.7关键收益:业务代码零改动。ChatModel 接口屏蔽了底层是云端还是本地——这就是 01-03 做适配层的价值。
5.3 混合部署的路由配置
yaml
ai:
routing:
# 检索与向量化走本地
embedding:
provider: local
base-url: http://localhost:11434
model: bge-m3
rerank:
provider: local
# 生成按租户策略:合规租户走本地,其余走云端
chat:
providers:
- name: local-qwen
base-url: http://localhost:11434
model: qwen2.5:14b
tenants: [finance, healthcare] # 严格合规租户
- name: cloud-deepseek
base-url: https://api.deepseek.com
model: deepseek-chat
tenants: ["*"] # 其余按租户路由到不同部署是混合方案的核心能力。它让「合规要求高的租户用本地、其余用云端」成为可配置的策略。
5.4 私有化下的向量库
yaml
services:
pgvector:
image: pgvector/pgvector:pg16 # 同样可本地部署
# 或 Milvus(规模大时)向量库和 Embedding 模型必须一起私有化,否则文档内容(或至少是向量)仍然外发。
6. 跑起来
bash
git checkout ch04-05-private
docker compose -f docker-compose.private.yml up -d
docker exec -it ollama ollama pull qwen2.5:7b
# 验证本地推理
curl http://localhost:11434/api/generate -d '{
"model":"qwen2.5:7b","prompt":"用一句话介绍 Spring Boot","stream":false}'
# 通过应用调用(业务代码无感知)
curl -X POST http://localhost:8080/api/chat -d '{"q":"介绍 Spring Boot"}'| 检查项 | 通过标准 |
|---|---|
| 本地推理可用 | Ollama 返回正常回答 |
| 业务零改动 | 切换 provider 不改业务代码 |
| 混合路由 | 合规租户走本地,其余走云端 |
| 性能基线 | 记录 tokens/s,确认满足体验底线 |
| 断网可用 | 断开外网后本地链路仍能工作 |
「断网可用」是私有化的关键验收:断开外网后跑一遍完整问答,验证没有隐藏的外部依赖。
7. 生产避坑
- 混合部署不等于合规。检索出的片段仍会发给云端模型,如果片段含敏感原文,数据实质上是出域了。这一点必须在方案里写清楚,让合规方知情决定,不能默认「混合就是合规」。
- 私有化的隐性成本在人力,不在硬件。GPU 是一次性支出,但推理服务的调优、模型升级、故障排查需要专人。没有懂推理服务的人,私有化会变成运维灾难。
- 先算回本周期再决定。按量付费 vs 买卡的平衡点通常在日均百万 Token 以上、且用量稳定的场景。用量小或波动大时,私有化大概率不划算。决策要有数字支撑,不能凭「感觉更安全」。
8. 延伸与锚点
- 思考题:技术上都能做了,怎么过公司的合规评审?需要哪些材料?(答案在下一课时)
- 代码锚点:
git checkout ch04-05-private - 下一课时:04-06 安全合规与审计
- 对应课件:L04-05 私有化部署