usingMicrosoft.Extensions.AI;usingVoyageAI;IEmbeddingGenerator<string,Embedding<float>>generator=newVoyageAIClient(apiKey:Environment.GetEnvironmentVariable("VOYAGEAI_API_KEY")!);vartexts=new[]{"The quick brown fox jumps over the lazy dog.","Machine learning is a subset of artificial intelligence.","Embeddings represent text as numerical vectors.",};varembeddings=awaitgenerator.GenerateAsync(texts,newEmbeddingGenerationOptions{ModelId="voyage-3"});Console.WriteLine($"Generated {embeddings.Count} embeddings");Console.WriteLine($"Total tokens: {embeddings.Usage?.TotalTokenCount}");
Custom Dimensions
Voyage models support custom output dimensions via EmbeddingGenerationOptions.Dimensions:
1 2 3 4 5 6 7 8 910111213141516
usingMicrosoft.Extensions.AI;usingVoyageAI;IEmbeddingGenerator<string,Embedding<float>>generator=newVoyageAIClient(apiKey:Environment.GetEnvironmentVariable("VOYAGEAI_API_KEY")!);varoptions=newEmbeddingGenerationOptions{ModelId="voyage-3",Dimensions=256,// Reduce from default};varembeddings=awaitgenerator.GenerateAsync(["Compact embedding for efficient storage."],options);Console.WriteLine($"Dimensions: {embeddings[0].Vector.Length}");// 256
usingMicrosoft.Extensions.AI;usingVoyageAI;IEmbeddingGenerator<string,Embedding<float>>generator=newVoyageAIClient(apiKey:Environment.GetEnvironmentVariable("VOYAGEAI_API_KEY")!);varoptions=newEmbeddingGenerationOptions{ModelId="voyage-3"};varembeddings=awaitgenerator.GenerateAsync(["How do I reset my password?","I forgot my login credentials.","What are your business hours?",],options);staticfloatCosineSimilarity(ReadOnlySpan<float>a,ReadOnlySpan<float>b){floatdot=0,normA=0,normB=0;for(inti=0;i<a.Length;i++){dot+=a[i]*b[i];normA+=a[i]*a[i];normB+=b[i]*b[i];}returndot/(MathF.Sqrt(normA)*MathF.Sqrt(normB));}varsim01=CosineSimilarity(embeddings[0].Vector.Span,embeddings[1].Vector.Span);varsim02=CosineSimilarity(embeddings[0].Vector.Span,embeddings[2].Vector.Span);Console.WriteLine($"'password reset' vs 'forgot credentials': {sim01:F4}");Console.WriteLine($"'password reset' vs 'business hours': {sim02:F4}");