Skip to content
Docs

Sentence Transformers Embedding Provider

The Sentence Transformers embedding provider implements the embedding.Embedder interface using the HuggingFace Inference API’s feature-extraction pipeline. It supports any Sentence Transformers model hosted on HuggingFace, including the popular all-MiniLM, all-mpnet, and BGE model families.

Choose Sentence Transformers when you need access to the widest selection of community embedding models or when you want to use BGE models that rank competitively on MTEB benchmarks. This provider can also target a self-hosted HuggingFace Text Embeddings Inference (TEI) server for full control over hosting.

Terminal window
go get github.com/lookatitude/beluga-ai/rag/embedding/providers/sentence_transformers
package main
import (
"context"
"fmt"
"log"
"os"
"github.com/lookatitude/beluga-ai/config"
"github.com/lookatitude/beluga-ai/rag/embedding"
_ "github.com/lookatitude/beluga-ai/rag/embedding/providers/sentence_transformers"
)
func main() {
emb, err := embedding.New("sentence_transformers", config.ProviderConfig{
APIKey: os.Getenv("HUGGINGFACE_API_KEY"),
})
if err != nil {
log.Fatal(err)
}
ctx := context.Background()
vec, err := emb.EmbedSingle(ctx, "Beluga AI is a Go framework for agentic systems")
if err != nil {
log.Fatal(err)
}
fmt.Printf("Vector length: %d\n", len(vec))
fmt.Printf("Dimensions: %d\n", emb.Dimensions())
}
ParameterTypeDefaultDescription
APIKeystring(required)HuggingFace API token
Modelstringsentence-transformers/all-MiniLM-L6-v2HuggingFace model ID
BaseURLstringhttps://api-inference.huggingface.coInference API base URL
Timeouttime.Duration0 (no timeout)Request timeout
Options["dimensions"]float64Model-dependentOverride vector dimensions
ModelDefault Dimensions
sentence-transformers/all-MiniLM-L6-v2384
sentence-transformers/all-MiniLM-L12-v2384
sentence-transformers/all-mpnet-base-v2768
sentence-transformers/paraphrase-MiniLM-L6-v2384
BAAI/bge-small-en-v1.5384
BAAI/bge-base-en-v1.5768
BAAI/bge-large-en-v1.51024

Any model on HuggingFace that supports the feature-extraction pipeline can be used.

import (
stemb "github.com/lookatitude/beluga-ai/rag/embedding/providers/sentence_transformers"
)
emb, err := stemb.New(config.ProviderConfig{
APIKey: os.Getenv("HUGGINGFACE_API_KEY"),
Model: "BAAI/bge-large-en-v1.5",
})
if err != nil {
log.Fatal(err)
}

The BGE (BAAI General Embedding) family provides competitive quality at different size tradeoffs:

// Small model -- fast, 384 dimensions
emb, err := embedding.New("sentence_transformers", config.ProviderConfig{
APIKey: os.Getenv("HUGGINGFACE_API_KEY"),
Model: "BAAI/bge-small-en-v1.5",
})
// Large model -- higher quality, 1024 dimensions
emb, err := embedding.New("sentence_transformers", config.ProviderConfig{
APIKey: os.Getenv("HUGGINGFACE_API_KEY"),
Model: "BAAI/bge-large-en-v1.5",
})

Use the BaseURL parameter to point to a self-hosted HuggingFace Text Embeddings Inference (TEI) server:

emb, err := embedding.New("sentence_transformers", config.ProviderConfig{
APIKey: "unused",
BaseURL: "http://localhost:8080",
Model: "sentence-transformers/all-MiniLM-L6-v2",
})