From 138468da3aabfcb6b6febc43f6d287e179f19ca9 Mon Sep 17 00:00:00 2001 From: Kishan Goli Date: Fri, 15 May 2026 13:19:17 -0700 Subject: [PATCH] abstract engine away from flatindex --- src/api/handlers.rs | 1 - src/engine.rs | 9 +++++---- src/state.rs | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/api/handlers.rs b/src/api/handlers.rs index 8f49e88..cd9b94b 100644 --- a/src/api/handlers.rs +++ b/src/api/handlers.rs @@ -2,7 +2,6 @@ use axum::{extract::State, Json}; use crate::{ api::response::{bad_request, ApiError, ApiResult}, - engine::VectorEngine, models::{ DeleteRequest, InsertRequest, MessageResponse, SearchRequest, SearchResponse, }, diff --git a/src/engine.rs b/src/engine.rs index cfacc0c..95fb00c 100644 --- a/src/engine.rs +++ b/src/engine.rs @@ -4,6 +4,7 @@ pub trait VectorEngine { fn insert(&mut self, id: String, vector: Vec); fn search(&self, query: Vec, k: usize) -> Vec; fn delete(&mut self, id: &str); + fn dimension(&self) -> Option; } #[derive(Default)] @@ -15,10 +16,6 @@ impl FlatIndex { pub fn new() -> Self { Self::default() } - - pub fn dimension(&self) -> Option { - self.vectors.first().map(|(_, vector)| vector.len()) - } } impl VectorEngine for FlatIndex { @@ -45,6 +42,10 @@ impl VectorEngine for FlatIndex { fn delete(&mut self, id: &str) { self.vectors.retain(|(stored_id, _)| stored_id != id); } + + fn dimension(&self) -> Option { + self.vectors.first().map(|(_, vector)| vector.len()) + } } fn cosine_similarity(left: &[f32], right: &[f32]) -> f32 { diff --git a/src/state.rs b/src/state.rs index ac3c248..9dd4b03 100644 --- a/src/state.rs +++ b/src/state.rs @@ -1,16 +1,16 @@ use std::sync::{Arc, Mutex}; -use crate::engine::FlatIndex; +use crate::engine::{FlatIndex, VectorEngine}; #[derive(Clone)] pub struct AppState { - pub engine: Arc>, + pub engine: Arc>>, } impl AppState { pub fn new() -> Self { Self { - engine: Arc::new(Mutex::new(FlatIndex::new())), + engine: Arc::new(Mutex::new(Box::new(FlatIndex::new()))), } } }