The Pinecone SDK implements IEmbeddingGenerator<string, Embedding<float>> and provides AIFunction tool wrappers, all compatible with Microsoft.Extensions.AI.
Installation
1
dotnetaddpackagetryAGI.Pinecone
IEmbeddingGenerator
The InferenceClient (accessed via PineconeClient.Inference) implements IEmbeddingGenerator<string, Embedding<float>> for generating text embeddings.
Namespace conflict
Pinecone has its own Embedding type that shadows Microsoft.Extensions.AI.Embedding<T>. Use the Meai alias when referencing MEAI types directly.
usingPinecone;usingMeai=Microsoft.Extensions.AI;Meai.IEmbeddingGenerator<string,Meai.Embedding<float>>generator=newPineconeClient(apiKey:Environment.GetEnvironmentVariable("PINECONE_API_KEY")!).Inference;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);Console.WriteLine($"Generated {embeddings.Count} embeddings");Console.WriteLine($"Total tokens: {embeddings.Usage?.TotalTokenCount}");
usingMicrosoft.Extensions.AI;usingPinecone;varclient=newPineconeClient(apiKey:Environment.GetEnvironmentVariable("PINECONE_API_KEY")!);varoptions=newChatOptions{Tools=[client.AsListIndexesTool()],};IChatClientchatClient=/* your chat client */;varmessages=newList<ChatMessage>{new(ChatRole.User,"List all my Pinecone indexes"),};while(true){varresponse=awaitchatClient.GetResponseAsync(messages,options);messages.AddRange(response.ToChatMessages());if(response.FinishReason==ChatFinishReason.ToolCalls){varresults=awaitresponse.CallToolsAsync(options);messages.AddRange(results);continue;}Console.WriteLine(response.Text);break;}