Expand description
Semantic search via embeddings.
This module provides embedding generation and vector similarity search for semantic code search. It supports multiple embedding providers:
- OpenAI: Uses text-embedding-3-small for high-quality embeddings
- Local: Uses fastembed for local, offline embeddings
§Architecture
Embeddings are stored in SQLite as JSON-encoded float arrays. Similarity search is performed in Rust using cosine similarity for accuracy and portability (no native vector extensions required).
§Usage
ⓘ
let provider = OpenAIProvider::new("sk-...")?;
let embedding = provider.embed("fn authenticate(user: &str)")?;
let results = search_similar(&db, "authentication functions", 10)?;Re-exports§
pub use local::LocalProvider;pub use openai::OpenAIProvider;
Modules§
Structs§
- Embedding
- A vector embedding.
- Search
Result - Search result from similarity search.
Constants§
- LOCAL_
EMBEDDING_ DIM - OPENAI_
EMBEDDING_ DIM - Embedding dimension for different models
Traits§
- Embedding
Provider - Trait for embedding providers.
Functions§
- cosine_
similarity - Compute cosine similarity between two vectors.
- dot_
product - Compute dot product similarity between two vectors.
- embed_
missing_ symbols - Embed all symbols that don’t have embeddings yet.
- normalize
- Normalize a vector to unit length.
- semantic_
search - Perform semantic similarity search using embeddings.