Skip to content

Embedding Configuration

Configure embedding providers for semantic search and similarity features.

Add to ~/.config/crucible/config.toml:

[embedding]
provider = "fastembed"
model = "all-MiniLM-L6-v2"
batch_size = 32

Fast local embeddings with no API needed:

[embedding]
provider = "fastembed"
model = "all-MiniLM-L6-v2"

Available models:

  • all-MiniLM-L6-v2 - Fast, good quality (default)
  • nomic-embed-text-v1.5 - Higher quality, slower

Advantages:

  • No API key needed
  • Works offline
  • Fast for batch processing
  • Free

Use Ollama’s embedding models:

[embedding]
provider = "ollama"
model = "nomic-embed-text"
endpoint = "http://localhost:11434"

Available models:

  • nomic-embed-text - Good general purpose
  • mxbai-embed-large - Higher quality

Setup:

Terminal window
ollama pull nomic-embed-text

Use OpenAI’s embedding API:

[embedding]
provider = "openai"
model = "text-embedding-3-small"

Environment variable:

Terminal window
export OPENAI_API_KEY=your-api-key

Available models:

  • text-embedding-3-small - Fast, cost-effective
  • text-embedding-3-large - Highest quality

Number of texts to embed at once:

[embedding]
batch_size = 32

Larger batches are faster but use more memory.

Custom API endpoint:

[embedding]
endpoint = "http://localhost:11434" # Ollama

Different models produce different vector dimensions:

ModelDimensions
all-MiniLM-L6-v2384
nomic-embed-text-v1.5768
text-embedding-3-small1536
text-embedding-3-large3072

Higher dimensions may provide better quality but use more storage.

Embeddings are generated during cru process:

Terminal window
# Process with current config
cru process
# Force regenerate all embeddings
cru process --force

Embeddings are stored in the local database (SQLite by default) at:

<kiln_path>/.crucible/crucible-sqlite.db

Changing embedding provider requires reprocessing with --force.

[embedding]
provider = "fastembed"
model = "all-MiniLM-L6-v2"
batch_size = 32

No setup required.

[embedding]
provider = "ollama"
model = "nomic-embed-text"
endpoint = "http://localhost:11434"

Requires Ollama with model installed.

[embedding]
provider = "openai"
model = "text-embedding-3-small"
batch_size = 100

Faster with larger batches, but costs per API call.

[embedding]
provider = "fastembed"
model = "all-MiniLM-L6-v2"
batch_size = 8 # Lower memory usage

For Ollama, check it’s running:

Terminal window
ollama list

Increase batch size:

[embedding]
batch_size = 64

Or use a faster model:

[embedding]
provider = "fastembed"
model = "all-MiniLM-L6-v2"

Decrease batch size:

[embedding]
batch_size = 8

Reprocess to regenerate embeddings:

Terminal window
cru process --force

Source code: crates/crucible-llm/src/embeddings/

Providers:

  • crates/crucible-llm/src/embeddings/fastembed.rs
  • crates/crucible-llm/src/embeddings/ollama.rs
  • crates/crucible-llm/src/embeddings/openai.rs
  • :h config.llm - LLM configuration
  • :h search - Using semantic search
  • process - Processing reference