Azure Machine Learning - 使用 REST API 创建 Azure AI 搜索索引

本文介绍如何使用 Azure AI 搜索 REST AP和用于发送和接收请求的 REST 客户端以交互方式构建请求。

关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

file

环境准备

  • Postman 应用,用于将请求发送到 Azure AI 搜索。

  • [创建 Azure AI 搜索服务]或在当前订阅下查找现有服务。 可以使用本快速入门的免费服务。

复制密钥和 URL

REST 调用需要在每个请求中使用服务 URL 和访问密钥。 搜索服务是使用这二者创建的,因此,如果向订阅添加了 Azure AI 搜索,则请按以下步骤获取必需信息:

  1. 登录到 Azure 门户,在搜索服务的“概览”页中获取 URL。 示例终结点可能类似于 https://mydemo.search.windows.net

  2. 在“设置”>“密钥”中,获取有关该服务的完全权限的管理员密钥 。 有两个可交换的管理员密钥,为保证业务连续性而提供,以防需要滚动一个密钥。 可以在请求中使用主要或辅助密钥来添加、修改和删除对象。

file

所有请求对发送到服务的每个请求都需要 API 密钥。 具有有效的密钥可以在发送请求的应用程序与处理请求的服务之间建立信任关系,这种信任关系以每个请求为基础。

连接到 Azure AI 搜索

连接信息在 URI 终结点中指定。 集合变量用于表示搜索服务名称和 API 密钥。 本快速入门中的典型 URI 如下所示:

https://{{service-name}}.search.windows.net/indexes/hotels-quickstart?api-version=2020-06-30

请注意 HTTPS 前缀、服务变量的名称、对象的名称(在本例中为索引集合中的某个索引的名称)和 api-version。 api-version 是必需的。

请求头组合包括两个元素:Content-Type,以及用于向 Azure AI 搜索进行身份验证的 api-keyapi-key 指定为变量,也是必需的。

若要使请求成功,需要提供服务名称和 api-key 作为集合变量。

  1. 打开 Postman 应用并导入集合。

  2. 选择集合的访问菜单,选择“编辑”,并提供搜索服务的服务名称和密钥。
    file

1 - 创建索引

在 Azure AI 搜索中,通常会先创建索引,然后再连同数据一起加载索引。 本任务将使用[创建索引 REST API]。

需扩展 URL 以包含 hotels-quickstart 索引名称。

  1. 将谓词设置为 PUT。

  2. 复制此 URL https://{{service-name}}.search.windows.net/indexes/hotels-quickstart?api-version=2020-06-30

  3. 在请求正文中提供索引定义(接下来提供可直接复制的代码)。

  4. 选择“发送”。

file

索引定义

字段集合定义文档结构。 每个文档必须包含这些字段,每个字段必须具有一个数据类型。 字符串字段用于全文搜索。 如果你需要使数值数据可供搜索,则需要将数值数据强制转换为字符串。

字段的属性决定了允许的操作。 默认情况下,REST API 允许很多操作。 例如,默认情况下,所有字符串均可供搜索、检索、筛选、分面。 通常,仅当需要禁用某种行为时,才要设置属性。

