mirror of
https://github.com/samvallad33/vestige.git
synced 2026-05-08 23:32:37 +02:00
fix: add explicit embedding initialization with error logging
When embeddings fail to initialize in the MCP server context (e.g., due to working directory issues), the error was silently swallowed and smart_ingest would fall back to regular ingest without explanation. Changes: - Add init_embeddings() method to Storage for explicit initialization - Initialize embeddings at MCP server startup with error logging - Add check_ready() method to EmbeddingService for error access - Log warning when is_ready() returns false Now users will see clear error messages like: "Failed to initialize embedding service: ..." "Hint: Check FASTEMBED_CACHE_PATH or ensure ~/.fastembed_cache exists" Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
6ccbc7d2c0
commit
f10367ecd0
3 changed files with 40 additions and 2 deletions
|
|
@ -186,7 +186,18 @@ impl EmbeddingService {
|
|||
|
||||
/// Check if the model is ready
|
||||
pub fn is_ready(&self) -> bool {
|
||||
get_model().is_ok()
|
||||
match get_model() {
|
||||
Ok(_) => true,
|
||||
Err(e) => {
|
||||
tracing::warn!("Embedding model not ready: {}", e);
|
||||
false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Check if the model is ready and return the error if not
|
||||
pub fn check_ready(&self) -> Result<(), EmbeddingError> {
|
||||
get_model().map(|_| ())
|
||||
}
|
||||
|
||||
/// Initialize the model (downloads if necessary)
|
||||
|
|
|
|||
|
|
@ -1072,6 +1072,20 @@ impl Storage {
|
|||
false
|
||||
}
|
||||
|
||||
/// Initialize the embedding service explicitly
|
||||
/// Call this at startup to catch initialization errors early
|
||||
#[cfg(feature = "embeddings")]
|
||||
pub fn init_embeddings(&mut self) -> Result<()> {
|
||||
self.embedding_service.init().map_err(|e| {
|
||||
StorageError::Init(format!("Embedding service initialization failed: {}", e))
|
||||
})
|
||||
}
|
||||
|
||||
#[cfg(not(feature = "embeddings"))]
|
||||
pub fn init_embeddings(&mut self) -> Result<()> {
|
||||
Ok(()) // No-op when embeddings feature is disabled
|
||||
}
|
||||
|
||||
/// Get query embedding from cache or compute it
|
||||
#[cfg(feature = "embeddings")]
|
||||
fn get_query_embedding(&self, query: &str) -> Result<Vec<f32>> {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue