Files
2026-07-13 13:08:41 +08:00

50 lines
1.4 KiB
Python

"""Pre-download FastEmbed / Hugging Face weights at Docker image build time.
Icon search uses AllMiniLML6V2 into ``fastembed_cache`` under the package tree.
Mem0 OSS defaults to ``BAAI/bge-small-en-v1.5`` via Hugging Face Hub under
``HF_HOME`` (default ``~/.cache/huggingface``).
"""
from pathlib import Path
import os
import sys
FASTAPI_ROOT = Path(__file__).resolve().parents[1]
if str(FASTAPI_ROOT) not in sys.path:
sys.path.insert(0, str(FASTAPI_ROOT))
from services.icon_finder_service import ICON_FINDER_SERVICE
def _warm_mem0_default_fastembed() -> None:
provider = (os.getenv("MEM0_EMBEDDER_PROVIDER") or "fastembed").strip() or "fastembed"
if provider != "fastembed":
print(
f"Skipping Mem0 embedder warmup (MEM0_EMBEDDER_PROVIDER={provider!r}, not fastembed)"
)
return
model = (os.getenv("MEM0_EMBEDDER_MODEL") or "BAAI/bge-small-en-v1.5").strip() or (
"BAAI/bge-small-en-v1.5"
)
from fastembed import TextEmbedding
embedder = TextEmbedding(model_name=model)
next(embedder.embed(["warmup"]))
print(f"Mem0 default fastembed model warmed: {model}")
def main() -> None:
if not ICON_FINDER_SERVICE.ensure_initialized():
raise RuntimeError("Failed to prepare fastembed cache for icon search")
print(
f"Fastembed cache prepared at {ICON_FINDER_SERVICE.cache_directory}"
)
_warm_mem0_default_fastembed()
if __name__ == "__main__":
main()