use crate::segment::common::memory_usage::{ComponentMemoryUsage, FileStorageIntent, MemoryReporter};
use crate::segment::index::vector_index_base::{VectorIndex as _, VectorIndexEnum, VectorIndexRead as _};
impl MemoryReporter for VectorIndexEnum {
fn memory_usage(&self) -> ComponentMemoryUsage {
match self {
VectorIndexEnum::Plain(_) => ComponentMemoryUsage::empty(),
VectorIndexEnum::Hnsw(index) => {
let intent = if index.is_on_disk() {
FileStorageIntent::OnDisk
} else {
FileStorageIntent::Cached
};
ComponentMemoryUsage::from_files(index.files(), intent)
}
VectorIndexEnum::SparseRam(index) => ComponentMemoryUsage::from_files_and_ram(
index.files(),
FileStorageIntent::OnDisk,
index.size_of_searchable_vectors_in_bytes() as u64,
),
VectorIndexEnum::SparseCompressedImmutableRamF32(index) => {
ComponentMemoryUsage::from_files_and_ram(
index.files(),
FileStorageIntent::OnDisk,
index.size_of_searchable_vectors_in_bytes() as u64,
)
}
VectorIndexEnum::SparseCompressedImmutableRamF16(index) => {
ComponentMemoryUsage::from_files_and_ram(
index.files(),
FileStorageIntent::OnDisk,
index.size_of_searchable_vectors_in_bytes() as u64,
)
}
VectorIndexEnum::SparseCompressedImmutableRamU8(index) => {
ComponentMemoryUsage::from_files_and_ram(
index.files(),
FileStorageIntent::OnDisk,
index.size_of_searchable_vectors_in_bytes() as u64,
)
}
VectorIndexEnum::SparseCompressedMmapF32(index) => {
ComponentMemoryUsage::from_files(index.files(), FileStorageIntent::OnDisk)
}
VectorIndexEnum::SparseCompressedMmapF16(index) => {
ComponentMemoryUsage::from_files(index.files(), FileStorageIntent::OnDisk)
}
VectorIndexEnum::SparseCompressedMmapU8(index) => {
ComponentMemoryUsage::from_files(index.files(), FileStorageIntent::OnDisk)
}
}
}
}