fix vector python embedding
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import json
|
||||
import os
|
||||
import logging
|
||||
from logging.handlers import RotatingFileHandler
|
||||
import threading
|
||||
@@ -13,6 +14,12 @@ import numpy as np
|
||||
from fastapi import FastAPI, HTTPException, Request
|
||||
from fastapi.responses import JSONResponse
|
||||
from pydantic import BaseModel
|
||||
|
||||
# Keep HuggingFace/SentenceTransformer model loading deterministic.
|
||||
os.environ.setdefault("HF_HUB_DISABLE_XET", "1")
|
||||
os.environ.setdefault("HF_HUB_ETAG_TIMEOUT", "10")
|
||||
os.environ.setdefault("HF_HUB_DOWNLOAD_TIMEOUT", "30")
|
||||
|
||||
from sentence_transformers import SentenceTransformer
|
||||
|
||||
|
||||
@@ -147,6 +154,15 @@ def _safe_read_json(path: Path) -> Optional[Any]:
|
||||
return None
|
||||
|
||||
|
||||
|
||||
def _resolve_embedding_model_name(configured_model_name: str) -> str:
|
||||
# A local model directory avoids implicit network/cache lookups in production.
|
||||
model_override = os.environ.get("RETRIEX_EMBEDDING_MODEL_PATH", "").strip()
|
||||
if model_override:
|
||||
return model_override
|
||||
|
||||
return configured_model_name.strip()
|
||||
|
||||
def _as_key(value: Any) -> Optional[str]:
|
||||
if value is None:
|
||||
return None
|
||||
@@ -362,10 +378,12 @@ def load_all() -> None:
|
||||
if not embedding_model_name:
|
||||
raise RuntimeError("embedding_model missing in index_meta.json")
|
||||
|
||||
if model is None or embedding_model_name != loaded_embedding_model_name:
|
||||
logger.info("[Reload] Loading embedding model: %s", embedding_model_name)
|
||||
model = SentenceTransformer(embedding_model_name)
|
||||
loaded_embedding_model_name = embedding_model_name
|
||||
resolved_embedding_model_name = _resolve_embedding_model_name(str(embedding_model_name))
|
||||
|
||||
if model is None or resolved_embedding_model_name != loaded_embedding_model_name:
|
||||
logger.info("[Reload] Loading embedding model: %s", resolved_embedding_model_name)
|
||||
model = SentenceTransformer(resolved_embedding_model_name)
|
||||
loaded_embedding_model_name = resolved_embedding_model_name
|
||||
|
||||
runtime = _safe_read_json(INDEX_RUNTIME_PATH)
|
||||
chunk_runtime_stamp, tags_runtime_stamp, tags_index_present = _extract_runtime_state(runtime)
|
||||
|
||||
Reference in New Issue
Block a user