首页 / 资料库 / 微软 · 智能体入门

资料库12 分钟读完MIT智能体微软Azure

配置 Azure AI 搜索

译自《Azure AI Search Setup》 · 查看英文原文

原文出处Azure AI Search Setup 原作者:Microsoft · 许可证:MIT License 中文译本由诸葛AI学院整理,仅供学习参考,版权归原作者与微软所有。

Azure AI 搜索配置指南

这份指南会帮你在 Azure 门户(Azure portal)里配置 Azure AI 搜索。按下面的步骤创建并配置你的 Azure AI 搜索服务。

前置条件

开始之前,请确认你已经具备:

  • 一个 Azure 订阅。如果没有 Azure 订阅,可以在 Azure 免费账户 注册一个。

第 1 步:创建 Azure 存储账户

  1. 按照 创建 Azure 存储账户 这份说明,新建一个 Azure 存储账户(Azure Storage Account)。

注意:请确保存储账户的类型是 Standard General Purpose V2(标准常规用途 V2)。

第 2 步:创建 Azure AI 搜索服务

  1. 登录 Azure 门户
  2. 在左侧导航栏中点击 Create a resource(创建资源)。
  3. 在搜索框中输入 "Azure AI Search",然后从结果列表里选择 Azure AI Search
  4. 点击 Create(创建)按钮。
  5. Basics(基本)选项卡中填写以下信息: - Subscription(订阅):选择你的 Azure 订阅。 - Resource group(资源组):新建一个资源组,或者选择已有的。 - Resource name(资源名称):为你的搜索服务输入一个唯一的名字。 - Region(区域):选择离你的用户最近的区域。 - Pricing tier(定价层):选择符合你需求的定价层。测试阶段可以先用 Free(免费)层。
  6. 点击 Review + create(查看 + 创建)。
  7. 检查设置,然后点击 Create 完成搜索服务的创建。

第 3 步:上手 Azure AI 搜索

  1. 部署完成后,在 Azure 门户中进入你的搜索服务。
  2. 在搜索服务的概览页里复制 URL。它看起来像 https://<service-name>.search.windows.net
  3. (推荐) 按下面第 4 步所示,用 Microsoft Entra ID(RBAC,基于角色的访问控制)开启免密钥访问——不需要密钥。本指南的示例会创建/更新索引(index)并上传文档,这需要 Search Service Contributor(搜索服务参与者)和 Search Index Data Contributor(搜索索引数据参与者)两个角色;如果你走基于密钥的认证,则需要 primary admin key(主管理员密钥)——而不是 query key(查询密钥)。只有在无法使用 RBAC 时,才打开 Settings > Keys(设置 > 密钥)页面并复制 primary admin key(主管理员密钥)。
  4. 按照 快速入门指南 页面的步骤,创建一个索引、上传数据,并执行一次检索(retrieval)。

第 4 步:使用 Azure AI 搜索工具

Azure AI 搜索可以和多种工具集成,用来增强你的搜索能力。你可以用 Azure CLI、Python SDK、.NET SDK 以及其他工具做更高级的配置和操作。

使用 Azure CLI

  1. 按照 安装 Azure CLI 的说明安装 Azure CLI。
  2. 用下面的命令登录 Azure CLI:

bash az login 3. (推荐)用 Microsoft Entra ID(RBAC)开启免密钥访问:

```bash
az search service update --name <service-name> --resource-group <resource-group> --auth-options aadOrApiKey
az role assignment create --assignee <your-user-or-principal-id> --role "Search Service Contributor" --scope $(az search service show -g <resource-group> -n <service-name> --query id -o tsv)
az role assignment create --assignee <your-user-or-principal-id> --role "Search Index Data Contributor" --scope $(az search service show -g <resource-group> -n <service-name> --query id -o tsv)
# az search service show 没有 "endpoint" 字段,用服务名拼出 URL。
export AZURE_SEARCH_SERVICE_ENDPOINT="https://<service-name>.search.windows.net"
```

