Expand description
§semstore
Local semantic search for Rust applications — store text, search by meaning. No cloud required. Embeddings run on-device via ONNX (BGE-Small, ~23 MB).
§Features
| Feature | Default | Description |
|---|---|---|
default-embedder | ✓ | Bundles BGE-Small-EN-v1.5 via fastembed |
bundled-sqlite | ✓ | Statically links SQLite (no system lib needed) |
Disable default-embedder to bring your own model via the Embedder trait.
§Quick start
use semstore::SemanticIndex;
use serde_json::json;
let mut idx = SemanticIndex::open("./index.db")?;
idx.insert("Rust ownership prevents data races at compile time",
json!({ "lang": "rust" }))?;
idx.insert("Python uses reference counting for memory management",
json!({ "lang": "python" }))?;
let results = idx.search("memory safety", 3)?;
for r in &results {
println!("[{:.2}] {}", r.score, r.content);
}§Custom embedder
use semstore::{Embedder, Error, SemanticIndex};
use serde_json::json;
struct OpenAiEmbedder { /* your fields */ }
impl Embedder for OpenAiEmbedder {
fn embed(&self, text: &str) -> Result<Vec<f32>, Error> {
// call OpenAI /v1/embeddings …
Ok(vec![0.0; 1536])
}
fn dimensions(&self) -> usize { 1536 }
}
let mut idx = SemanticIndex::builder()
.embedder(OpenAiEmbedder { /* … */ })
.path("./index.db")
.build()?;Structs§
- BgeEmbedder
- BGE-Small-EN-v1.5 — a fast, accurate 384-dimensional English embedder.
- Builder
- Builder for
SemanticIndex. - Search
Result - A single result returned by
SemanticIndex::search. - Semantic
Index - A local semantic index — store text with metadata and search by meaning.
- Stats
- Statistics about a
SemanticIndex.
Enums§
- Error
- Errors that can occur when using
SemanticIndex.
Traits§
- Embedder
- Converts text into fixed-size embedding vectors.
Type Aliases§
- Result
- Convenience alias for
std::result::Result<T, Error>.