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,6 +1,8 @@
|
||||
services:
|
||||
# M8 P2:pgvector 镜像与 postgres:17-alpine 数据卷兼容;CREATE EXTENSION vector
|
||||
# 由迁移 000024 执行(容器内 gateway 用户即 superuser)。
|
||||
postgres:
|
||||
image: postgres:17-alpine
|
||||
image: pgvector/pgvector:pg17
|
||||
environment:
|
||||
POSTGRES_DB: gateway
|
||||
POSTGRES_USER: gateway
|
||||
@@ -65,6 +67,13 @@ services:
|
||||
S3_REGION: ${S3_REGION:-us-east-1}
|
||||
S3_USE_SSL: ${S3_USE_SSL:-false}
|
||||
S3_MAX_FILE_BYTES: ${S3_MAX_FILE_BYTES:-134217728}
|
||||
# M8 P2:本地 Ollama 向量化(bge-m3)。EMBEDDINGS_ENABLED=false 可整体关闭。
|
||||
EMBEDDINGS_ENABLED: ${EMBEDDINGS_ENABLED:-true}
|
||||
OLLAMA_BASE_URL: ${OLLAMA_BASE_URL:-http://ollama:11434}
|
||||
EMBEDDING_MODEL: ${EMBEDDING_MODEL:-bge-m3}
|
||||
EMBEDDING_DIM: ${EMBEDDING_DIM:-1024}
|
||||
EMBEDDING_BATCH_SIZE: ${EMBEDDING_BATCH_SIZE:-64}
|
||||
EMBEDDING_TIMEOUT: ${EMBEDDING_TIMEOUT:-120s}
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
@@ -87,6 +96,9 @@ services:
|
||||
condition: service_healthy
|
||||
minio:
|
||||
condition: service_started
|
||||
# 向量化不阻断 API 启动:ollama 未就绪时 knowledge 入库降级(embedding 置 NULL)。
|
||||
ollama:
|
||||
condition: service_started
|
||||
restart: unless-stopped
|
||||
|
||||
# M8: 对象存储。MinIO 不暴露主机端口,凭据只留在 API 容器内;
|
||||
@@ -101,6 +113,14 @@ services:
|
||||
- minio-data:/data
|
||||
restart: unless-stopped
|
||||
|
||||
# M8 P2:本地向量化。模型默认 bge-m3(~1.2GB),首次 embed 惰性 pull;
|
||||
# 无需对外暴露端口,仅网关容器访问。restart=unless-stopped 以便重启后自愈。
|
||||
ollama:
|
||||
image: ollama/ollama:latest
|
||||
volumes:
|
||||
- ollama-models:/root/.ollama
|
||||
restart: unless-stopped
|
||||
|
||||
admin-web:
|
||||
build:
|
||||
context: ..
|
||||
@@ -174,3 +194,4 @@ volumes:
|
||||
postgres-data:
|
||||
redis-critical-data:
|
||||
minio-data:
|
||||
ollama-models:
|
||||
|
||||
Reference in New Issue
Block a user