RICS / app /embeddings /base.py
StormShadow308's picture
- Replaced timezone.utc with UTC from datetime for consistent datetime handling.
faa8fb3
Raw
History Blame Contribute Delete
1.42 kB
"""Abstract base class for all embedding clients."""
from abc import ABC, abstractmethod
class EmbeddingClient(ABC):
"""Interface for obtaining dense vector representations of text.
Implementors must provide both single and batched variants. The batched
variant should be preferred for throughput when indexing many chunks.
Example::
client = MockEmbeddingClient()
vector = client.get_embedding("hello world")
vectors = client.get_embeddings(["hello", "world"])
"""
@abstractmethod
def get_embedding(self, text: str) -> list[float]:
"""Return the embedding vector for a single text string.
Args:
text: Input text (should be ≤ model token limit).
Returns:
Dense float vector of the model's output dimensionality.
"""
...
@abstractmethod
def get_embeddings(self, texts: list[str]) -> list[list[float]]:
"""Return embedding vectors for a batch of text strings.
Args:
texts: List of input strings.
Returns:
List of dense float vectors in the same order as ``texts``.
"""
...
@property
@abstractmethod
def dimension(self) -> int:
"""The output dimensionality of the embedding model.
Returns:
Integer vector dimension (e.g. 1536 for text-embedding-3-small).
"""
...