forked from HSE_team/BetterCallPraskovia
32 lines
905 B
Python
32 lines
905 B
Python
"""
|
||
Интерфейс репозитория/хранилища векторов
|
||
"""
|
||
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
|
||
|