mirror of
				https://github.com/hwchase17/langchain.git
				synced 2025-10-31 07:41:40 +00:00 
			
		
		
		
	- Any direct usage of ThreadPoolExecutor or asyncio.run_in_executor needs manual handling of context vars
		
			
				
	
	
		
			25 lines
		
	
	
		
			787 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			787 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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)
 |