| Crates.io | ix-embeddings |
| lib.rs | ix-embeddings |
| version | 0.1.0 |
| created_at | 2026-01-25 18:00:10.698691+00 |
| updated_at | 2026-01-25 18:00:10.698691+00 |
| description | Shared embedding infrastructure for Ixchel with pluggable providers |
| homepage | |
| repository | https://github.com/kevinmichaelchen/ixchel |
| max_upload_size | |
| id | 2069201 |
| size | 174,111 |
Shared embedding infrastructure for Ixchel with pluggable providers.
Multiple Ixchel tools need semantic embeddings:
Embedder so each tool doesn't reinvent embedding
logic.use ix_embeddings::Embedder;
// Create embedder (uses config from ~/.ixchel/config/config.toml and .ixchel/config.toml)
let embedder = Embedder::new()?;
// Embed single text
let embedding = embedder.embed("How to handle authentication?")?;
assert_eq!(embedding.len(), embedder.dimension());
// Embed batch (more efficient)
let embeddings = embedder.embed_batch(&[
"First document",
"Second document",
])?;
Enable providers via Cargo features:
| Provider | Feature | GPU Support | Notes |
|---|---|---|---|
| fastembed | fastembed (default) |
CPU only | ONNX Runtime, fast startup |
| candle | candle |
Metal/CUDA | Hugging Face models, GPU acceleration |
# Default (fastembed only)
ix-embeddings = { path = "..." }
# Candle with Metal (macOS)
ix-embeddings = { path = "...", features = ["candle", "metal"] }
# Candle with CUDA (Linux/Windows)
ix-embeddings = { path = "...", features = ["candle", "cuda"] }
# Both providers
ix-embeddings = { path = "...", features = ["fastembed", "candle"] }
Configure via ~/.ixchel/config/config.toml:
[embedding]
provider = "fastembed" # or "candle"
model = "BAAI/bge-small-en-v1.5" # HuggingFace model ID
batch_size = 32 # Batch size for embed_batch
dimension = 384 # Optional (auto-detected)
BAAI/bge-small-en-v1.5 (default, 384 dimensions)BAAI/bge-base-en-v1.5 (768 dimensions)sentence-transformers/all-MiniLM-L6-v2 (384 dimensions)See fastembed docs for full model list.
Any BERT-based model from Hugging Face Hub:
| Model | Params | Dims | Notes |
|---|---|---|---|
sentence-transformers/all-MiniLM-L6-v2 |
22M | 384 | Fastest, good quality |
BAAI/bge-small-en-v1.5 |
33M | 384 | Better retrieval |
BAAI/bge-base-en-v1.5 |
109M | 768 | Higher quality |
BAAI/bge-large-en-v1.5 |
335M | 1024 | Best quality (recommended with GPU) |
For highest quality with Metal GPU acceleration:
[embedding]
provider = "candle"
model = "BAAI/bge-large-en-v1.5"
| Tool | Use Case |
|---|---|
| Ixchel | Semantic search over knowledge |
| demo-got | Example usage + benchmarking |
MIT