Spaces:
Paused
Paused
File size: 1,529 Bytes
2fd8a33 927e5fe 2fd8a33 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | """Abstract interface for vector database operations."""
from typing import Any, Protocol
class VectorDatabase(Protocol):
"""Protocol defining the interface for vector database operations."""
def upsert(self, vectors: list[dict[str, Any]], batch_size: int = 100) -> dict[str, Any]:
"""
Upsert vectors to the database.
Args:
vectors: List of dicts with {id, values, metadata}
batch_size: Number of vectors per batch
Returns:
Dict with at least:
- batches: Number of batches processed
- total_vectors: Number of input vectors
Implementations may include additional fields like:
- upserted_count: Actual count from database (may differ if errors occur)
"""
...
def query(
self,
vector: list[float],
top_k: int = 5,
filter: dict[str, Any] | None = None,
include_metadata: bool = True,
) -> dict[str, Any]:
"""
Query database for similar vectors.
Args:
vector: Query embedding vector
top_k: Number of results to return
filter: Metadata filter
include_metadata: Include metadata in response
Returns:
Query results from database
"""
...
def delete_all(self) -> None:
"""Delete all vectors from the database."""
...
def get_stats(self) -> dict[str, Any]:
"""Get database statistics."""
...
|