Azure AI Search Custom Skills Samples (AI enrichment skillsets)
July 23, 2026 · View on GitHub
Important
As of November 15, 2023, Azure Cognitive Search has been renamed to Azure AI Search.
Azure AI Search Custom Skills Samples (AI enrichment skillsets)
A collection of sample implementations for custom skill functionality in Azure AI Search.
Previously known as: Azure Search Power Skills
This repository may still be referenced by its former name in older documentation, links, and conversations.
Terminology clarification
In this repository, “skills” refers to Azure AI Search skillset enrichment skills (including Custom Web API skills used during indexing), not agent/copilot skills.
Why this repository exists
Azure AI Search includes many built-in enrichment skills.
This repository provides examples for scenarios where you need custom logic that built-in skills don’t provide directly, such as:
- Custom transformations and enrichment output shaping
- Integration with external services or proprietary systems
- Deterministic pre/post-processing in indexing pipelines
What you’ll find
This repo contains reusable samples and patterns for:
- Building and hosting Custom Web API skills
- Implementing custom enrichment components in C# and Python
- Testing and iterating on enrichment logic
- Integrating custom outputs into Azure AI Search skillsets
Language composition of this repository:
- C# (~70%)
- Jupyter Notebook (~17%)
- Python (~11%)
When to use built-in skills vs custom skills
Use built-in skills when:
- The required enrichment already exists in Azure AI Search
- You can achieve the needed output with standard configuration
Use custom skills when:
- You need enrichment behavior not available out-of-the-box
- You need strict control over transformation/business logic
- You must call external APIs, private models, or internal systems
Core Azure AI Search documentation
Start here for official guidance:
-
Custom Web API skill
https://learn.microsoft.com/azure/search/cognitive-search-custom-skill-web-api -
Create and define skillsets
https://learn.microsoft.com/azure/search/cognitive-search-defining-skillset -
Built-in skills reference
https://learn.microsoft.com/azure/search/cognitive-search-predefined-skills -
Indexers in Azure AI Search
https://learn.microsoft.com/azure/search/search-indexer-overview -
Enrichment concepts (skillsets/pipeline context)
https://learn.microsoft.com/azure/search/cognitive-search-concept-intro
How to use these samples
- Identify the enrichment gap in your indexing pipeline.
- Select the closest sample in this repository.
- Adapt the custom logic for your data/contracts.
- Host the skill endpoint (for Web API-based skills).
- Add/update your skillset to call the custom skill.
- Run and validate indexer execution and output.
Scope note
This repository is specifically for Azure AI Search skillset custom enrichment samples and related implementation patterns.
Skills
This project provides the following custom skills:
| Skill | Description | Type | Language | Environment | Deployment |
|---|---|---|---|---|---|
| Chat completion Custom Skill | Demonstrates how to use chat-completion inference capabilities of language models (including Azure OpenAI models) deployed in Azure AI Foundry in a custom web API skillset in Azure AI Search. | Text | Azure Functions | ||
| GeoPointFromName | Retrieves coordinates from place names and addresses. | Geography | Azure Functions | ||
| Distinct | De-duplicates a list of terms. | Text | Azure Functions | ||
| TextAnalyticsForHealth | A wrapper for the Text Analytics for Health API. | Text | Azure Functions | ||
| TextQualityWatchdog | Uses a pretrained language model to detect low-quality text extracted during document cracking. | Text | Azure Function and Azure Open AI endpoint | ||
| DecryptBlobFile | Downloads, decrypts, and returns a file previously encrypted and stored in Azure Blob Storage. | Utility | Azure Functions | ||
| GetFileExtension | Returns the filename and extension as separate values to allow filtering on document type. | Utility | Azure Functions | ||
| HelloWorld | A minimal skill that can be used as a starting point or template for your own skills. | Template | Azure Functions | ||
| PythonFastAPI | A production web server and API scaffold for a Python power skill. | Template | Azure Functions | ||
| VideoIndexer | Extracts insights from video content for indexing workflows. | Vision | Azure Functions |
Getting Started
Prerequisites
In order to use the functions in this project, you'll need an active Azure subscription. Most of the functions can be used on their own for quick evaluation and experimentation, but they are meant for integration in Azure AI Search enrichment pipelines.
Each function may also add its own specific requirements, such as API keys for services they leverage.
Visual Studio is recommended, but not required. You need a recent version of the C# compiler.
Installation and deployment
If using Visual Studio with the Azure workload installed, no installation is required, and the functions can just be run locally using F5.
Deployment of a function to Azure can be done through Visual Studio, the Deploy to Azure button, or continuous deployment from source control.
Some functions may require setting environment variables or configuration entries. Please refer to the readme file in the function's directory.
Quickstart
- Clone the repository
- Open the PowerSkills solution in Visual Studio
- Set the project for the function to test as the startup project
- Hit F5
- Experiment with calling the function using your preferred HTTP client or test harness
You can also create your own skills using our Hello World template skill as a starting point or if you are using python our FastAPI template skill.
Up for grabs
Here are a few suggestions of simple contributions to get you started:
- Improve documentation: sample code, better documentation are great ways to improve your understanding of existing code and to help others do the same.
- Configuration: some skills can be configured through application settings and environment variables. You can use existing skills in this repo (for example, Azure Function-based samples under
Text/,Utils/,Template/) as references for clearer setup guidance and consistent config naming. - For skills that rely on external Azure resources or APIs (for example, skills under
Video/VideoIndexerorText/TextAnalyticsForHealth), consider adding deployment templates and setup instructions to simplify onboarding and reproducibility.