pub struct EmbeddingIndex {
pub version: u32,
pub dimensions: usize,
pub model_id: Option<String>,
pub entries: Vec<EmbeddingEntry>,
pub file_hashes: HashMap<String, String>,
}Fields§
§version: u32§dimensions: usize§model_id: Option<String>Model identifier that generated these embeddings. Used for mismatch detection when the user switches models.
entries: Vec<EmbeddingEntry>§file_hashes: HashMap<String, String>Implementations§
Source§impl EmbeddingIndex
impl EmbeddingIndex
pub fn new(dimensions: usize) -> Self
Sourcepub fn new_with_model(dimensions: usize, model_id: &str) -> Self
pub fn new_with_model(dimensions: usize, model_id: &str) -> Self
Create a new index tagged with a specific model identity.
Sourcepub fn model_mismatch<'a>(
&'a self,
current_model: &'a str,
) -> Option<(&'a str, &'a str)>
pub fn model_mismatch<'a>( &'a self, current_model: &'a str, ) -> Option<(&'a str, &'a str)>
Check if the index was built with a different model than currently selected.
Returns Some((stored_model, current_model)) on mismatch, None if compatible.
Sourcepub fn dimension_mismatch(&self, engine_dimensions: usize) -> bool
pub fn dimension_mismatch(&self, engine_dimensions: usize) -> bool
Check if index dimensions are incompatible with the current engine.
Sourcepub fn memory_usage_bytes(&self) -> usize
pub fn memory_usage_bytes(&self) -> usize
Approximate heap memory used by this index in bytes.
Sourcepub fn unload(&mut self)
pub fn unload(&mut self)
Drops all in-memory data to free heap. Index can be re-loaded from disk.
Sourcepub fn load_or_new(root: &Path, dimensions: usize) -> Self
pub fn load_or_new(root: &Path, dimensions: usize) -> Self
Load a previously saved index, or create a new empty one.
Sourcepub fn files_needing_update(&self, chunks: &[CodeChunk]) -> Vec<String>
pub fn files_needing_update(&self, chunks: &[CodeChunk]) -> Vec<String>
Determine which files need re-embedding based on content hashes.
Sourcepub fn update(
&mut self,
chunks: &[CodeChunk],
new_embeddings: &[(usize, Vec<f32>)],
changed_files: &[String],
)
pub fn update( &mut self, chunks: &[CodeChunk], new_embeddings: &[(usize, Vec<f32>)], changed_files: &[String], )
Update the index with new embeddings for changed files. Preserves existing embeddings for unchanged files.
Sourcepub fn get_aligned_embeddings(
&self,
chunks: &[CodeChunk],
) -> Option<Vec<Vec<f32>>>
pub fn get_aligned_embeddings( &self, chunks: &[CodeChunk], ) -> Option<Vec<Vec<f32>>>
Get all embeddings in chunk order (aligned with BM25Index.chunks). Returns None if index doesn’t cover all chunks.
pub fn coverage(&self, total_chunks: usize) -> f64
pub fn save(&self, root: &Path) -> Result<()>
pub fn load(root: &Path) -> Option<Self>
Trait Implementations§
Source§impl Clone for EmbeddingIndex
impl Clone for EmbeddingIndex
Source§fn clone(&self) -> EmbeddingIndex
fn clone(&self) -> EmbeddingIndex
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for EmbeddingIndex
impl Debug for EmbeddingIndex
Source§impl<'de> Deserialize<'de> for EmbeddingIndex
impl<'de> Deserialize<'de> for EmbeddingIndex
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for EmbeddingIndex
impl RefUnwindSafe for EmbeddingIndex
impl Send for EmbeddingIndex
impl Sync for EmbeddingIndex
impl Unpin for EmbeddingIndex
impl UnsafeUnpin for EmbeddingIndex
impl UnwindSafe for EmbeddingIndex
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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