feat(m8): P2 pgvector + Ollama 向量化与语义检索
- PostgreSQL 切换 pgvector/pgvector:pg17 镜像;迁移 000024 建 vector 扩展、 knowledge_chunks.embedding vector(1024) + HNSW 余弦索引,retrieval_mode 放宽三态 - OllamaEmbedder 本地 bge-m3 批量嵌入,404 惰性 pull 重试,维度/超时校验,可整体关闭 - SemanticRetriever/HybridRetriever + NewRetriever 按 retrieval_mode 分发,缺 embedder 回退 FTS - 文档入库同步批量向量化;Ollama 故障降级入库 + embedding_failed 事件 - 修复 pgx CopyFrom 对 vector 列二进制编码误读:COPY 基础列后同事务 unnest 批量回填 - 修复降级路径 embeddings=nil 索引越界 panic(Add 与 Reprocess) - 知识库列表 vectorized_chunk_count + 前端三态检索模式选择与向量化覆盖率 - 单测 embedder/retrievers + 集成 TestKnowledgeVectorLifecycle 全绿 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# ADR-0001:基线存储只使用 PostgreSQL 与 Redis
|
||||
|
||||
状态:已接受
|
||||
日期:2026-08-10
|
||||
状态:已被 [ADR-0002](./0002-vector-storage-and-object-store.md) 取代
|
||||
日期:2026-08-10(2026-08-12 修订:对象存储与向量化基础设施入基线,见 ADR-0002)
|
||||
|
||||
## 决策
|
||||
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
# 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 取代。
|
||||
Reference in New Issue
Block a user