VoyageAI
Features 🔥
Fully generated C# SDK based on official Voyage AI OpenAPI specification using AutoSDK
Same day update to support new features
Updated and supported automatically if there are no breaking changes
All modern .NET features - nullability, trimming, NativeAOT, etc.
Microsoft.Extensions.AI IEmbeddingGenerator support
Usage
using VoyageAI ;
using var client = new VoyageAIClient ( apiKey );
Microsoft.Extensions.AI
The SDK implements IEmbeddingGenerator :
using VoyageAI ;
using Microsoft.Extensions.AI ;
IEmbeddingGenerator < string , Embedding < float >> generator = new VoyageAIClient ( apiKey );
var embeddings = await generator . GenerateAsync (
["Hello, world!"] ,
new EmbeddingGenerationOptions { ModelId = "voyage-3" });
Console . WriteLine ( $"Embedding dimension: {embeddings[0].Vector.Length}" );
Embedding Generator Generate Async
using var client = GetAuthorizedApi ();
IEmbeddingGenerator < string , Embedding < float >> generator = client ;
var embeddings = await generator . GenerateAsync (
["Hello, world!"] ,
new EmbeddingGenerationOptions
{
ModelId = "voyage-3-lite" ,
});
using var client = new VoyageAIClient ( "test-api-key" );
IEmbeddingGenerator < string , Embedding < float >> generator = client ;
var metadata = generator . GetService < EmbeddingGeneratorMetadata > ();
Embedding Generator Get Service Returns Self
using var client = new VoyageAIClient ( "test-api-key" );
IEmbeddingGenerator < string , Embedding < float >> generator = client ;
var self = generator . GetService < VoyageAIClient > ();
Embeddings
using var client = GetAuthorizedApi ();
var response = await client . EmbeddingsApiAsync (
input : "Hello, world!" ,
model : "voyage-3-lite" );
Multimodal Embeddings Text And Image Url
1
2
3
4
5
6
7
8
9
10
11
12 using var client = GetAuthorizedApi ();
var inputs = new List < MultimodalInput >
{
new (
MultimodalContent . Text ( "This is a banana." ),
MultimodalContent . ImageUrl ( "https://raw.githubusercontent.com/voyage-ai/voyage-multimodal-3/refs/heads/main/images/banana.jpg" )),
};
var response = await client . MultimodalEmbeddingsAsync (
inputs : inputs ,
model : "voyage-multimodal-3" );
Multimodal Embeddings Text Only
using var client = GetAuthorizedApi ();
var inputs = new List < MultimodalInput >
{
new ( MultimodalContent . Text ( "Hello, world!" )),
};
var response = await client . MultimodalEmbeddingsAsync (
inputs : inputs ,
model : "voyage-multimodal-3" );
Reranking
1
2
3
4
5
6
7
8
9
10
11
12 using var client = GetAuthorizedApi ();
var response = await client . RerankerApiAsync (
query : "What is the capital of France?" ,
documents : [
"Paris is the capital of France." ,
"Berlin is the capital of Germany." ,
"London is the capital of the United Kingdom." ,
],
model : "rerank-2-lite" ,
topK : 2 ,
returnDocuments : true );
Support
Priority place for bugs: https://github.com/tryAGI/VoyageAI/issues
Priority place for ideas and general questions: https://github.com/tryAGI/VoyageAI/discussions
Discord: https://discord.gg/Ca2xhfBf3v
Acknowledgments
This project is supported by JetBrains through the Open Source Support Program .