"""**Embeddings** interface.""" from abc import ABC, abstractmethod from typing import List from langchain_core.runnables.config import run_in_executor class Embeddings(ABC): """Interface for embedding models.""" @abstractmethod def embed_documents(self, texts: List[str]) -> List[List[float]]: """Embed search docs.""" @abstractmethod def embed_query(self, text: str) -> List[float]: """Embed query text.""" async def aembed_documents(self, texts: List[str]) -> List[List[float]]: """Asynchronous Embed search docs.""" return await run_in_executor(None, self.embed_documents, texts) async def aembed_query(self, text: str) -> List[float]: """Asynchronous Embed query text.""" return await run_in_executor(None, self.embed_query, text)