Spaces:
Paused
Paused
| 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 | |