Source code for lalandre_core.embedding_presets

"""Helpers for embedding preset resolution across services."""

from __future__ import annotations

import os
from typing import Optional

from .config import EmbeddingPresetConfig, get_config


[docs] def list_embedding_presets( *, enabled_only: bool = False, indexing_only: bool = False, ) -> list[EmbeddingPresetConfig]: """Return configured embedding presets.""" config = get_config() presets = config.embedding_presets if enabled_only: presets = [preset for preset in presets if preset.enabled] if indexing_only: presets = [preset for preset in presets if preset.indexing_enabled] return [preset.model_copy(deep=True) for preset in presets]
[docs] def get_embedding_preset( preset_id: str | None, *, enabled_only: bool = False, indexing_only: bool = False, ) -> Optional[EmbeddingPresetConfig]: """Resolve a preset by ID.""" if preset_id is None: return None config = get_config() preset = config.get_embedding_preset(preset_id) if preset is None: return None if enabled_only and not preset.enabled: return None if indexing_only and not preset.indexing_enabled: return None return preset.model_copy(deep=True)
[docs] def get_default_embedding_preset() -> EmbeddingPresetConfig: """Return the configured default embedding preset.""" return get_config().get_default_embedding_preset().model_copy(deep=True)
[docs] def get_default_embedding_preset_id() -> str: """Return the ID of the default embedding preset.""" return get_default_embedding_preset().preset_id
[docs] def resolve_embedding_preset_or_default(preset_id: str | None) -> EmbeddingPresetConfig: """Resolve a preset, falling back to the configured default when missing/invalid.""" preset = get_embedding_preset(preset_id, enabled_only=True) if preset is not None: return preset return get_default_embedding_preset()
[docs] def resolve_embed_queue_name(preset_id: str | None = None) -> str: """Return the queue name for a preset, defaulting to the configured default preset.""" preset = resolve_embedding_preset_or_default(preset_id) return preset.resolved_queue_name()
[docs] def resolve_worker_embedding_preset( preset_id: str | None = None, *, env_var: str = "EMBEDDING_PRESET_ID", ) -> EmbeddingPresetConfig: """Resolve the preset bound to the current embedding worker.""" effective_preset_id = preset_id or os.getenv(env_var) return resolve_embedding_preset_or_default(effective_preset_id)