{"id":4873,"date":"2025-05-21T07:41:49","date_gmt":"2025-05-21T14:41:49","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/semantic-kernel\/?p=4873"},"modified":"2025-05-27T03:45:55","modified_gmt":"2025-05-27T10:45:55","slug":"vector-data-extensions-are-now-generally-available-ga","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/agent-framework\/vector-data-extensions-are-now-generally-available-ga\/","title":{"rendered":"Vector Data Extensions are now Generally Available (GA)"},"content":{"rendered":"<p>We\u2019re excited to announce the release of <strong>Microsoft.Extensions.VectorData.Abstractions<\/strong>, a foundational library providing exchange types and abstractions for vector stores when working with vector data in AI-powered applications. This release is the result of a close collaboration between the <strong>Semantic Kernel<\/strong> and <strong>.NET<\/strong> teams, combining expertise in AI and developer tooling to deliver a robust, extensible solution for developers.<\/p>\n<h2>What is Microsoft.Extensions.VectorData.Abstractions?<\/h2>\n<p><strong>Microsoft.Extensions.VectorData.Abstractions<\/strong> provides shared abstractions and utilities for working with vector data, enabling developers to build scalable, maintainable, and interoperable AI solutions. These abstractions are now <strong>generally available (GA)<\/strong> and serve as the foundation for integrating vector databases into AI workflows.<\/p>\n<div>\n<div>Key features include:<\/div>\n<\/div>\n<ul>\n<li><strong>Interoperability<\/strong> \u2013 Libraries can work together more easily by targeting the same abstractions.<\/li>\n<li><strong>Extensibility<\/strong> \u2013 Developers can build on top of shared types to add new capabilities.<\/li>\n<li><strong>Consistency<\/strong> \u2013 A unified programming model across different implementations reduces integration complexity.<\/li>\n<\/ul>\n<h2>Usage with Microsoft.Extensions.AI.Abstractions<\/h2>\n<p><strong>Microsoft.Extensions.VectorData.Abstractions<\/strong> is designed to seamlessly integrate with the embedding generation abstractions exposed by <strong>Microsoft.Extensions.AI.Abstractions<\/strong>.\u00a0 Both <a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/microsoft.extensions.ai.iembeddinggenerator\">IEmbeddingGenerator<\/a> and the <a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/microsoft.extensions.ai.embedding-1\">Embedding<\/a> type from <strong>Microsoft.Extensions.AI.Abstractions<\/strong> is fully supported by <strong>Microsoft.Extensions.VectorData.Abstractions <\/strong>and the <strong>Microsoft.Extension.AI<\/strong> packages are now also <a href=\"https:\/\/aka.ms\/dotnet\/ai\/extensions\/ga\">Generally Available<\/a>.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/semantic-kernel\/semantic-kernel-and-microsoft-extensions-ai-better-together-part-1\/\"><strong>Microsoft.Extensions.AI<\/strong> and <strong>Semantic Kernel<\/strong><\/a> provide various implementations for <strong>Microsoft.Extensions.AI.Abstractions<\/strong> that can be used to connect to services for embedding generation.<\/p>\n<h2>Why target these abstractions?<\/h2>\n<p>If you&#8217;re building a <strong>library<\/strong>, it\u2019s critical to remain agnostic to specific AI or vector systems. By depending only on these shared abstractions, you avoid locking your consumers into particular providers and ensure your library can interoperate with others. This promotes flexibility and broad compatibility across the ecosystem.<\/p>\n<p>If you\u2019re building an <strong>application<\/strong>, you have more freedom to choose concrete implementations.<\/p>\n<p>What does this mean in practice?<\/p>\n<ul>\n<li><strong>Providers<\/strong> can implement these abstractions to integrate smoothly with the ecosystem.<\/li>\n<li><strong>Library authors<\/strong> should build on the abstractions to enable composability and avoid forcing provider choices on consumers.<\/li>\n<li><strong>Application developers<\/strong> benefit from a consistent API, making it easier to switch or combine providers without major code changes.<\/li>\n<\/ul>\n<h2>Available Implementations<\/h2>\n<p>The <strong>Semantic Kernel<\/strong> and <strong>.NET<\/strong> teams have worked closely together to build a wide range of <strong>vector store connectors<\/strong> that implement the abstractions provided by <strong>Microsoft.Extensions.VectorData.Abstractions<\/strong>. These connectors make it easy to integrate popular vector databases like Azure AI Search, Qdrant, PostgreSQL, and more into your AI applications.<\/p>\n<p>You can find a full list of available connectors in the <a href=\"https:\/\/learn.microsoft.com\/semantic-kernel\/concepts\/vector-store-connectors\/out-of-the-box-connectors\">Semantic Kernel out of the box connectors documentation<\/a>.<\/p>\n<h2>Usage<\/h2>\n<p>First add the required packages to your application<\/p>\n<pre><code class=\"language-dotnetcli\">\r\ndotnet add package Azure.Identity\r\ndotnet add package Azure.AI.OpenAI --prerelease\r\ndotnet add package Microsoft.Extensions.AI.OpenAI --prerelease\r\ndotnet add package Microsoft.SemanticKernel.Connectors.SqliteVec --prerelease\r\n    <\/code><\/pre>\n<p>Then create an embedding generator and a vector store collection.\u00a0 Make sure to pass your embedding generator to the vector store collection, so that embedding generation is seamlessly handled for you by the collection class.\u00a0 You can then start upserting records and doing vector searches.<\/p>\n<pre><code class=\"language-csharp\">\r\nusing Azure.AI.OpenAI;\r\nusing Azure.Identity;\r\nusing Microsoft.Extensions.AI;\r\nusing Microsoft.Extensions.VectorData;\r\nusing Microsoft.SemanticKernel.Connectors.SqliteVec;\r\n\r\n\/\/ Create embedding generator\r\nIEmbeddingGenerator&lt;string, Embedding&lt;float&gt;&gt; embeddingGenerator =\r\n    new AzureOpenAIClient(new Uri(Settings.EmbeddingEndpoint), new DefaultAzureCredential())\r\n        .GetEmbeddingClient(\"text-embedding-3-large\")\r\n        .AsIEmbeddingGenerator(1536);\r\n\r\n\/\/ Create vector store collection object\r\nVectorStoreCollection&lt;int, Product&gt; collection = new SqliteCollection&lt;int, Product&gt;(\r\n    connectionString: \"Data Source=products.db\",\r\n    name: \"products\",\r\n    new SqliteCollectionOptions\r\n    {\r\n        \/\/ Pass embedding generator to collection.\r\n        EmbeddingGenerator = embeddingGenerator,\r\n    });\r\n\r\n\/\/ Create the collection if it does not exist\r\nawait collection.EnsureCollectionExistsAsync();\r\n\r\n\/\/ Start upserting records.\r\n\/\/ The Description text will automatically be converted to a vector on upsert and\r\n\/\/ stored in the Embedding field.\r\nawait collection.UpsertAsync(new Product\r\n{\r\n    Id = 1,\r\n    Name = \"Kettle\",\r\n    TenantId = 5,\r\n    Description = \"This kettle is great for making tea, it heats up quickly and has a large capacity.\"\r\n});\r\n\r\n\/\/ Do a vector search.  The collection will automatically generate a search vector, from\r\n\/\/ the search string, to use for the similarity search.\r\nvar query = \"Find me kettles that can hold a lot of water\";\r\nawait foreach (var result in collection.SearchAsync(query, top: 5, new() { Filter = r =&gt; r.TenantId == 5 }))\r\n{\r\n    Console.WriteLine(result.Record.Description);\r\n}\r\n\r\nclass Product\r\n{\r\n    [VectorStoreKey]\r\n    public int Id { get; set; }\r\n\r\n    [VectorStoreData]\r\n    public string Name { get; set; }\r\n\r\n    [VectorStoreData]\r\n    public int TenantId { get; set; }\r\n\r\n    [VectorStoreData]\r\n    public string Description { get; set; }\r\n\r\n    \/\/ The value of this property will automatically be converted to a vector on upsert.\r\n    [VectorStoreVector(Dimensions: 1536)]\r\n    public string? Embedding =&gt; this.Description;\r\n}\r\n    <\/code><\/pre>\n<h2>GA for Abstractions, Preview for Implementations<\/h2>\n<p>While the <strong>Microsoft.Extensions.VectorData.Abstractions<\/strong> abstractions are now generally available, the <strong>Semantic Kernel implementations<\/strong> are still in preview. Over the coming weeks, we will work to make these implementations generally available.<\/p>\n<p>There may still be small breaking changes to the implementations before they become generally available as we ensure that these are all release ready, use the latest drivers and are of the highest quality and stability for the future.<\/p>\n<h2>Why the Delay for Some Connectors?<\/h2>\n<p>Some vector store connectors depend on drivers or SDKs that are not yet generally available. For example, certain connectors rely on database drivers that are still in preview or undergoing final testing. To ensure that we provide developers with a consistent experience, we\u2019ve chosen to delay the GA release of these connectors until their dependencies are fully ready.<\/p>\n<h2>Get Started Today<\/h2>\n<p>To get started with <strong>Microsoft.Extensions.VectorData.Abstractions<\/strong>:<\/p>\n<ol>\n<li>Check out the <a href=\"https:\/\/learn.microsoft.com\/semantic-kernel\/concepts\/vector-store-connectors\">documentation<\/a> for detailed guides and tutorials.<\/li>\n<li>Explore the <a href=\"https:\/\/github.com\/microsoft\/semantic-kernel\">Semantic Kernel GitHub repository<\/a> to find vector store connectors and examples.<\/li>\n<li>Also check out this <a href=\"https:\/\/aka.ms\/dotnet\/ai\/extensions\/ga\">post on the .NET blog<\/a> for even more information on the <strong>Microsoft.Extensions.VectorData.Abstractions<\/strong> and <strong>Microsoft.Extensions.AI<\/strong> releases<strong>.<\/strong><\/li>\n<\/ol>\n<p>We\u2019re excited to see what you build with <strong>Microsoft.Extensions.VectorData.Abstractions<\/strong> and the Semantic Kernel connectors. Stay tuned for updates as we roll out GA implementations in the coming weeks!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We\u2019re excited to announce the release of Microsoft.Extensions.VectorData.Abstractions, a foundational library providing exchange types and abstractions for vector stores when working with vector data in AI-powered applications. This release is the result of a close collaboration between the Semantic Kernel and .NET teams, combining expertise in AI and developer tooling to deliver a robust, extensible [&hellip;]<\/p>\n","protected":false},"author":162052,"featured_media":4898,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[78,1,19],"tags":[],"class_list":["post-4873","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-net","category-semantic-kernel","category-vector-database"],"acf":[],"blog_post_summary":"<p>We\u2019re excited to announce the release of Microsoft.Extensions.VectorData.Abstractions, a foundational library providing exchange types and abstractions for vector stores when working with vector data in AI-powered applications. This release is the result of a close collaboration between the Semantic Kernel and .NET teams, combining expertise in AI and developer tooling to deliver a robust, extensible [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/agent-framework\/wp-json\/wp\/v2\/posts\/4873","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/agent-framework\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/agent-framework\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/agent-framework\/wp-json\/wp\/v2\/users\/162052"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/agent-framework\/wp-json\/wp\/v2\/comments?post=4873"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/agent-framework\/wp-json\/wp\/v2\/posts\/4873\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/agent-framework\/wp-json\/wp\/v2\/media\/4898"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/agent-framework\/wp-json\/wp\/v2\/media?parent=4873"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/agent-framework\/wp-json\/wp\/v2\/categories?post=4873"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/agent-framework\/wp-json\/wp\/v2\/tags?post=4873"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}