Skip to main content

Voyage Provider

Voyage provides high-quality embedding and reranking models optimized for retrieval workflows.

Setup​

import (
goprovider "github.com/digitallysavvy/go-ai/pkg/provider"
"github.com/digitallysavvy/go-ai/pkg/providers/voyage"
)

voyageProvider := voyage.New(voyage.Config{
APIKey: os.Getenv("VOYAGE_API_KEY"),
})

Embeddings​

embeddingModel, _ := voyageProvider.EmbeddingModel(voyage.ModelVoyage3Large)
result, err := embeddingModel.DoEmbedMany(ctx, []string{
"Go is a statically typed language",
"Vector search uses embeddings",
}, nil)

Embedding Options​

Voyage-specific options are passed under the voyage provider-options key and serialized to the Voyage API field names.

result, err := embeddingModel.DoEmbedMany(ctx, []string{"search text"}, &goprovider.EmbedModelOptions{
ProviderOptions: map[string]interface{}{
"voyage": map[string]interface{}{
"inputType": "query",
"truncation": true,
"outputDimension": 1024,
"outputDtype": "float",
},
},
})

Reranking​

import (
goprovider "github.com/digitallysavvy/go-ai/pkg/provider"
"github.com/digitallysavvy/go-ai/pkg/providers/voyage"
)

voyageProvider := voyage.New(voyage.Config{
APIKey: os.Getenv("VOYAGE_API_KEY"),
})

rerankModel, _ := voyageProvider.RerankingModel(voyage.ModelRerank25)
topN := 3
result, err := rerankModel.DoRerank(ctx, &goprovider.RerankOptions{
Query: "go concurrency",
Documents: []string{
"Goroutines are lightweight threads.",
"SQL joins combine rows from tables.",
"Channels coordinate goroutines.",
},
TopN: &topN,
})

Reranking Options​

result, err := rerankModel.DoRerank(ctx, &goprovider.RerankOptions{
Query: "go concurrency",
Documents: []string{"Goroutines are lightweight.", "SQL joins tables."},
TopN: &topN,
ProviderOptions: map[string]interface{}{
"voyage": map[string]interface{}{
"returnDocuments": true,
"truncation": true,
},
},
})

Model IDs​

Embeddings​

  • voyage.ModelVoyage4Large (voyage-4-large)
  • voyage.ModelVoyage4 (voyage-4)
  • voyage.ModelVoyage4Lite (voyage-4-lite)
  • voyage.ModelVoyage4Nano (voyage-4-nano)
  • voyage.ModelVoyageCode35 (voyage-code-3.5)
  • voyage.ModelVoyageCode3 (voyage-code-3)
  • voyage.ModelVoyage3Large (voyage-3-large)
  • voyage.ModelVoyage35 (voyage-3.5)
  • voyage.ModelVoyage35Lite (voyage-3.5-lite)
  • voyage.ModelVoyage3 (voyage-3)
  • voyage.ModelVoyage3Lite (voyage-3-lite)
  • voyage.ModelVoyageFinance2 (voyage-finance-2)
  • voyage.ModelVoyageLaw2 (voyage-law-2)
  • voyage.ModelVoyageMultilingual2 (voyage-multilingual-2)
  • voyage.ModelVoyageCode2 (voyage-code-2)
  • voyage.ModelVoyage2 (voyage-2)

Reranking​

  • voyage.ModelRerank25 (rerank-2.5)
  • voyage.ModelRerank25Lite (rerank-2.5-lite)
  • voyage.ModelRerank2 (rerank-2)
  • voyage.ModelRerank2Lite (rerank-2-lite)
  • voyage.ModelRerank1 (rerank-1)
  • voyage.ModelRerankLite1 (rerank-lite-1)

Notes​

  • Default base URL: https://api.voyageai.com/v1
  • Auth header: Authorization: Bearer $VOYAGE_API_KEY
  • Embedding endpoint: POST /embeddings
  • Reranking endpoint: POST /rerank
  • Provider identities match the TypeScript SDK: voyage.embedding and voyage.reranking
  • Embedding requests are limited to 128 inputs per call to match the TypeScript SDK.

Workflow Serialization​

Voyage embedding models can cross a workflow boundary with provider.SerializeEmbeddingModel / DeserializeEmbeddingModel. See Provider Serialization for the mechanism; reranking models are not yet serializable.

May 2026 parity updates​

Voyage is a full provider in this release with embedding and reranking support. Provider-specific options live under the voyage provider-options key. Embedding options include inputType, truncation, outputDimension, and outputDtype; reranking options include returnDocuments and truncation.