pub struct VectorStore {
pub name_to_id: Arc<DashMap<String, EntityId>>,
pub id_to_name: Arc<DashMap<EntityId, String>>,
pub dims: u32,
pub count: AtomicUsize,
pub db_path: PathBuf,
/* private fields */
}Fields§
§name_to_id: Arc<DashMap<String, EntityId>>§id_to_name: Arc<DashMap<EntityId, String>>§dims: u32§count: AtomicUsize§db_path: PathBufImplementations§
Source§impl VectorStore
impl VectorStore
Sourcepub fn new(db_path: &Path, dims: u32) -> Result<Self>
pub fn new(db_path: &Path, dims: u32) -> Result<Self>
Open a store with the default HNSW configuration for dims.
Sourcepub fn with_config(db_path: &Path, cfg: &VectorConfig) -> Result<Self>
pub fn with_config(db_path: &Path, cfg: &VectorConfig) -> Result<Self>
Open a store with an explicit HNSW configuration.
pub fn upsert_embedding( &self, entity_name: &str, embedding: &[f32], model: &str, ) -> Result<()>
pub fn delete_embedding(&self, entity_name: &str) -> Result<bool>
pub fn search_embeddings( &self, query: &[f32], top_k: usize, ) -> Result<Vec<(EntityId, f32)>>
pub fn search_entities_json( &self, query: &[f32], top_k: usize, entity_type_filter: Option<&str>, ) -> Result<String>
pub fn build_search_response_json(&self, results: &[(EntityId, f32)]) -> String
pub fn rebuild_graph_cache(&self) -> Result<()>
pub fn graph_node_count(&self) -> usize
pub fn graph_edge_count(&self) -> usize
pub fn get_entity_type(&self, entity_id: EntityId) -> Result<Option<String>>
pub fn count(&self) -> usize
pub const fn dims(&self) -> u32
Sourcepub fn index_memory_bytes(&self) -> usize
pub fn index_memory_bytes(&self) -> usize
Approximate resident RAM used by the ANN index, in bytes.
Sourcepub fn index_memory_breakdown(&self) -> (usize, usize)
pub fn index_memory_breakdown(&self) -> (usize, usize)
Breakdown of index RAM into (graph_bytes, vectors_bytes). IVF has no graph
component, so its graph_bytes is 0.
Sourcepub fn index_capacity(&self) -> usize
pub fn index_capacity(&self) -> usize
Current allocated capacity of the index (number of vectors it can hold before the next reservation).
Sourcepub const fn index_kind(&self) -> IndexKind
pub const fn index_kind(&self) -> IndexKind
The active ANN backend.
Sourcepub fn reindex(&self) -> Result<()>
pub fn reindex(&self) -> Result<()>
Rebuild the ANN index structure: retrains the IVF centroids over the current vectors (no-op for HNSW). Call after large batch ingestion to keep IVF recall high.
Sourcepub fn entity_id_of(&self, name: &str) -> Result<Option<EntityId>>
pub fn entity_id_of(&self, name: &str) -> Result<Option<EntityId>>
Resolve a live entity id by name (cache first, then the KG table).
Sourcepub fn get_embedding_by_id(&self, id: EntityId) -> Result<Option<Vec<f32>>>
pub fn get_embedding_by_id(&self, id: EntityId) -> Result<Option<Vec<f32>>>
Fetch the stored embedding for an entity id, if any.
Sourcepub fn get_embedding_by_name(
&self,
name: &str,
) -> Result<Option<(EntityId, Vec<f32>, String)>>
pub fn get_embedding_by_name( &self, name: &str, ) -> Result<Option<(EntityId, Vec<f32>, String)>>
Fetch (entity_id, embedding, model) for an entity by name.
Sourcepub fn resolve_name_type(&self, id: EntityId) -> (String, String)
pub fn resolve_name_type(&self, id: EntityId) -> (String, String)
Resolve an entity id to (name, entityType), preferring the in-memory name
cache and reading the type from the KG.
Sourcepub fn search_resolved(
&self,
query: &[f32],
top_k: usize,
entity_type: Option<&str>,
exclude: &HashSet<EntityId>,
) -> Result<Vec<(EntityId, String, String, f32)>>
pub fn search_resolved( &self, query: &[f32], top_k: usize, entity_type: Option<&str>, exclude: &HashSet<EntityId>, ) -> Result<Vec<(EntityId, String, String, f32)>>
k-NN that returns resolved (id, name, entityType, distance), optionally
filtered by entity_type and excluding exclude ids. Over-fetches to
compensate for filtered-out rows.
pub fn invalidate_entity_cache(&self, names: &[String])
pub fn name_to_id(&self) -> &DashMap<String, EntityId>
pub fn id_to_name(&self) -> &DashMap<EntityId, String>
Auto Trait Implementations§
impl !Freeze for VectorStore
impl !RefUnwindSafe for VectorStore
impl !UnwindSafe for VectorStore
impl Send for VectorStore
impl Sync for VectorStore
impl Unpin for VectorStore
impl UnsafeUnpin for VectorStore
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more