# 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 取代。