企业内网搭建AI助手:从部署架构到配置文件一文讲清
AI工具私有化部署方案|附配置文件
随着大模型、知识库问答、AI Agent、智能办公助手等应用逐渐进入企业生产环境,越来越多团队开始关注一个核心问题:AI工具是否一定要依赖公有云?能否在企业内部完成私有化部署?
答案是:可以,而且在很多场景下非常有必要。
对于金融、政务、医疗、制造、能源、教育、法律等行业而言,数据安全、权限隔离、合规审计、模型可控、成本可控都是落地AI应用时必须考虑的因素。相比直接调用外部SaaS平台,私有化部署可以让企业将模型、知识库、向量数据库、业务系统接口、日志审计等能力部署在自有服务器、私有云或本地机房中,从而获得更高的数据掌控权和系统可控性。
本文将围绕一个较为通用的企业级AI工具私有化部署方案展开,覆盖整体架构、服务器规划、组件选型、部署流程、配置文件示例、安全策略、运维建议以及常见问题处理,适合作为企业内部AI平台建设、私有知识库问答系统、智能客服、研发助手、文档助手等项目的参考。
一、私有化部署的适用场景
AI工具私有化部署并不是所有企业的唯一选择,但在以下场景中非常适合:
1. 数据安全要求较高
企业内部文档、客户资料、合同、财务数据、研发代码、生产工艺、会议纪要等内容不适合上传至第三方平台。私有化部署可以确保数据存储、向量化、检索、推理过程都在企业内部完成。
2. 需要接入内部业务系统
很多AI应用并不只是简单聊天,而是要接入OA、CRM、ERP、MES、工单系统、知识库、数据库、代码仓库等内部系统。私有部署可以减少网络隔离带来的调用问题,也方便进行统一认证和权限控制。
3. 对模型响应速度有要求
如果企业用户规模较大,频繁访问外部API可能受到网络延迟、接口限流和服务稳定性影响。本地部署模型后,可以根据硬件资源进行优化,提高响应速度和系统稳定性。
4. 成本结构需要长期可控
公有API按量计费,在早期试用时成本较低,但当企业用户大量使用时,长期费用可能较高。私有化部署虽然前期硬件投入较大,但对于高频使用场景,长期成本可能更优。
5. 需要满足合规与审计要求
部分行业要求数据不出域、操作可追溯、权限可审计、日志可留存。私有化部署可以更方便地接入企业已有的安全体系和审计平台。
二、整体架构设计
一个完整的AI工具私有化部署方案通常包括以下几个核心层级:
┌────────────────────────────────────┐
│ 用户访问层 │
│ Web端 / 移动端 / 企业微信 / 钉钉 / 飞书 │
└────────────────────────────────────┘
│
┌────────────────────────────────────┐
│ 网关与认证层 │
│ Nginx / API Gateway / SSO / LDAP │
└────────────────────────────────────┘
│
┌────────────────────────────────────┐
│ AI应用服务层 │
│ Chat UI / Agent平台 / 知识库问答服务 │
└────────────────────────────────────┘
│
┌────────────────────────────────────┐
│ 模型推理层 │
│ vLLM / Ollama / TGI / llama.cpp │
└────────────────────────────────────┘
│
┌────────────────────────────────────┐
│ 数据与检索层 │
│ PostgreSQL / Redis / Milvus / MinIO │
└────────────────────────────────────┘
│
┌────────────────────────────────────┐
│ 运维监控层 │
│ Prometheus / Grafana / Loki / Alert │
└────────────────────────────────────┘
在实际部署中,可以根据企业规模进行裁剪:
- 小型团队:一台GPU服务器部署模型、应用、数据库;
- 中型企业:模型服务、应用服务、数据库服务分开部署;
- 大型企业:采用Kubernetes集群,支持多模型、多租户、弹性扩容和统一监控。
本文提供的方案以Docker Compose方式部署为主,便于快速落地和维护。如果后续需要扩展到Kubernetes,也可以基于同样的组件进行迁移。
三、组件选型建议
1. 大模型推理服务
常见选择如下:
| 组件 | 特点 | 适用场景 |
|---|---|---|
| Ollama | 部署简单,模型管理方便 | 小团队、原型验证、轻量应用 |
| vLLM | 推理性能高,支持OpenAI兼容接口 | 企业生产环境、高并发场景 |
| Text Generation Inference | Hugging Face生态,稳定成熟 | 模型服务化部署 |
| llama.cpp | CPU/低资源环境友好 | 边缘设备、轻量服务器 |
如果追求快速部署,推荐使用 Ollama。如果追求更高并发和吞吐,推荐使用 vLLM。
2. AI应用平台
可选方案包括:
- Open WebUI:类ChatGPT界面,支持Ollama、OpenAI兼容接口;
- Dify:支持工作流、Agent、知识库、应用发布;
- FastGPT:适合企业知识库问答与流程编排;
- AnythingLLM:轻量知识库与团队协作;
- 自研应用:适合深度集成业务系统。
本文采用较通用的组合:Open WebUI + Ollama/vLLM + PostgreSQL + Redis + MinIO + Milvus。
3. 向量数据库
向量数据库用于存储文档切片后的向量数据,并支持相似度检索。常见选择:
- Milvus:功能强大,适合中大型生产环境;
- Qdrant:部署简单,性能较好;
- Weaviate:生态完整;
- PostgreSQL + pgvector:适合轻量场景,减少组件复杂度。
如果企业对稳定性和扩展性要求较高,可以使用 Milvus;如果希望部署简单,可以选择 pgvector。
4. 对象存储
用于保存上传的原始文档、图片、音频等文件。推荐使用:
- MinIO:兼容S3协议,适合私有化部署;
- Ceph:适合大规模存储集群;
- 本地文件系统:适合测试环境,不建议生产长期使用。
四、服务器资源规划
服务器配置需要根据模型大小、用户并发量、文档数量和响应速度要求来规划。
1. 测试环境配置
适合内部试点、PoC验证:
CPU:16核
内存:64GB
GPU:NVIDIA RTX 4090 24GB 或 A10 24GB
磁盘:1TB SSD
系统:Ubuntu Server 22.04 LTS
可部署7B或14B量化模型,支持少量并发访问。
2. 中型生产环境配置
适合几十到几百人的企业内部使用:
CPU:32核
内存:128GB
GPU:NVIDIA A800 80GB / A100 80GB / L40S 48GB
磁盘:2TB NVMe SSD + 数据盘
系统:Ubuntu Server 22.04 LTS
可部署14B、32B模型或多个小模型,支持知识库问答和日常办公助手。
3. 高并发生产环境配置
适合集团级、大规模用户访问:
CPU:64核以上
内存:256GB以上
GPU:多卡A800/A100/H800/H100
磁盘:高速NVMe阵列
部署方式:Kubernetes + GPU Operator
支持模型分布式推理、负载均衡、多租户隔离、统一监控与弹性扩展。
五、基础环境准备
以下示例以 Ubuntu Server 22.04 为例。
1. 更新系统
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget git vim net-tools htop unzip
2. 安装Docker
curl -fsSL https://get.docker.com | bash
sudo systemctl enable docker
sudo systemctl start docker
3. 安装Docker Compose插件
sudo apt install -y docker-compose-plugin
docker compose version
4. 安装NVIDIA驱动与容器运行时
如果使用GPU推理,需要安装NVIDIA驱动和NVIDIA Container Toolkit。
nvidia-smi
如果该命令能正常显示GPU信息,说明驱动基本可用。
安装容器运行时:
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | \
sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update
sudo apt install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
测试GPU容器:
docker run --rm --gpus all nvidia/cuda:12.2.0-base-ubuntu22.04 nvidia-smi
六、目录结构规划
建议将AI平台统一放在 /data/ai-platform 下:
sudo mkdir -p /data/ai-platform
cd /data/ai-platform
mkdir -p nginx/conf.d
mkdir -p postgres/data
mkdir -p redis/data
mkdir -p minio/data
mkdir -p ollama/data
mkdir -p open-webui/data
mkdir -p milvus/db
mkdir -p logs
推荐目录结构如下:
/data/ai-platform
├── docker-compose.yml
├── .env
├── nginx
│ └── conf.d
│ └── ai.conf
├── postgres
│ └── data
├── redis
│ └── data
├── minio
│ └── data
├── ollama
│ └── data
├── open-webui
│ └── data
├── milvus
│ └── db
└── logs
七、环境变量配置文件
创建 .env 文件:
vim /data/ai-platform/.env
示例内容如下:
# 基础域名配置
AI_DOMAIN=ai.example.com
# PostgreSQL配置
POSTGRES_DB=ai_platform
POSTGRES_USER=ai_admin
POSTGRES_PASSWORD=ChangeMe_StrongPassword_2025
# Redis配置
REDIS_PASSWORD=ChangeMe_RedisPassword_2025
# MinIO配置
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=ChangeMe_MinioPassword_2025
MINIO_BUCKET=ai-documents
# Open WebUI配置
WEBUI_SECRET_KEY=ChangeMe_WebUI_Secret_Key_2025
# Ollama配置
OLLAMA_HOST=0.0.0.0
OLLAMA_PORT=11434
# 时区
TZ=Asia/Shanghai
注意:生产环境中必须修改所有默认密码,并建议使用密码管理系统统一保存。
八、Docker Compose配置文件
创建 docker-compose.yml:
vim /data/ai-platform/docker-compose.yml
以下配置包含 Nginx、Open WebUI、Ollama、PostgreSQL、Redis、MinIO 等基础服务。
version: "3.9"
services:
nginx:
image: nginx:1.25
container_name: ai-nginx
restart: always
ports:
- "80:80"
- "443:443"
environment:
- TZ=${TZ}
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
- ./logs/nginx:/var/log/nginx
depends_on:
- open-webui
networks:
- ai-net
postgres:
image: postgres:15
container_name: ai-postgres
restart: always
environment:
- POSTGRES_DB=${POSTGRES_DB}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- TZ=${TZ}
volumes:
- ./postgres/data:/var/lib/postgresql/data
ports:
- "5432:5432"
networks:
- ai-net
redis:
image: redis:7
container_name: ai-redis
restart: always
command: >
redis-server
--requirepass ${REDIS_PASSWORD}
--appendonly yes
volumes:
- ./redis/data:/data
ports:
- "6379:6379"
networks:
- ai-net
minio:
image: minio/minio:latest
container_name: ai-minio
restart: always
command: server /data --console-address ":9001"
environment:
- MINIO_ROOT_USER=${MINIO_ROOT_USER}
- MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD}
- TZ=${TZ}
volumes:
- ./minio/data:/data
ports:
- "9000:9000"
- "9001:9001"
networks:
- ai-net
ollama:
image: ollama/ollama:latest
container_name: ai-ollama
restart: always
environment:
- OLLAMA_HOST=${OLLAMA_HOST}
- TZ=${TZ}
volumes:
- ./ollama/data:/root/.ollama
ports:
- "${OLLAMA_PORT}:11434"
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
networks:
- ai-net
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: ai-open-webui
restart: always
environment:
- OLLAMA_BASE_URL=http://ollama:11434
- WEBUI_SECRET_KEY=${WEBUI_SECRET_KEY}
- TZ=${TZ}
volumes:
- ./open-webui/data:/app/backend/data
ports:
- "3000:8080"
depends_on:
- ollama
- postgres
- redis
- minio
networks:
- ai-net
networks:
ai-net:
driver: bridge
说明:
open-webui作为用户访问界面;ollama提供本地大模型推理能力;postgres存储应用结构化数据;redis可用于缓存和任务队列;minio存储文件资料;nginx作为统一入口,便于配置域名和HTTPS。
九、Nginx反向代理配置
创建配置文件:
vim /data/ai-platform/nginx/conf.d/ai.conf
示例配置如下:
server {
listen 80;
server_name ai.example.com;
client_max_body_size 200m;
location / {
proxy_pass http://open-webui:8080;
proxy_http_version 1.1;
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_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 600s;
proxy_send_timeout 600s;
}
}
如果生产环境启用HTTPS,可以使用企业证书或Let’s Encrypt证书。HTTPS版本示例:
server {
listen 443 ssl http2;
server_name ai.example.com;
ssl_certificate /etc/nginx/certs/ai.example.com.crt;
ssl_certificate_key /etc/nginx/certs/ai.example.com.key;
client_max_body_size 200m;
location / {
proxy_pass http://open-webui:8080;
proxy_http_version 1.1;
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 https;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 600s;
proxy_send_timeout 600s;
}
}
server {
listen 80;
server_name ai.example.com;
return 301 https://$host$request_uri;
}
十、启动服务
进入部署目录:
cd /data/ai-platform
启动全部服务:
docker compose up -d
查看容器状态:
docker compose ps
查看日志:
docker compose logs -f open-webui
docker compose logs -f ollama
访问地址:
http://服务器IP
或
http://ai.example.com
首次访问 Open WebUI 时,需要创建管理员账号。建议管理员账号使用企业邮箱,并开启强密码策略。
十一、下载和运行本地模型
进入 Ollama 容器:
docker exec -it ai-ollama bash
下载模型:
ollama pull qwen2.5:7b
ollama pull qwen2.5:14b
ollama pull llama3.1:8b
运行测试:
ollama run qwen2.5:7b
通过API测试:
curl http://localhost:11434/api/generate -d '{
"model": "qwen2.5:7b",
"prompt": "请用中文介绍一下私有化部署AI工具的优势。",
"stream": false
}'
如果能够正常返回内容,说明模型服务已部署成功。
十二、使用vLLM替代Ollama的配置方案
如果企业需要更高并发,可以使用 vLLM。以下为可选配置。
1. 新增vLLM服务
在 docker-compose.yml 中增加:
vllm:
image: vllm/vllm-openai:latest
container_name: ai-vllm
restart: always
command: >
--model /models/Qwen2.5-14B-Instruct
--served-model-name qwen2.5-14b
--host 0.0.0.0
--port 8000
--tensor-parallel-size 1
--max-model-len 32768
--gpu-memory-utilization 0.90
volumes:
- ./models:/models
ports:
- "8000:8000"
ipc: host
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
networks:
- ai-net
2. Open WebUI连接vLLM
将 Open WebUI 的环境变量调整为 OpenAI兼容接口:
environment:
- OPENAI_API_BASE_URL=http://vllm:8000/v1
- OPENAI_API_KEY=EMPTY
- WEBUI_SECRET_KEY=${WEBUI_SECRET_KEY}
- TZ=${TZ}
vLLM启动后,可测试接口:
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer EMPTY" \
-d '{
"model": "qwen2.5-14b",
"messages": [
{
"role": "user",
"content": "请解释什么是RAG知识库问答。"
}
],
"temperature": 0.7
}'
vLLM适合高并发推理,但对显存要求更高。生产环境建议优先使用企业实际业务数据进行压测,再决定模型规格。
十三、知识库问答与RAG流程设计
企业AI工具最常见的应用是知识库问答,也就是RAG,完整流程如下:
文档上传
↓
文档解析
↓
文本清洗
↓
内容切片
↓
向量化
↓
写入向量数据库
↓
用户提问
↓
问题向量化
↓
相似内容召回
↓
重排序
↓
拼接上下文
↓
大模型生成答案
↓
返回结果并展示引用来源
关键配置建议
- 切片大小:建议 500~1000 字符;
- 切片重叠:建议 50~150 字符;
- 召回数量:建议 Top 5~Top 10;
- 答案引用:必须展示文档来源,降低幻觉风险;
- 权限隔离:不同部门、项目、用户只能检索授权范围内的知识库;
- 敏感词过滤:对输出内容进行安全检测;
- 反馈闭环:允许用户对答案点赞、点踩、纠错。
十四、MinIO初始化配置
启动 MinIO 后,可访问:
http://服务器IP:9001
使用 .env 中配置的账号密码登录。
也可以使用 mc 命令初始化 Bucket:
docker run --rm -it --network ai-platform_ai-net minio/mc sh
进入后执行:
mc alias set local http://minio:9000 minioadmin ChangeMe_MinioPassword_2025
mc mb local/ai-documents
mc anonymous set none local/ai-documents
生产环境中建议:
- 禁止匿名访问;
- 按应用创建独立Access Key;
- 开启对象版本控制;
- 定期备份重要文档;
- 配置生命周期策略清理临时文件。
十五、数据备份方案
AI私有化部署不仅要关注“能不能跑”,更要关注“数据能不能恢复”。建议至少备份以下内容:
| 数据类型 | 位置 | 备份频率 |
|---|---|---|
| 应用数据 | open-webui/data | 每日 |
| PostgreSQL | postgres/data | 每日全量 + 定时增量 |
| MinIO文件 | minio/data | 每日 |
| 模型文件 | ollama/data 或 models | 变更后备份 |
| 配置文件 | docker-compose.yml、.env、nginx配置 | 每次变更后备份 |
| 日志数据 | logs | 按审计要求保存 |
PostgreSQL备份脚本
创建脚本:
vim /data/ai-platform/backup-postgres.sh
内容如下:
#!/bin/bash
BACKUP_DIR="/data/backup/postgres"
DATE=$(date +"%Y%m%d_%H%M%S")
mkdir -p ${BACKUP_DIR}
docker exec ai-postgres pg_dump \
-U ai_admin \
-d ai_platform \
> ${BACKUP_DIR}/ai_platform_${DATE}.sql
find ${BACKUP_DIR} -type f -name "*.sql" -mtime +14 -delete
赋予执行权限:
chmod +x /data/ai-platform/backup-postgres.sh
添加定时任务:
crontab -e
加入:
0 2 * * * /data/ai-platform/backup-postgres.sh
十六、安全加固建议
1. 网络安全
- AI平台不要直接暴露数据库、Redis、MinIO管理端口到公网;
- 只开放必要端口,例如80、443;
- 内部服务通过Docker网络通信;
- 对管理后台限制IP访问;
- 生产环境必须启用HTTPS。
2. 账号与权限
- 使用企业统一身份认证,如LDAP、AD、OIDC、SSO;
- 管理员账号与普通用户账号分离;
- 按部门、项目、角色划分权限;
- 定期审查离职人员账号;
- 禁止多人共用管理员账号。
3. 数据安全
- 上传文件进行病毒扫描;
- 敏感文档分级管理;
- 向量数据库也应视为敏感数据;
- 日志中避免记录明文密码、Token、身份证号等敏感字段;
- 对关键数据进行加密存储。
4. 模型安全
- 设置系统提示词,限制模型越权回答;
- 对输出结果增加内容审核;
- 防范提示词注入攻击;
- 对工具调用增加权限校验;
- 禁止模型直接执行高危操作,例如删除数据库、修改权限等。
十七、监控与运维建议
生产环境建议至少监控以下指标:
1. 服务器指标
- CPU使用率;
- 内存使用率;
- 磁盘空间;
- 磁盘IO;
- 网络流量;
- GPU显存使用率;
- GPU利用率;
- GPU温度。
2. 应用指标
- 请求量;
- 响应时间;
- 错误率;
- 模型平均生成耗时;
- Token输入输出数量;
- 队列积压情况;
- 用户活跃度。
3. 日志审计
- 用户登录日志;
- 文件上传日志;
- 知识库访问日志;
- 模型调用日志;
- 管理员操作日志;
- 异常报错日志。
可采用 Prometheus + Grafana + Loki 的组合进行监控和日志管理。
十八、常见问题与解决方案
1. 模型响应很慢
可能原因:
- 模型参数过大,显存不足;
- 使用CPU推理;
- 并发请求过多;
- 上下文长度设置过大;
- RAG召回内容过多。
解决建议:
- 使用更小模型或量化模型;
- 升级GPU;
- 使用vLLM提高吞吐;
- 限制最大上下文长度;
- 优化知识库切片和召回数量。
2. Docker容器无法识别GPU
检查:
nvidia-smi
docker run --rm --gpus all nvidia/cuda:12.2.0-base-ubuntu22.04 nvidia-smi
如果失败,需要重新安装NVIDIA Container Toolkit,并重启Docker。
3. 上传大文件失败
需要检查:
- Nginx
client_max_body_size; - 应用平台上传限制;
- MinIO存储空间;
- 后端接口超时时间。
可适当增加Nginx配置:
client_max_body_size 500m;
proxy_read_timeout 900s;
proxy_send_timeout 900s;
4. 知识库回答不准确
常见原因:
- 文档解析质量差;
- 切片过大或过小;
- Embedding模型效果不足;
- 召回数量不合理;
- Prompt没有要求引用依据;
- 原始文档内容本身不规范。
优化方向:
- 清洗文档格式;
- 调整切片参数;
- 更换中文效果更好的Embedding模型;
- 引入Rerank模型;
- 要求回答必须基于引用内容;
- 对知识库进行版本管理。
十九、生产落地路线图
建议企业不要一开始就追求“大而全”,可以分阶段推进。
第一阶段:内部试点
目标是验证可用性。
- 部署基础AI聊天工具;
- 接入1~2个本地模型;
- 上传部分制度文档或产品手册;
- 邀请少量用户试用;
- 收集反馈和问题。
第二阶段:知识库建设
目标是形成可用的企业知识助手。
- 建立文档分类规范;
- 接入对象存储和向量数据库;
- 按部门建设知识库;
- 设置权限隔离;
- 优化召回和回答质量。
第三阶段:业务系统集成
目标是让AI进入业务流程。
- 接入OA、工单、CRM、ERP等系统;
- 支持用户查询业务数据;
- 建立工具调用权限;
- 对关键操作增加人工确认;
- 完善日志审计。
第四阶段:平台化运营
目标是形成企业级AI能力中心。
- 支持多模型管理;
- 支持多租户;
- 建立模型评测体系;
- 建立提示词模板库;
- 建立统一监控和成本统计;
- 支持企业内部应用快速接入。
二十、总结
AI工具私有化部署的核心价值,不只是“把模型部署到本地”,而是构建一套可控、安全、可扩展、可运维的企业AI基础设施。
一套较完整的私有化AI平台通常需要包含:
- 模型推理服务;
- AI应用交互界面;
- 知识库与向量检索;
- 文件存储;
- 数据库与缓存;
- 统一认证;
- 网关代理;
- 日志审计;
- 监控告警;
- 数据备份与恢复机制。
对于初期项目,可以采用 Docker Compose 快速部署 Open WebUI + Ollama,实现本地模型问答和内部试用;当并发和性能需求提升后,可以切换到 vLLM,并引入 Milvus、MinIO、Prometheus、Grafana 等组件;当企业级规模进一步扩大后,再迁移到 Kubernetes,实现弹性伸缩、多租户隔离和统一资源调度。
真正成功的AI私有化项目,技术部署只是第一步。更重要的是后续的知识治理、权限管理、用户培训、反馈优化和业务流程融合。只有当AI工具真正嵌入企业日常工作流程,帮助员工更快获取信息、更高效处理任务、更准确完成决策辅助时,私有化部署的价值才会被充分释放。