Spaces:
Building
Building
from pydantic import BaseModel | |
from abc import ABC, abstractmethod | |
from typing import Any, Dict, List, Optional, Union | |
class VectorItem(BaseModel): | |
id: str | |
text: str | |
vector: List[float | int] | |
metadata: Any | |
class GetResult(BaseModel): | |
ids: Optional[List[List[str]]] | |
documents: Optional[List[List[str]]] | |
metadatas: Optional[List[List[Any]]] | |
class SearchResult(GetResult): | |
distances: Optional[List[List[float | int]]] | |
class VectorDBBase(ABC): | |
""" | |
Abstract base class for all vector database backends. | |
Implementations of this class provide methods for collection management, | |
vector insertion, deletion, similarity search, and metadata filtering. | |
Any custom vector database integration must inherit from this class and | |
implement all abstract methods. | |
""" | |
def has_collection(self, collection_name: str) -> bool: | |
"""Check if the collection exists in the vector DB.""" | |
pass | |
def delete_collection(self, collection_name: str) -> None: | |
"""Delete a collection from the vector DB.""" | |
pass | |
def insert(self, collection_name: str, items: List[VectorItem]) -> None: | |
"""Insert a list of vector items into a collection.""" | |
pass | |
def upsert(self, collection_name: str, items: List[VectorItem]) -> None: | |
"""Insert or update vector items in a collection.""" | |
pass | |
def search( | |
self, collection_name: str, vectors: List[List[Union[float, int]]], limit: int | |
) -> Optional[SearchResult]: | |
"""Search for similar vectors in a collection.""" | |
pass | |
def query( | |
self, collection_name: str, filter: Dict, limit: Optional[int] = None | |
) -> Optional[GetResult]: | |
"""Query vectors from a collection using metadata filter.""" | |
pass | |
def get(self, collection_name: str) -> Optional[GetResult]: | |
"""Retrieve all vectors from a collection.""" | |
pass | |
def delete( | |
self, | |
collection_name: str, | |
ids: Optional[List[str]] = None, | |
filter: Optional[Dict] = None, | |
) -> None: | |
"""Delete vectors by ID or filter from a collection.""" | |
pass | |
def reset(self) -> None: | |
"""Reset the vector database by removing all collections or those matching a condition.""" | |
pass | |