开启 RBAC 后,下面 Python 和 .NET SDK 的示例都用 `DefaultAzureCredential` 认证。本地开发时,它会直接使用你的 `az login` 会话——不需要管理员密钥。参见 [使用角色连接 Azure AI 搜索](https://learn.microsoft.com/azure/search/search-security-rbac)。
  1. (备选方案)基于密钥的认证 —— 只有在无法使用 RBAC 时,才把管理员密钥一并存好:

把 Azure AI 搜索实例的 endpoint 和 API key 都存到环境变量里。

```bash
# zsh/bash
# az search service show 没有 "endpoint" 字段,用服务名拼出 URL。
export AZURE_SEARCH_SERVICE_ENDPOINT="https://<service-name>.search.windows.net"
export AZURE_SEARCH_API_KEY=$(az search admin-key show -g <resource-group> --service-name <service-name> --query "primaryKey" -o tsv)
```

```powershell
# PowerShell
# az search service show 没有 "endpoint" 字段,用服务名拼出 URL。
$env:AZURE_SEARCH_SERVICE_ENDPOINT = "https://<service-name>.search.windows.net"
$env:AZURE_SEARCH_API_KEY = $(az search admin-key show -g <resource-group> --service-name <service-name> --query "primaryKey" -o tsv)
```

使用 Python SDK

  1. 安装 Azure Cognitive Search 客户端库和用于 Python 的 Azure Identity:

bash pip install azure-search-documents azure-identity

  1. 用下面的 Python 代码创建索引并上传文档:

    ```python import os from azure.identity import DefaultAzureCredential from azure.search.documents import SearchClient from azure.search.documents.indexes import SearchIndexClient from azure.search.documents.indexes.models import SearchIndex, SimpleField, edm

    service_endpoint = os.getenv("AZURE_SEARCH_SERVICE_ENDPOINT") index_name = "sample-index"

    免密钥(推荐):通过 Entra ID RBAC 使用你 az login 的身份。

    需要 "Search Service Contributor" 和 "Search Index Data Contributor" 两个角色。

    credential = DefaultAzureCredential()

    备选方案(基于密钥的认证):

    from azure.core.credentials import AzureKeyCredential

    credential = AzureKeyCredential(os.getenv("AZURE_SEARCH_API_KEY"))

    index_client = SearchIndexClient(service_endpoint, credential)

    fields = [ SimpleField(name="id", type=edm.String, key=True), SimpleField(name="content", type=edm.String, searchable=True), ]

    index = SearchIndex(name=index_name, fields=fields)

    index_client.create_index(index)

    search_client = SearchClient(service_endpoint, index_name, credential)

    documents = [ {"id": "1", "content": "Hello world"}, {"id": "2", "content": "Azure Cognitive Search"} ]

    search_client.upload_documents(documents) ```

使用 .NET SDK

  1. 运行下面的命令来创建索引并上传文档:

    bash dotnet run ./AzureSearch.cs

    下面的 .NET 示例使用 DefaultAzureCredential,本地开发时它可以复用你通过 az login 完成的 Azure CLI 登录。

  2. 这是 AzureSearch.cs 的 .NET 代码:

    ```csharp

    :package Azure.Search.Documents@11.*

    :package Azure.Identity@1.21.0

    :property PublishAot=false

    using Azure; using Azure.Identity; using Azure.Search.Documents; using Azure.Search.Documents.Indexes; using Azure.Search.Documents.Indexes.Models;

    var serviceEndpoint = new Uri(Environment.GetEnvironmentVariable("AZURE_SEARCH_SERVICE_ENDPOINT")!); var indexName = "sample-index";

    // 免密钥(推荐):通过 Entra ID RBAC 使用你 az login 的身份。 // 需要 "Search Service Contributor" 和 "Search Index Data Contributor" 两个角色。 var credential = new DefaultAzureCredential(); // 备选方案(基于密钥的认证):上面的 using Azure; 指令已经引入了 // AzureKeyCredential;把上面的 credential 那一行替换成: // var credential = new AzureKeyCredential(Environment.GetEnvironmentVariable("AZURE_SEARCH_API_KEY")!); var indexClient = new SearchIndexClient(serviceEndpoint, credential);

    var fields = new List() { new SimpleField("id", SearchFieldDataType.String) { IsKey = true }, new SearchableField("content") };

    var index = new SearchIndex(name: indexName, fields: fields);

    var response = await indexClient.CreateOrUpdateIndexAsync(index); Console.WriteLine($"Index '{response.Value.Name}' ready.");

    var searchClient = new SearchClient(serviceEndpoint, indexName, credential);

    var documents = new[] { new { id = "1", content = "Hello world" }, new { id = "2", content = "Azure Cognitive Search" } };

    var result = await searchClient.UploadDocumentsAsync(documents); Console.WriteLine($"Uploaded {result.Value.Results.Count} documents to index '{response.Value.Name}'."); ```

想看更详细的信息,请参考以下文档:

小结

你已经用 Azure 门户和集成工具完成了 Azure AI 搜索的配置。接下来可以继续探索 Azure AI 搜索更高级的特性和能力,把你的搜索方案做得更好。

需要更多帮助,请访问 Azure Cognitive Search 文档

这篇在讲什么,跟咱们的课怎么对?

资料库是大厂公开教材的中文译本,偏原理和工程做法。想看面向中小企业的白话版本,去入门课场景课