Skip to content

Commit 72cda04

Browse files
committed
Freshness pass on power BI steps, AAD, custom skill interface
1 parent 69b3cd3 commit 72cda04

10 files changed

+55
-63
lines changed

articles/search/TOC.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@
188188
href: search-sku-tier.md
189189
- name: Service limits
190190
href: search-limits-quotas-capacity.md
191-
- name: Plan capacity
191+
- name: Plan and manage capacity
192192
href: search-capacity-planning.md
193193
- name: Plan and manage costs
194194
href: search-sku-manage-costs.md
@@ -346,7 +346,7 @@
346346
href: semantic-how-to-query-request.md
347347
- name: Typeahead query
348348
href: search-add-autocomplete-suggestions.md
349-
- name: Quety examples (simple syntax)
349+
- name: Query examples (simple syntax)
350350
href: search-query-simple-examples.md
351351
- name: Add spell check
352352
href: speller-how-to-add.md

articles/search/cognitive-search-custom-skill-interface.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,20 @@ ms.service: cognitive-search
88
ms.custom:
99
- ignite-2023
1010
ms.topic: how-to
11-
ms.date: 06/29/2023
11+
ms.date: 04/25/2024
1212
---
1313

1414
# Add a custom skill to an Azure AI Search enrichment pipeline
1515

16-
An [AI enrichment pipeline](cognitive-search-concept-intro.md) can include both [built-in skills](cognitive-search-predefined-skills.md) and [custom skills](cognitive-search-custom-skill-web-api.md) that you personally create and publish. Your custom code executes externally to the search service (for example, as an Azure function), but accepts inputs and sends outputs to the skillset just like any other skill.
16+
An [AI enrichment pipeline](cognitive-search-concept-intro.md) can include both [built-in skills](cognitive-search-predefined-skills.md) and [custom skills](cognitive-search-custom-skill-web-api.md) that you personally create and publish. Your custom code executes externally from the search service (for example, as an Azure function), but accepts inputs and sends outputs to the skillset just like any other skill.
1717

