Skip to main content
Encoders are essential components in Semantic Router that transform text (or other data) into numerical representations that capture semantic meaning. These numerical representations, called embeddings, allow the system to measure semantic similarity between texts, which is the core functionality of the routing process.

Understanding Encoders

In Semantic Router, an encoder serves two primary purposes:
  1. Convert utterances from routes into embeddings during initialization
  2. Convert incoming user queries into embeddings during routing
By comparing these embeddings, Semantic Router can determine which route(s) best match the user’s intent, even when the exact wording differs.

Dense vs. Sparse Encoders

Semantic Router supports two main types of encoders:

Dense Encoders

Dense encoders generate embeddings where every dimension has a value, resulting in a “dense” vector. These encoders typically:
  • Produce fixed-size vectors (e.g., 1536 dimensions for OpenAI’s text-embedding-3-small)
  • Capture complex semantic relationships in the text
  • Perform well on tasks requiring understanding of context and meaning
Example usage:

Sparse Encoders

Sparse encoders generate embeddings where most dimensions are zero, with only a few dimensions having non-zero values. These encoders typically:
  • Focus on specific words or tokens in the text
  • Excel at keyword matching and term frequency
  • Can be more interpretable than dense encoders (non-zero dimensions often correspond to specific words)
Example usage:

Hybrid Approaches

Semantic Router also allows combining both dense and sparse encoders in a hybrid approach through the HybridRouter. This can leverage the strengths of both encoding methods:

Supported Encoders

Dense Encoders

Sparse Encoders

Example usage:
  • This encoder uses sentence-transformers >=v5’s SparseEncoder API to generate high-dimensional sparse vectors (e.g., SPLADE, CSR).
  • No API key required; all computation is local (CPU, CUDA, or MPS).
  • You can use any compatible sparse model from the Hugging Face Hub (e.g., naver/splade-v3, mixedbread-ai/mxbai-embed-large-v1, etc.).

Using AutoEncoder

Semantic Router provides an AutoEncoder class that automatically selects the appropriate encoder based on the specified type:

Considerations for Choosing an Encoder

When selecting an encoder for your application, consider:
  1. Accuracy: Dense encoders typically provide better semantic understanding but may miss exact keyword matches
  2. Speed: Local encoders are faster but may be less accurate than cloud-based ones
  3. Cost: Cloud-based encoders (OpenAI, Cohere, Aurelio AI) incur API costs
  4. Privacy: Local encoders keep data within your environment
  5. Use case: Hybrid approaches may work best for balanced retrieval
For more detailed information on specific encoders, refer to their respective documentation pages.