diff --git a/scripts/dream.py b/scripts/dream.py index 45c4d02..e97deb2 100644 --- a/scripts/dream.py +++ b/scripts/dream.py @@ -16,6 +16,7 @@ import os import json import sqlite3 import argparse +from functools import lru_cache from collections import Counter from pathlib import Path from datetime import datetime, timedelta @@ -283,6 +284,11 @@ def retrieve_graphiti(mode, task=None, n_results=8, excluded_sources=None): print(f"[Graphiti retrieval error: {e}] — falling back to empty.") return [] +@lru_cache(maxsize=1) +def _get_embedder(): + from sentence_transformers import SentenceTransformer + return SentenceTransformer("all-MiniLM-L6-v2") + def retrieve(mode, task=None, n_results=8, excluded_sources=None, type_filter=None): # E3 experiment: DREAMER_SUBSTRATE=graphiti routes retrieval to Graphiti /search # Default behavior: pgvector similarity search (unchanged) @@ -291,8 +297,7 @@ def retrieve(mode, task=None, n_results=8, excluded_sources=None, type_filter=No substrate = os.getenv("DREAMER_SUBSTRATE", "pgvector") if substrate == "graphiti": return retrieve_graphiti(mode, task=task, n_results=n_results, excluded_sources=excluded_sources) - from sentence_transformers import SentenceTransformer - embedder = SentenceTransformer("all-MiniLM-L6-v2") + embedder = _get_embedder() low, high = MODE_RANGES[mode] if task: