# ADR-0002：对象存储与向量化基础设施入基线

状态：已接受  
日期：2026-08-12  
取代/修订：[ADR-0001](./0001-baseline-storage.md)

## 决策

M8 起把 MinIO（对象存储）与 pgvector + 本地 Ollama（向量化）纳入基线，但它们都**不作为启动依赖**。

- **MinIO 自托管**：上传/下载全部经 `gateway-api` 代理，MinIO 不暴露主机端口；`gateway.file_objects` 元数据行以 PostgreSQL 为权威，对象未就绪时上传得到明确报错，服务不崩溃。
- **pgvector + Ollama**：PostgreSQL 镜像切换为 `pgvector/pgvector:pg17`（数据卷兼容），`knowledge_chunks.embedding vector(1024)` 由本地 Ollama 容器（默认 `bge-m3`）产生；Ollama 未就绪时知识库入库降级（embedding 置 NULL + `knowledge_document.embedding_failed` 事件），检索自动回退纯 FTS。
- **不引入 pgvector-go / S3 客户端到领域层**：向量以 `$1::vector` 字面量直传；对象存储经 `internal/platform/storage` 适配层隔离，领域层只依赖接口。
- **ClickHouse 仍不属于基线**：审计与统计继续存放 PostgreSQL。

## 动机

- 知识库需要向量化语义召回（旗舰版"外部文档导入、自动切分、向量化、语义匹配召回"），并作为 M10 记忆管理、M12 语义输出的依赖基座。
- 门户个人文件仓库与管理端文件管理需要对象存储；自托管 MinIO 保证完全内网离线。
- 本地 Ollama 生成嵌入避免外发文本到公网 embedding API，多语言模型 bge-m3 与中文检索目标匹配。

## 影响

- 部署编排新增 `minio`、`ollama` 两个 stateful 服务与 `minio-data`、`ollama-models` 卷；nginx `client_max_body_size` 提到 256 MiB 盖过 128 MiB 上传上限。
- 运维需备份 `minio-data`、`ollama-models` 卷；Ollama 首次拉取 bge-m3 约 1.2 GiB，`EMBEDDINGS_ENABLED=false` 可关闭。
- `EMBEDDING_DIM` 必须与 `vector(1024)` 一致，配置校验拦截不符。
- ADR-0001 第 4 条（MinIO/S3 不在基线）与"知识库只保存纯文本"不再成立，本 ADR 取代。