1818
Custom skills might sound complex but can be simple and straightforward in terms of implementation. If you have existing packages that provide pattern matching or classification models, the content you extract from blobs could be passed to these models for processing. Since AI enrichment is Azure-based, your model should be on Azure also. Some common hosting methodologies include using [Azure Functions](cognitive-search-create-custom-skill-example.md) or [Containers](https://github.com/Microsoft/SkillsExtractorCognitiveSearch).
1919

2020
If you're building a custom skill, this article describes the interface you use to integrate the skill into the pipeline. The primary requirement is the ability to accept inputs and emit outputs in ways that are consumable within the [skillset](cognitive-search-defining-skillset.md) as a whole. As such, the focus of this article is on the input and output formats that the enrichment pipeline requires.
2121

2222
## Benefits of custom skills
2323

24-
Building a custom skill gives you a way to insert transformations unique to your content. A custom skill executes independently, applying whatever enrichment step you require. For example, you could build custom classification models to differentiate business and financial contracts and documents, or add a speech recognition skill to reach deeper into audio files for relevant content. For a step-by-step example, see [Example: Creating a custom skill for AI enrichment](cognitive-search-create-custom-skill-example.md).
24+
Building a custom skill gives you a way to insert transformations unique to your content. For example, you could build custom classification models to differentiate business and financial contracts and documents, or add a speech recognition skill to reach deeper into audio files for relevant content. For a step-by-step example, see [Example: Creating a custom skill for AI enrichment](cognitive-search-create-custom-skill-example.md).
2525

2626
## Set the endpoint and timeout interval
2727

@@ -43,15 +43,15 @@ If instead your function or app uses Azure managed identities and Azure roles fo
4343

4444
+ Your function or app must be [configured for Microsoft Entra ID](../app-service/configure-authentication-provider-aad.md).
4545

46-
+ Your [custom skill definition](cognitive-search-custom-skill-web-api.md) must include an "authResourceId" property. This property takes an application (client) ID, in a [supported format](../active-directory/develop/security-best-practices-for-app-registration.md#application-id-uri): `api://<appId>`.
46+
+ Your [custom skill definition](cognitive-search-custom-skill-web-api.md) must include an `authResourceId` property. This property takes an application (client) ID, in a [supported format](../active-directory/develop/security-best-practices-for-app-registration.md#application-id-uri): `api://<appId>`.
4747

48-
By default, the connection to the endpoint times out if a response isn't returned within a 30-second window. The indexing pipeline is synchronous and indexing will produce a timeout error if a response isn't received in that time frame. You can increase the interval to a maximum value of 230 seconds by setting the timeout parameter:
48+
By default, the connection to the endpoint times out if a response isn't returned within a 30-second window (`PT30S`). The indexing pipeline is synchronous and indexing will produce a timeout error if a response isn't received in that time frame. You can increase the interval to a maximum value of 230 seconds by setting the timeout parameter (`PT230S`).
4949

5050
## Format Web API inputs
5151

52-
The Web API must accept an array of records to be processed. Each record must contain a property bag that is the input provided to your Web API.
52+
The Web API must accept an array of records to be processed. Within each record, provide a property bag as input to your Web API.
5353

54-
Suppose you want to create a basic enricher that identifies the first date mentioned in the text of a contract. In this example, the custom skill accepts a single input "contractText" as the contract text. The skill also has a single output, which is the date of the contract. To make the enricher more interesting, return this "contractDate" in the shape of a multi-part complex type.
54+
Suppose you want to create a basic enricher that identifies the first date mentioned in the text of a contract. In this example, the custom skill accepts a single input "contractText" as the contract text. The skill also has a single output, which is the date of the contract. To make the enricher more interesting, return this "contractDate" in the shape of a multipart complex type.
5555

5656
Your Web API should be ready to receive a batch of input records. Each member of the "values" array represents the input for a particular record. Each record is required to have the following elements:
5757

@@ -69,7 +69,7 @@ The resulting Web API request might look like this:
6969
"data":
7070
{
7171
"contractText":
72-
"This is a contract that was issues on November 3, 2017 and that involves... "
72+
"This is a contract that was issues on November 3, 2023 and that involves... "
7373
}
7474
},
7575
{
@@ -91,7 +91,7 @@ The resulting Web API request might look like this:
9191
}
9292
```
9393

94-
In practice, your code may get called with hundreds or thousands of records instead of only the three shown here.
94+
In practice, your code can be called with hundreds or thousands of records instead of only the three shown here.
9595

9696
## Format Web API outputs
9797

@@ -111,7 +111,7 @@ The format of the output is a set of records containing a "recordId", and a prop
111111
{
112112
"recordId": "a1",
113113
"data" : {
114-
"contractDate": { "day" : 3, "month": 11, "year" : 2017 }
114+
"contractDate": { "day" : 3, "month": 11, "year" : 2023 }
115115
}
116116
},
117117
{
Binary file not shown.
Binary file not shown.
16.7 KB
Loading
98.4 KB
Loading
58 KB
Loading
-60.3 KB
Loading

articles/search/search-howto-aad.md

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ author: gmndrg
66
ms.author: gimondra
77
ms.service: cognitive-search
88
ms.topic: how-to
9-
ms.date: 05/09/2023
9+
ms.date: 04/25/2024
1010
ms.custom:
1111
- subject-rbac-steps
1212
- ignite-2023
@@ -18,9 +18,9 @@ Search applications that are built on Azure AI Search can now use the [Microsoft
1818

1919
This article shows you how to configure your client for Microsoft Entra ID:
2020

21-
+ For authentication, you'll create a [managed identity](../active-directory/managed-identities-azure-resources/overview.md) as the security principle. You could also use a different type of service principal object, but this article uses managed identities because they eliminate the need to manage credentials.
21+
+ For authentication, create a [managed identity](../active-directory/managed-identities-azure-resources/overview.md) for your application. You can use a different type of security principal object, but this article uses managed identities because they eliminate the need to manage credentials.
2222

23-
+ For authorization, you'll assign an Azure role to the managed identity that grants permissions to run queries or manage indexing jobs.
23+
+ For authorization, assign an Azure role to the managed identity that grants permissions to run queries or manage indexing jobs.
2424

2525
+ Update your client code to call [`TokenCredential()`](/dotnet/api/azure.core.tokencredential). For example, you can get started with new SearchClient(endpoint, new `DefaultAzureCredential()`) to authenticate via a Microsoft Entra ID using [Azure.Identity](https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/README.md).
2626

@@ -48,15 +48,15 @@ In this step, configure your search service to recognize an **authorization** he
4848

4949
The change is effective immediately, but wait a few seconds before testing.
5050

51-
All network calls for search service operations and content will respect the option you select: API keys, bearer token, or either one if you select **Both**.
51+
All network calls for search service operations and content respect the option you select: API keys, bearer token, or either one if you select **Both**.
5252

53-
When you enable role-based access control in the portal, the failure mode will be "http401WithBearerChallenge" if authorization fails.
53+
When you enable role-based access control in the portal, the failure mode is "http401WithBearerChallenge" if authorization fails.
5454

5555
### [**REST API**](#tab/config-svc-rest)
5656

5757
Use the Management REST API [Create or Update Service](/rest/api/searchmanagement/services/create-or-update) to configure your service.
5858

59-
All calls to the Management REST API are authenticated through Microsoft Entra ID, with Contributor or Owner permissions. For help setting up authenticated requests in a REST client, see [Manage Azure AI Search using REST](search-manage-rest.md).
59+
All calls to the Management REST API are authenticated through Microsoft Entra ID, with Contributor or Owner permissions. For help with setting up authenticated requests in a REST client, see [Manage Azure AI Search using REST](search-manage-rest.md).
6060

6161
1. Get service settings so that you can review the current configuration.
6262

@@ -94,17 +94,17 @@ In this step, create a [managed identity](../active-directory/managed-identities
9494
9595
1. Search for **Managed Identities**.
9696
97-
1. Select **+ Create**.
97+
1. Select **Create**.
9898
9999
1. Give your managed identity a name and select a region. Then, select **Create**.
100100
101101
:::image type="content" source="media/search-howto-aad/create-managed-identity.png" alt-text="Screenshot of the Create Managed Identity wizard." border="true" :::
102102
103103
## Assign a role to the managed identity
104104
105-
Next, you need to grant your managed identity access to your search service. Azure AI Search has various [built-in roles](search-security-rbac.md#built-in-roles-used-in-search). You can also create a [custom role](search-security-rbac.md#create-a-custom-role).
105+
Next, you need to grant your client's managed identity access to your search service. Azure AI Search has various [built-in roles](search-security-rbac.md#built-in-roles-used-in-search). You can also create a [custom role](search-security-rbac.md#create-a-custom-role).
106106
107-
It's a best practice to grant minimum permissions. If your application only needs to handle queries, you should assign the [Search Index Data Reader](../role-based-access-control/built-in-roles.md#search-index-data-reader) role. Alternatively, if it needs both read and write access on a search index, you should use the [Search Index Data Contributor](../role-based-access-control/built-in-roles.md#search-index-data-contributor) role.
107+
It's a best practice to grant minimum permissions. If your application only needs to handle queries, you should assign the [Search Index Data Reader](../role-based-access-control/built-in-roles.md#search-index-data-reader) role. Alternatively, if the client needs both read and write access on a search index, you should use the [Search Index Data Contributor](../role-based-access-control/built-in-roles.md#search-index-data-contributor) role.
108108
109109
1. Sign in to the [Azure portal](https://portal.azure.com).
110110
@@ -125,10 +125,8 @@ It's a best practice to grant minimum permissions. If your application only need
125125
+ Search Index Data Contributor
126126
+ Search Index Data Reader
127127
128-
For more information on the available roles, see [Built-in roles used in Search](search-security-rbac.md#built-in-roles-used-in-search).
129-
130-
> [!NOTE]
131-
> The Owner, Contributor, Reader, and Search Service Contributor roles don't give you access to the data within a search index, so you can't query a search index or index data using those roles. For data access to a search index, you need either the Search Index Data Contributor or Search Index Data Reader role.
128+
> [!NOTE]
129+
> The Owner, Contributor, Reader, and Search Service Contributor are control plane roles and don't give you access to the data within a search index. For data access, choose either the Search Index Data Contributor or Search Index Data Reader role. For more information on the scope and purpose of each role, see [Built-in roles used in Search](search-security-rbac.md#built-in-roles-used-in-search).
132130
133131
1. On the **Members** tab, select the managed identity that you want to give access to your search service.
134132
@@ -177,9 +175,9 @@ The following instructions reference an existing C# sample to demonstrate the co
177175

178176
### Local testing
179177

180-
User-assigned managed identities work only in Azure environments. If you run this code locally, `DefaultAzureCredential` will fall back to authenticating with your credentials. Make sure you've also given yourself the required access to the search service if you plan to run the code locally.
178+
User-assigned managed identities work only in Azure environments. If you run this code locally, `DefaultAzureCredential` falls back to authenticating with your credentials. Make sure you give yourself the required access to the search service if you plan to run the code locally.
181179

182-
1. Verify your account has role assignments to run all of the operations in the quickstart sample. To both create and query an index, you'll need "Search Index Data Reader" and "Search Index Data Contributor".
180+
1. Verify your account has role assignments to run all of the operations in the quickstart sample. To both create and query an index, use "Search Index Data Reader" and "Search Index Data Contributor".
183181

184182
1. Go to **Tools** > **Options** > **Azure Service Authentication** to choose your Azure sign-on account.
185183

0 commit comments

Comments
 (0)