from functools import lru_cache from sentence_transformers import SentenceTransformer # Multilingual so German player messages retrieve relevant chunks from the # English-language rulebooks. 384-dim output, matching RulebookChunk.embedding. MODEL_NAME = "paraphrase-multilingual-MiniLM-L12-v2" @lru_cache def get_embedding_model() -> SentenceTransformer: return SentenceTransformer(MODEL_NAME) def embed_texts(texts: list[str]) -> list[list[float]]: model = get_embedding_model() embeddings = model.encode(texts, normalize_embeddings=True, show_progress_bar=False) return embeddings.tolist() def embed_query(text: str) -> list[float]: return embed_texts([text])[0]