Source code for api_gateway.routers.embedding
"""Embedding preset metadata and deprecated switch endpoint."""
from typing import Dict
from api_gateway.auth import require_admin
from fastapi import APIRouter, Depends, HTTPException
from lalandre_core.embedding_presets import (
get_default_embedding_preset_id,
list_embedding_presets,
)
from pydantic import BaseModel
router = APIRouter(tags=["embedding"])
[docs]
class EmbeddingPresetItem(BaseModel):
"""Description of one configured embedding preset."""
preset_id: str
provider: str
model_name: str
device: str
label: str
enabled: bool
indexing_enabled: bool
queue_name: str
vector_size: int
[docs]
class EmbeddingPresetsResponse(BaseModel):
"""List of query-enabled embedding presets and the default selection."""
presets: Dict[str, EmbeddingPresetItem]
default_preset: str
[docs]
class EmbeddingSwitchRequest(BaseModel):
"""Request payload selecting a new active embedding preset."""
preset: str
[docs]
@router.get("/embedding/presets", response_model=EmbeddingPresetsResponse)
async def list_presets() -> EmbeddingPresetsResponse:
"""Return query-enabled embedding presets from the central application config."""
presets = {
preset.preset_id: EmbeddingPresetItem(
preset_id=preset.preset_id,
provider=preset.provider,
model_name=preset.model_name,
device=preset.device,
label=preset.label,
enabled=preset.enabled,
indexing_enabled=preset.indexing_enabled,
queue_name=preset.resolved_queue_name(),
vector_size=preset.vector_size,
)
for preset in list_embedding_presets(enabled_only=True)
}
return EmbeddingPresetsResponse(
presets=presets,
default_preset=get_default_embedding_preset_id(),
)
[docs]
@router.post("/embedding/switch", dependencies=[Depends(require_admin)])
async def switch_embedding(_: EmbeddingSwitchRequest | None = None) -> None:
"""The global embedding switch has been removed in favor of per-preset routing."""
raise HTTPException(
status_code=410,
detail=(
"Embedding switching is deprecated. Vectorization now runs independently "
"per preset via dedicated workers. Use 'embedding_preset' on /query or /search "
"to choose which collections are queried."
),
)