Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
833c42e
Update package index with latest published versions (#53679)
azure-sdk May 12, 2026
b9c984e
Update package index with latest published versions (#53685)
azure-sdk May 12, 2026
a5d429f
5B .NET Framework release notes (#53678)
TaraOverfield May 12, 2026
763628c
BULK - Q&M: Azure-Trial Cleanup Project (#53691)
v-thepet May 12, 2026
0b4b91b
Update package index with latest published versions (#53693)
azure-sdk May 13, 2026
b744380
Bump IEvangelist/profanity-filter from 10.0.1.pre.preview.007 to 13.3…
dependabot[bot] May 13, 2026
cf0cad1
Bump the dotnet group with 3 updates (#53710)
dependabot[bot] May 13, 2026
bda770f
Bump the dotnet group with 3 updates (#53706)
dependabot[bot] May 13, 2026
2d957df
Bump the dotnet group with 3 updates (#53712)
dependabot[bot] May 13, 2026
def5252
Bump the dotnet group with 2 updates (#53721)
dependabot[bot] May 13, 2026
11e781f
Bump the dotnet group with 2 updates (#53723)
dependabot[bot] May 13, 2026
907edb5
Bump the dotnet group with 2 updates (#53720)
dependabot[bot] May 13, 2026
13c6e15
Bump the dotnet group with 3 updates (#53728)
dependabot[bot] May 13, 2026
3bf68ac
Bump github/codeql-action from 4.35.3 to 4.35.4 (#53699)
dependabot[bot] May 13, 2026
95f666e
Bump actions/dependency-review-action from 4.9.0 to 5.0.0 (#53698)
dependabot[bot] May 13, 2026
b4719f4
Bump the dotnet group with 1 update (#53737)
dependabot[bot] May 13, 2026
bddcb5e
Bump the dotnet group with 3 updates (#53722)
dependabot[bot] May 13, 2026
67f719e
Bump the dotnet group with 5 updates (#53735)
dependabot[bot] May 13, 2026
3a90012
Bump the dotnet group with 1 update (#53742)
dependabot[bot] May 13, 2026
2d9f721
Bump the dotnet group with 2 updates (#53744)
dependabot[bot] May 13, 2026
54e82a3
Bump the dotnet group with 2 updates (#53743)
dependabot[bot] May 13, 2026
bffe621
Bump the dotnet group with 2 updates (#53746)
dependabot[bot] May 13, 2026
8174ab8
Bump the dotnet group with 2 updates (#53750)
dependabot[bot] May 13, 2026
4634264
Bump the dotnet group with 3 updates (#53753)
dependabot[bot] May 13, 2026
c07ca11
Bump the dotnet group with 1 update (#53751)
dependabot[bot] May 13, 2026
e961cb6
Bump the dotnet group with 3 updates (#53762)
dependabot[bot] May 13, 2026
3b1e470
Bump the dotnet group with 3 updates (#53761)
dependabot[bot] May 13, 2026
557f956
Bump the dotnet group with 4 updates (#53772)
dependabot[bot] May 13, 2026
a4af008
Bump the dotnet group with 3 updates (#53771)
dependabot[bot] May 13, 2026
6988768
Bump the dotnet group with 2 updates (#53775)
dependabot[bot] May 13, 2026
4bd78a1
Bump the dotnet group with 1 update (#53774)
dependabot[bot] May 13, 2026
57da8af
Bump the dotnet group with 3 updates (#53773)
dependabot[bot] May 13, 2026
08425aa
Bump the dotnet group with 3 updates (#53780)
dependabot[bot] May 13, 2026
81d77fb
Bump the dotnet group with 3 updates (#53784)
dependabot[bot] May 13, 2026
6b93550
Bump the dotnet group with 3 updates (#53787)
dependabot[bot] May 13, 2026
310d7ae
Bump the dotnet group with 4 updates (#53789)
dependabot[bot] May 13, 2026
538203a
Bump the dotnet group with 4 updates (#53790)
dependabot[bot] May 13, 2026
b2e478c
Bump the dotnet group with 4 updates (#53792)
dependabot[bot] May 13, 2026
a6d8a28
Bump the dotnet group with 3 updates (#53793)
dependabot[bot] May 13, 2026
7c34577
Bump the dotnet group with 2 updates (#53796)
dependabot[bot] May 13, 2026
6070b10
Bump the dotnet group with 9 updates (#53803)
dependabot[bot] May 13, 2026
2886fb4
Bump the dotnet group with 1 update (#53802)
dependabot[bot] May 13, 2026
a1e6c84
Bump the dotnet group with 1 update (#53804)
dependabot[bot] May 13, 2026
9e8b13f
Bump the dotnet group with 2 updates (#53818)
dependabot[bot] May 13, 2026
f7f6954
Bump the dotnet group with 2 updates (#53819)
dependabot[bot] May 13, 2026
2ba0b85
Bump the dotnet group with 2 updates (#53821)
dependabot[bot] May 13, 2026
ec19c89
Fix variable name in program-structure typo example (#53697)
taiman724 May 13, 2026
8771393
Bump the dotnet group with 3 updates (#53817)
dependabot[bot] May 13, 2026
54f65bb
Bump the dotnet group with 3 updates (#53823)
dependabot[bot] May 13, 2026
b924ef0
Bump the dotnet group with 4 updates (#53828)
dependabot[bot] May 13, 2026
da10f35
Bump the dotnet group with 4 updates (#53827)
dependabot[bot] May 13, 2026
f2a8a19
Bump the dotnet group with 3 updates (#53830)
dependabot[bot] May 13, 2026
a95b431
Bump the dotnet group with 5 updates (#53832)
dependabot[bot] May 13, 2026
e2495c7
Bump the dotnet group with 6 updates (#53835)
dependabot[bot] May 13, 2026
0aeea7e
Bump the dotnet group with 4 updates (#53833)
dependabot[bot] May 13, 2026
14bb3de
Bump the dotnet group with 5 updates (#53831)
dependabot[bot] May 13, 2026
d8487c7
Bump the dotnet group with 14 updates (#53836)
dependabot[bot] May 13, 2026
777d466
Bump the dotnet group with 2 updates (#53829)
dependabot[bot] May 13, 2026
d46ef93
Update package index with latest published versions (#53840)
azure-sdk May 13, 2026
99a279f
Document compiler diagnostics related to the `default` constraing (#5…
BillWagner May 13, 2026
6eab5bb
Replace Youssef with Amaury and Jakub in testing owners (#53841)
Youssef1313 May 13, 2026
ad0b5bd
Document testconfig.json platformOptions and environment variables (#…
Evangelink May 13, 2026
66c7421
Add "Choose the right .NET AI tool" guidance article (#53007)
Copilot May 13, 2026
9b0ee0a
Update editing guidelines for release notes (#53692)
gewarren May 13, 2026
267ef37
docs: Breaking change — SafeFileHandle.IsAsync and FileStream.IsAsync…
Copilot May 13, 2026
d63756a
Update ICorDebugProcess11 documentation (#53677)
rcj1 May 13, 2026
267aeb1
What's new in .NET 11 – Preview 4 docs update (#53689)
Copilot May 13, 2026
970ebe5
Bump the dotnet group with 3 updates (#53834)
dependabot[bot] May 13, 2026
7cf15b9
Bump Aspire.StackExchange.Redis from 13.2.4 to 13.3.1 (#53838)
dependabot[bot] May 13, 2026
106c5b7
Bump Microsoft.Extensions.Logging.Abstractions and Microsoft.Extensio…
dependabot[bot] May 13, 2026
66f3b4a
Update package index with latest published versions (#53844)
azure-sdk May 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@
# Config settings
/docs/core/runtime-config/ @gewarren @dotnet/docs
# Testing
/docs/core/testing/ @meaghanlewis @Youssef1313
/docs/core/testing/ @meaghanlewis @nohwnd @Evangelink
# Tools
/docs/core/tools/ @meaghanlewis @dotnet/docs
# Tutorials
Expand Down
1 change: 1 addition & 0 deletions .github/agents/whats-new-net.agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ The source files are release notes from the product team. These take the form of

- Remove any 1st person references (we, us, our), and rewrite that information in the 2nd person: tell the reader what the reader can do, using "you" to refer to the reader.
- Remove any marketing and promotional language. These articles provide technical information, not marketing copy.
- In feature descriptions, don't call out preview-to-preview or RC-to-RC iteration. For example, if a feature is added in Preview 3 and later improved in Preview 4, describe the feature as it currently stands—don't note the progression across individual previews. The introductory paragraph is the only place to reference the specific current preview or RC version (see the bullets in the next section).

## Updates for each file

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/dependency-review.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,4 @@ jobs:
- name: 'Checkout Repository'
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: 'Dependency Review'
uses: actions/dependency-review-action@2031cfc080254a8a887f58cffee85186f0e49e48 # v4.9.0
uses: actions/dependency-review-action@a1d282b36b6f3519aa1f3fc636f609c47dddb294 # v5.0.0
2 changes: 1 addition & 1 deletion .github/workflows/profanity-filter.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:

- name: Profanity filter
if: ${{ github.actor != 'dependabot[bot]' && github.actor != 'github-actions[bot]' }}
uses: IEvangelist/profanity-filter@7d6e0c79ee3d33ae09b5ed0c6e2fa04b9c512e08 # main
uses: IEvangelist/profanity-filter@9d95889a67d0935e5af511e7141cb72c3952abaf # main
id: profanity-filter
with:
token: ${{ secrets.GITHUB_TOKEN }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/scorecards.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,6 @@ jobs:

# Upload the results to GitHub's code scanning dashboard.
- name: "Upload to code-scanning"
uses: github/codeql-action/upload-sarif@e46ed2cbd01164d986452f91f178727624ae40d7 # v3.29.5
uses: github/codeql-action/upload-sarif@68bde559dea0fdcac2102bfdf6230c5f70eb485e # v3.29.5
with:
sarif_file: results.sarif
4 changes: 4 additions & 0 deletions .openpublishing.redirection.ai.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@
"redirect_url": "/dotnet/ai/microsoft-extensions-ai",
"redirect_document_id": true
},
{
"source_path_from_root": "/docs/ai/conceptual/ai-tools.md",
"redirect_url": "/dotnet/ai/conceptual/calling-tools"
},
{
"source_path_from_root": "/docs/ai/conceptual/evaluation-libraries.md",
"redirect_url": "/dotnet/ai/evaluation/libraries",
Expand Down
60 changes: 60 additions & 0 deletions .openpublishing.redirection.csharp.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@
"source_path_from_root": "/docs/csharp/fundamentals/types/namespaces.md",
"redirect_url": "/dotnet/csharp/fundamentals/program-structure/namespaces"
},
{
"source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1763.md",
"redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors"
},
{
"source_path_from_root": "/docs/csharp/misc/cs0017.md",
"redirect_url": "/dotnet/csharp/language-reference/compiler-messages/entry-point-errors"
Expand Down Expand Up @@ -56,14 +60,38 @@
"source_path_from_root": "/docs/csharp/misc/cs0276.md",
"redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors"
},
{
"source_path_from_root": "/docs/csharp/misc/cs0406.md",
"redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors"
},
{
"source_path_from_root": "/docs/csharp/misc/cs0409.md",
"redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors"
},
{
"source_path_from_root": "/docs/csharp/misc/cs0410.md",
"redirect_url": "/dotnet/csharp/language-reference/compiler-messages/delegate-function-pointer-diagnostics"
},
{
"source_path_from_root": "/docs/csharp/misc/cs0411.md",
"redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors"
},
{
"source_path_from_root": "/docs/csharp/misc/cs0442.md",
"redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors"
},
{
"source_path_from_root": "/docs/csharp/misc/cs0452.md",
"redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors"
},
{
"source_path_from_root": "/docs/csharp/misc/cs0453.md",
"redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors"
},
{
"source_path_from_root": "/docs/csharp/misc/cs0456.md",
"redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors"
},
{
"source_path_from_root": "/docs/csharp/misc/cs0463.md",
"redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors"
Expand Down Expand Up @@ -108,6 +136,26 @@
"source_path_from_root": "/docs/csharp/misc/cs0659.md",
"redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors"
},
{
"source_path_from_root": "/docs/csharp/misc/cs0693.md",
"redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors"
},
{
"source_path_from_root": "/docs/csharp/misc/cs0699.md",
"redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors"
},
{
"source_path_from_root": "/docs/csharp/misc/cs0701.md",
"redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors"
},
{
"source_path_from_root": "/docs/csharp/misc/cs0704.md",
"redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors"
},
{
"source_path_from_root": "/docs/csharp/misc/cs0718.md",
"redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors"
},
{
"source_path_from_root": "/docs/csharp/misc/cs1021.md",
"redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors"
Expand Down Expand Up @@ -272,6 +320,14 @@
"source_path_from_root": "/docs/csharp/misc/cs1715.md",
"redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors"
},
{
"source_path_from_root": "/docs/csharp/misc/cs1720.md",
"redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors"
},
{
"source_path_from_root": "/docs/csharp/misc/cs1948.md",
"redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors"
},
{
"source_path_from_root": "/docs/csharp/misc/cs1958.md",
"redirect_url": "/dotnet/csharp/language-reference/compiler-messages/delegate-function-pointer-diagnostics"
Expand All @@ -280,6 +336,10 @@
"source_path_from_root": "/docs/csharp/misc/cs2017.md",
"redirect_url": "/dotnet/csharp/language-reference/compiler-messages/entry-point-errors"
},
{
"source_path_from_root": "/docs/csharp/misc/cs3024.md",
"redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors"
},
{
"source_path_from_root": "/docs/csharp/misc/cs5001.md",
"redirect_url": "/dotnet/csharp/language-reference/compiler-messages/entry-point-errors"
Expand Down
File renamed without changes.
32 changes: 2 additions & 30 deletions docs/ai/conceptual/data-ingestion.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Data ingestion is the process of collecting, reading, and preparing data from di
- **Transform** the data by cleaning, chunking, enriching, or converting formats.
- **Load** the data into a destination like a database, vector store, or AI model for retrieval and analysis.

For AI and machine learning scenarios, especially Retrieval-Augmented Generation (RAG), data ingestion is not just about converting data from one format to another. It is about making data usable for intelligent applications. This means representing documents in a way that preserves their structure and meaning, splitting them into manageable chunks, enriching them with metadata or embeddings, and storing them so they can be retrieved quickly and accurately.
For AI and machine learning scenarios, especially retrieval-augmented generation (RAG), data ingestion is not just about converting data from one format to another. It is about making data usable for intelligent applications. This means representing documents in a way that preserves their structure and meaning, splitting them into manageable chunks, enriching them with metadata or embeddings, and storing them so they can be retrieved quickly and accurately.

## Why data ingestion matters for AI applications

Expand All @@ -26,37 +26,9 @@ Your chatbot needs to understand and search through thousands of documents to pr

This is where data ingestion becomes critical. You need to extract text from different file formats, break large documents into smaller chunks that fit within AI model limits, enrich the content with metadata, generate embeddings for semantic search, and store everything in a way that enables fast retrieval. Each step requires careful consideration of how to preserve the original meaning and context.

## The Microsoft.Extensions.DataIngestion library

The [📦 Microsoft.Extensions.DataIngestion package](https://www.nuget.org/packages/Microsoft.Extensions.DataIngestion) provides foundational .NET building blocks for data ingestion. It enables developers to read, process, and prepare documents for AI and machine learning workflows, especially Retrieval-Augmented Generation (RAG) scenarios.

With these building blocks, you can create robust, flexible, and intelligent data ingestion pipelines tailored for your application needs:

- **Unified document representation:** Represent any file type (for example, PDF, Image, or Microsoft Word) in a consistent format that works well with large language models.
- **Flexible data ingestion:** Read documents from both cloud services and local sources using multiple built-in readers, making it easy to bring in data from wherever it lives.
- **Built-in AI enhancements:** Automatically enrich content with summaries, sentiment analysis, keyword extraction, and classification, preparing your data for intelligent workflows.
- **Customizable chunking strategies:** Split documents into chunks using token-based, section-based, or semantic-aware approaches, so you can optimize for your retrieval and analysis needs.
- **Production-ready storage:** Store processed chunks in popular vector databases and document stores, with support for embedding generation, making your pipelines ready for real-world scenarios.
- **End-to-end pipeline composition:** Chain together readers, processors, chunkers, and writers with the <xref:Microsoft.Extensions.DataIngestion.IngestionPipeline`1> API, reducing boilerplate and making it easy to build, customize, and extend complete workflows.
- **Performance and scalability:** Designed for scalable data processing, these components can handle large volumes of data efficiently, making them suitable for enterprise-grade applications.

All of these components are open and extensible by design. You can add custom logic and new connectors, and extend the system to support emerging AI scenarios. By standardizing how documents are represented, processed, and stored, .NET developers can build reliable, scalable, and maintainable data pipelines without "reinventing the wheel" for every project.

### Built on stable foundations

![Data Ingestion Architecture Diagram](../media/data-ingestion/dataingestion.png)

These data ingestion building blocks are built on top of proven and extensible components in the .NET ecosystem, ensuring reliability, interoperability, and seamless integration with existing AI workflows:

- **Microsoft.ML.Tokenizers:** Tokenizers provide the foundation for chunking documents based on tokens. This enables precise splitting of content, which is essential for preparing data for large language models and optimizing retrieval strategies.
- **Microsoft.Extensions.AI:** This set of libraries powers enrichment transformations using large language models. It enables features like summarization, sentiment analysis, keyword extraction, and embedding generation, making it easy to enhance your data with intelligent insights.
- **Microsoft.Extensions.VectorData:** This set of libraries offers a consistent interface for storing processed chunks in a wide variety of vector stores, including Qdrant, Azure SQL, CosmosDB, MongoDB, ElasticSearch, and many more. This ensures your data pipelines are ready for production and can scale across different storage backends.

In addition to familiar patterns and tools, these abstractions build on already extensible components. Plug-in capability and interoperability are paramount, so as the rest of the .NET AI ecosystem grows, the capabilities of the data ingestion components grow as well. This approach empowers developers to easily integrate new providers, enrichments, and storage options, keeping their pipelines future-ready and adaptable to evolving AI scenarios.

## Data ingestion building blocks

The [Microsoft.Extensions.DataIngestion](https://www.nuget.org/packages/Microsoft.Extensions.DataIngestion) library is built around several key components that work together to create a complete data processing pipeline. This section explores each component and how they fit together.
The [Microsoft.Extensions.DataIngestion](medi-library.md) library is built around several key components that work together to create a complete data processing pipeline. This section explores each component and how they fit together.

### Documents and document readers

Expand Down
39 changes: 39 additions & 0 deletions docs/ai/conceptual/medi-library.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
title: "The Microsoft.Extensions.DataIngestion library"
description: "Learn about the Microsoft.Extensions.DataIngestion library, which provides foundational .NET building blocks for data ingestion."
ms.topic: concept-article
ms.date: 04/15/2026
ai-usage: ai-assisted
---

# The Microsoft.Extensions.DataIngestion library

The [📦 Microsoft.Extensions.DataIngestion package](https://www.nuget.org/packages/Microsoft.Extensions.DataIngestion) provides foundational .NET building blocks for data ingestion. It enables developers to read, process, and prepare documents for AI and machine learning workflows, especially Retrieval-Augmented Generation (RAG) scenarios.

With these building blocks, you can create robust, flexible, and intelligent data ingestion pipelines tailored for your application needs:

- **Unified document representation:** Represent any file type (for example, PDF, Image, or Microsoft Word) in a consistent format that works well with large language models.
- **Flexible data ingestion:** Read documents from both cloud services and local sources using multiple built-in readers, making it easy to bring in data from wherever it lives.
- **Built-in AI enhancements:** Automatically enrich content with summaries, sentiment analysis, keyword extraction, and classification, preparing your data for intelligent workflows.
- **Customizable chunking strategies:** Split documents into chunks using token-based, section-based, or semantic-aware approaches, so you can optimize for your retrieval and analysis needs.
- **Production-ready storage:** Store processed chunks in popular vector databases and document stores, with support for embedding generation, making your pipelines ready for real-world scenarios.
- **End-to-end pipeline composition:** Chain together readers, processors, chunkers, and writers with the <xref:Microsoft.Extensions.DataIngestion.IngestionPipeline`1> API, reducing boilerplate and making it easy to build, customize, and extend complete workflows.
- **Performance and scalability:** Designed for scalable data processing, these components can handle large volumes of data efficiently, making them suitable for enterprise-grade applications.

All of these components are open and extensible by design. You can add custom logic and new connectors, and extend the system to support emerging AI scenarios. By standardizing how documents are represented, processed, and stored, .NET developers can build reliable, scalable, and maintainable data pipelines without "reinventing the wheel" for every project.

## Built on stable foundations

![Data Ingestion Architecture Diagram](../media/data-ingestion/dataingestion.png)

These data ingestion building blocks are built on top of proven and extensible components in the .NET ecosystem, ensuring reliability, interoperability, and seamless integration with existing AI workflows:

- **Microsoft.ML.Tokenizers:** Tokenizers provide the foundation for chunking documents based on tokens. This enables precise splitting of content, which is essential for preparing data for large language models and optimizing retrieval strategies.
- **Microsoft.Extensions.AI:** This set of libraries powers enrichment transformations using large language models. It enables features like summarization, sentiment analysis, keyword extraction, and embedding generation, making it easy to enhance your data with intelligent insights.
- **Microsoft.Extensions.VectorData:** This set of libraries offers a consistent interface for storing processed chunks in a wide variety of vector stores, including Qdrant, Azure SQL, CosmosDB, MongoDB, ElasticSearch, and many more. This ensures your data pipelines are ready for production and can scale across different storage backends.

In addition to familiar patterns and tools, these abstractions build on already extensible components. Plug-in capability and interoperability are paramount, so as the rest of the .NET AI ecosystem grows, the capabilities of the data ingestion components grow as well. This approach empowers developers to easily integrate new providers, enrichments, and storage options, keeping their pipelines future-ready and adaptable to evolving AI scenarios.

## See also

- [Data ingestion](data-ingestion.md)
Loading
Loading