Skip to content

tryAGI/VoyageAI

VoyageAI

Nuget package dotnet License: MIT Discord

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",
    });

Embedding Generator Get Service Returns Metadata

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

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

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

JetBrains logo

This project is supported by JetBrains through the Open Source Support Program.

About

C# SDK for the Voyage AI API -- text embeddings, multimodal embeddings, and reranking

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors