| 123456789101112131415161718192021222324252627282930313233343536 |
- import numpy as np
- from qdrant_client.http.models import SparseVector
- def empty_sparse_vector() -> SparseVector:
- return SparseVector(
- indices=[],
- values=[],
- )
- def validate_sparse_vector(vector: SparseVector) -> None:
- assert len(vector.indices) == len(
- vector.values
- ), "Indices and values must have the same length"
- assert not np.isnan(vector.values).any(), "Values must not contain NaN"
- assert len(vector.indices) == len(set(vector.indices)), "Indices must be unique"
- def is_sorted(vector: SparseVector) -> bool:
- for i in range(1, len(vector.indices)):
- if vector.indices[i] < vector.indices[i - 1]:
- return False
- return True
- def sort_sparse_vector(vector: SparseVector) -> SparseVector:
- if is_sorted(vector):
- return vector
- sorted_indices = np.argsort(vector.indices)
- return SparseVector(
- indices=[vector.indices[i] for i in sorted_indices],
- values=[vector.values[i] for i in sorted_indices],
- )
|