Spaces:
Running
Running
File size: 1,496 Bytes
5583f46 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | """Identity persisted with an index; equal dimensions alone do not imply compatibility."""
class EmbeddingProfileError(ValueError):
pass
def index_profile(config, stored_dimension: int) -> dict:
provider = config.embeddings_provider
attribute = {"gcp_vertex": "gcp", "amazon_bedrock": "bedrock"}.get(provider, provider)
provider_config = getattr(config, attribute, None)
model = getattr(provider_config, "embedding_model", None) or config.embeddings.local_model
gemma = provider == "ollama" and model == "embeddinggemma-2:270m"
return {
"profile": config.embeddings.profile or f"{provider}:{model}",
"provider": provider,
"model": model,
"native_dimension": config.embeddings.native_dimension if gemma else stored_dimension,
"stored_dimension": stored_dimension,
"transform": "truncate-512-l2" if gemma else "identity",
"instructions": "google-search-query-document-v1" if gemma else "none",
}
def require_matching_profile(existing: dict | None, expected: dict, *, legacy_index: bool = False) -> None:
if (existing is None and legacy_index) or (existing is not None and existing != expected):
raise EmbeddingProfileError(
f"Embedding index/profile mismatch: existing={existing!r}, configured={expected!r}. "
"Use a new empty brain/index or explicitly re-index its source texts; "
"existing vectors will not be reused or deleted automatically."
)
|