{"name": "hotels-quickstart",  "fields": [{"name": "HotelId", "type": "Edm.String", "key": true, "filterable": true},{"name": "HotelName", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": true, "facetable": false},{"name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "en.lucene"},{"name": "Category", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true},{"name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "sortable": false, "facetable": true},{"name": "ParkingIncluded", "type": "Edm.Boolean", "filterable": true, "sortable": true, "facetable": true},{"name": "LastRenovationDate", "type": "Edm.DateTimeOffset", "filterable": true, "sortable": true, "facetable": true},{"name": "Rating", "type": "Edm.Double", "filterable": true, "sortable": true, "facetable": true},{"name": "Address", "type": "Edm.ComplexType", "fields": [{"name": "StreetAddress", "type": "Edm.String", "filterable": false, "sortable": false, "facetable": false, "searchable": true},{"name": "City", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true},{"name": "StateProvince", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true},{"name": "PostalCode", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true},{"name": "Country", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true}]}]
}

提交此请求后,会获得 HTTP 201 响应,指示索引已成功创建。 可以在门户中验证此操作,但请注意,门户页有刷新时间间隔,因此可能需要等待一到两分钟。

2 - 加载文档

创建索引和填充索引是分开的步骤。 在 Azure AI 搜索中,索引包含所有可搜索的数据。 在此场景中,数据以 JSON 文档的形式提供。 本任务将使用[添加、更新或删除文档 REST API]。

需扩展 URL 以包含 docs 集合与 index 操作。

  1. 将谓词设置为 POST。

  2. 复制此 URL https://{{service-name}}.search.windows.net/indexes/hotels-quickstart/docs/index?api-version=2020-06-30

  3. 在请求的正文中提供 JSON 文档(接下来提供可直接复制的代码)。

  4. 选择“发送”。

file

要载入索引的 JSON 文档

请求正文包含四个要添加到 hotels 索引的文档。

{"value": [{"@search.action": "upload","HotelId": "1","HotelName": "Secret Point Motel","Description": "The hotel is ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Time's Square and the historic centre of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.","Category": "Boutique","Tags": [ "pool", "air conditioning", "concierge" ],"ParkingIncluded": false,"LastRenovationDate": "1970-01-18T00:00:00Z","Rating": 3.60,"Address": {"StreetAddress": "677 5th Ave","City": "New York","StateProvince": "NY","PostalCode": "10022","Country": "USA"} },{"@search.action": "upload","HotelId": "2","HotelName": "Twin Dome Motel","Description": "The hotel is situated in a  nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts.","Category": "Boutique","Tags": [ "pool", "free wifi", "concierge" ],"ParkingIncluded": false,"LastRenovationDate": "1979-02-18T00:00:00Z","Rating": 3.60,"Address": {"StreetAddress": "140 University Town Center Dr","City": "Sarasota","StateProvince": "FL","PostalCode": "34243","Country": "USA"} },{"@search.action": "upload","HotelId": "3","HotelName": "Triple Landscape Hotel","Description": "The Hotel stands out for its gastronomic excellence under the management of William Dough, who advises on and oversees all of the Hotel’s restaurant services.","Category": "Resort and Spa","Tags": [ "air conditioning", "bar", "continental breakfast" ],"ParkingIncluded": true,"LastRenovationDate": "2015-09-20T00:00:00Z","Rating": 4.80,"Address": {"StreetAddress": "3393 Peachtree Rd","City": "Atlanta","StateProvince": "GA","PostalCode": "30326","Country": "USA"} },{"@search.action": "upload","HotelId": "4","HotelName": "Sublime Cliff Hotel","Description": "Sublime Cliff Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 1800 palace.","Category": "Boutique","Tags": [ "concierge", "view", "24-hour front desk service" ],"ParkingIncluded": true,"LastRenovationDate": "1960-02-06T00:00:00Z","Rating": 4.60,"Address": {"StreetAddress": "7400 San Pedro Ave","City": "San Antonio","StateProvince": "TX","PostalCode": "78216","Country": "USA"}}]
}

在几秒钟内,应在会话列表中看到 HTTP 201 响应。 这指示已成功创建文档。

如果收到 207,则指示至少有一个文档无法上传。 如果收到 404,则表示请求的标头或正文有语法错误:请验证是否已更改终结点,使之包括 /docs/index

提示

对于所选数据源,可[创建索引器],这可简化并减少索引所需的代码量。

3 - 搜索索引

现在,索引和文档集已加载,可以使用搜索文档 REST API 针对它们发出查询了。

需扩展 URL,以包含使用搜索运算符指定的查询表达式。

  1. 将谓词设置为 GET。

  2. 复制此 URL https://{{service-name}}.search.windows.net/indexes/hotels-quickstart/docs?search=*&$count=true&api-version=2020-06-30

  3. 选择Send

此查询为空,在搜索结果中返回文档的计数。 在选择“发送”后,请求和响应应类似于以下针对 Postman 的屏幕截图。 状态代码应为 200。
file
尝试其他查询示例来了解语法。 你可以执行字符串搜索、逐字筛选查询、限制结果集、将搜索范围限定为特定字段等。

# Query example 1 - Search on restaurant and wifi
# Return only the HotelName, Description, and Tags fields
https://{{service-name}}.search.windows.net/indexes/hotels-quickstart/docs?search=restaurant wifi&$count=true&$select=HotelName,Description,Tags&api-version=2020-06-30# Query example 2 - Apply a filter to the index to find hotels rated 4 or highter
# Returns the HotelName and Rating. Two documents match
https://{service-name}}.search.windows.net/indexes/hotels-quickstart/docs?search=*&$filter=Rating gt 4&$select=HotelName,Rating&api-version=2020-06-30# Query example 3 - Take the top two results, and show only HotelName and Category in the results
https://{service-name}}.search.windows.net/indexes/hotels-quickstart/docs?search=boutique&$top=2&$select=HotelName,Category&api-version=2020-06-30# Query example 4 - Sort by a specific field (Address/City) in ascending order
https://{service-name}}.search.windows.net/indexes/hotels-quickstart/docs?search=pool&$orderby=Address/City asc&$select=HotelName, Address/City, Tags, Rating&api-version=2020-06-30

获取索引属性

还可以使用获取统计信息来查询文档计数和索引大小:

https://{{service-name}}.search.windows.net/indexes/hotels-quickstart/stats?api-version=2020-06-30

向 URL 添加 /stats 会返回索引信息。 在 Postman 中,请求应如下所示,响应包括文档计数和所用空间(以字节为单位)。
file
请注意,api-version 语法有所不同。 对于此请求,请使用 ? 来追加 api-version。 ? 将 URL 路径与查询字符串分隔开,而 & 将查询字符串中的每个“名称=值”对分隔开。 就此查询来说,api-version 是查询字符串中的第一个项,也是唯一项。

关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/208105.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 安装mysqlclient 错误 无法打开包括文件: “mysql.h”: 解决方法

解决方案:python最新3.12.0不支持mysqlclient 请下载 python3.9.9 版本 高速下载地址CNPM Binaries Mirror 官方下载地址Welcome to Python.org 下载完成后将python添加到环境变量 pycharm 虚拟环境下的python版本切换到你刚才下载的3.9.9的python版本 Avai…

C++动态内存管理new,delete

C动态内存管理new,delete 1.C/C内存分布2.C语言中的内存管理方式3.C中的内存管理方式new,delete3.1C中的内置类型new,delete3.2new,delete操作自定义类型3.3 new和delete匹配 4. operator new与operator delete函数4.1new和delete…

反转链表的实现

题目描述: 给出一个链表的头节点,将其反转,并返回新的头节点 思路1:反转地址 将每个节点里的地址由指向下一个节点变为指向前一个节点 定义三个结构体指针n1,n2,n3,n1表示改后指针的地址,n2表示要修改结构体里next的…

PT读spef报PARA-006如何解决?

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 There are multiple causes that can trigger PARA-006 errors. Here is a checklist. 1) SPEF reading order Functionally, the parasitic files can be read in any order. For best stitching…

百度飞桨(张江)人工智能产业赋能中心入驻申请

中心如何赋能 百度飞桨(张江)人工智能产业赋能中心是浦东“大企业开放创新中心计划”首批企业代表,百度和张江集团将联合为入驻初创企业及生态合作伙伴提供以下服务: 降低AI使用门槛 通过“百度飞桨人工智能公共技术平台”&#x…

解决git与huggingface项目下载速度慢或者失败的问题

git clone 项目报错 比如使用git clone 下载项目: git clone https://github.com/ChuRuaNh0/FastSam_Awsome_TensorRT.git有时候会报以下错误: fatal: unable to access ‘https://github.com/xxx.git/’: Failed to connect to github.com port 443 …

[读论文]meshGPT

概述 任务:无条件生成mesh (无颜色)数据集:shapenet v2方法:先trian一个auto encoder,用来获得code book;然后trian一个自回归的transformermesh表达:face序列。face按规定的顺序&a…

大型网站系统架构演化(Web)

大型网站系统架构演化 大型网站系统架构演化需要关注的维度涉及的技术演进过程单体架构垂直架构使用缓存改善网站性能缓存与数据库的数据一致性问题缓存技术对比Redis分布式存储方案Redis集群切片的常见方式Redis数据类型Redis 淘汰算法使用服务集群改善网站并发能力 大型网站系…

Python实现FA萤火虫优化算法优化循环神经网络分类模型(LSTM分类算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 萤火虫算法(Fire-fly algorithm,FA)由剑桥大学Yang于2009年提出 , …

利用Python中的Manim进行数学绘画和创作

相信很多同学就算没听过3Blue1Brown,也一定曾看过他们出品的视频,其从独特的视觉角度解说各种数学概念,内容包括线性代数、微积分、神经网络、傅里叶变换以及四元数等晦涩难懂的知识点。例如最火的《线性代数本质》系列视频。 那么这些视频是…

[学习记录]Node event loop 总结流程图

文章目录 文章来源根据内容输出的流程图待处理遗留的问题参考 文章来源 详解JavaScript中的Event Loop(事件循环)机制 根据内容输出的流程图 待处理 这里从polling阶段开始 好像有些问题 遗留的问题 为什么“在I/O事件的回调中,setImmediate…

Android 获取应用签名

Android 获取应用签名 本文主要讲下在android中如何获取应用签名. 也方便平时用来区分一个应用是不是原包应用. 1: 通过PackageManager获取签名信息 首先,通过packageManager获取到指定应用的PackageInfo. 这里需要传入的flag是PackageManager.GET_SIGNATURES /*** {link P…

matlab 汽车单车模型固定点跟踪算法

1、内容简介 略 29-可以交流、咨询、答疑 2、内容说明 单车模型固定点跟踪算法 单车模型,固定点跟踪算法,动画演示, 汽车单车模型、转弯动画、固定点跟踪算法、pid控制 3、仿真分析 略 A[0,5;0,0];B[0;1]; Q10*eye(2);R1; Klqr(A…

2015年五一杯数学建模A题不确定性条件下的最优路径问题解题全过程文档及程序

2015年五一杯数学建模 A题 不确定性条件下的最优路径问题 原题再现 目前,交通拥挤和事故正越来越严重的困扰着城市交通。随着我国交通运输事业的迅速发展,交通“拥塞”已经成为很多城市的“痼疾”。在复杂的交通环境下,如何寻找一条可靠、快…

C++利剑string类(详解)

前言:大家都知道在C语言里面的有 char 类型,我接下来要讲的 string 类功能是使用 char 类型写的类,当然这个是C官方写的,接下来我们将会学会使用它,我们会发现原来 char 这种类型是还能这么好用,授人以…

数学建模-基于LightGBM和BP神经网络的互联网招聘需求分析与预测

基于LightGBM和BP神经网络的互联网招聘需求分析与预测 整体求解过程概述(摘要) 就业是民生之本,是发展之基,也是安国之策。2020 年新冠肺炎疫情的爆发,稳就业成为应对疫情、稳定社会的重要保障之一。随着数据新动能的发展,互联网…

【Linux】Ubuntu添加root用户

在Ubuntu中,默认情况下是禁用了root用户的登录。如果仍然想要启用root用户,并设置root用户的密码,应按照以下步骤进行操作: 一、输入sudo passwd root设置root用户密码 二、切换root用户 sudo -i su root 这两条命令均可却换至…

Tkinter 面向对象框架《一》

一、说明 在本教程中,您将学习如何在 Tkinter 中应用面向对象编程以使代码更有条理。首先介绍Tk下小部件,然后介绍Ttk小部件,即如何从ttk.Frame类继承并在根窗口中使用它。 二、定义 Tkinter 面向对象的窗口 2.1 最基本的对象 以下简单程序创…

数字媒体技术基础之:栅格图像与矢量图形

使用各种软件创建不同类型的复合图像和图稿时,常会遇到基本的数字图像类型:栅格图像和矢量图像。 ◆ ◆ ◆ 栅格图像 栅格图像是基于像素的图像,故又称为“像素图像”或“位图图像”,主要用于编辑照片或制作可在 Web 上轻松使用…

C#语言高阶开发

目录 数据结构 集合 动态数组ArrayList 习题:声明一个Monster类,有一个Attack方法,用一个ArrayList去封装Monster的对象,装10个,遍历monster的list让他们释放攻击方法 哈希表HashTable 创建一个武器类,有一个属性叫做id,每个…