""" Интерфейс репозитория/хранилища векторов """ from abc import ABC, abstractmethod from typing import Sequence from uuid import UUID from src.domain.entities.chunk import DocumentChunk class IVectorRepository(ABC): @abstractmethod async def upsert_chunks( self, chunks: Sequence[DocumentChunk], embeddings: Sequence[list[float]], model_version: str, ) -> None: """Сохранить или обновить вектора чанков""" raise NotImplementedError @abstractmethod async def search( self, query_embedding: list[float], collection_id: UUID, limit: int = 20, ) -> list[tuple[DocumentChunk, float]]: """Поиск ближайших чанков по коллекции с расстоянием""" raise NotImplementedError