feat(embedding): expose model_version on dense and sparse embedder ports
Why: - ADR-0001's Qdrant payload records embedding_model_version so a future model swap can identify which chunks need re-embedding. The embedder is what knows which model produced its vectors, so it reports this rather than the call site reconstructing it from settings. Changes: - DenseEmbedder/SparseEmbedder protocols gain a model_version: str attribute. - OpenAICompatibleEmbedder reports its configured model; Bm25SparseEmbedder reports its analyzer (bm25-<analyzer>).
This commit is contained in:
@@ -29,6 +29,7 @@ class FakeDenseEmbedder:
|
||||
|
||||
name: str
|
||||
dimensions: int = 4
|
||||
model_version: str = "fake-dense-v1"
|
||||
calls: list[list[str]] = field(default_factory=list)
|
||||
fail_next: bool = False
|
||||
delay_seconds: float = 0.0
|
||||
@@ -49,6 +50,7 @@ class FakeSparseEmbedder:
|
||||
"""A scripted `SparseEmbedder`. Returns an empty sparse vector per text."""
|
||||
|
||||
name: str = "sparse"
|
||||
model_version: str = "fake-sparse-v1"
|
||||
calls: list[list[str]] = field(default_factory=list)
|
||||
fail_next: bool = False
|
||||
|
||||
@@ -58,3 +60,4 @@ class FakeSparseEmbedder:
|
||||
self.fail_next = False
|
||||
raise RuntimeError("simulated embedder failure")
|
||||
return [SparseVector(indices=[], values=[]) for _ in texts]
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@ class _TrackingDenseEmbedder:
|
||||
"""
|
||||
|
||||
name: str
|
||||
model_version: str = "stub-v1"
|
||||
dimensions: int = 3
|
||||
batches: list[list[str]] = field(default_factory=list)
|
||||
in_flight: int = 0
|
||||
@@ -54,6 +55,7 @@ class _TrackingDenseEmbedder:
|
||||
@dataclass
|
||||
class _FailingDenseEmbedder:
|
||||
name: str
|
||||
model_version: str = "stub-v1"
|
||||
|
||||
async def embed_batch(self, texts: Sequence[str]) -> list[list[float]]:
|
||||
raise RuntimeError("boom")
|
||||
@@ -62,6 +64,7 @@ class _FailingDenseEmbedder:
|
||||
@dataclass
|
||||
class _StubSparseEmbedder:
|
||||
name: str = "sparse"
|
||||
model_version: str = "stub-sparse-v1"
|
||||
calls: list[list[str]] = field(default_factory=list)
|
||||
|
||||
def embed_batch(self, texts: Sequence[str], *, query: bool = False) -> list[SparseVector]:
|
||||
@@ -72,6 +75,7 @@ class _StubSparseEmbedder:
|
||||
@dataclass
|
||||
class _FailingSparseEmbedder:
|
||||
name: str = "sparse"
|
||||
model_version: str = "stub-sparse-v1"
|
||||
|
||||
def embed_batch(self, texts: Sequence[str], *, query: bool = False) -> list[SparseVector]:
|
||||
raise RuntimeError("boom")
|
||||
|
||||
Reference in New Issue
Block a user