快速入门:集成矢量化(预览版)
重要
“导入和矢量化数据”向导根据补充使用条款处于公开预览状态。 它面向 2023-10-01-Preview REST API。
使用 Azure 门户中“导入和矢量化数据”向导开始使用集成矢量化(预览)。 此向导会调用 Azure OpenAI 文本嵌入模型,以便在编制索引和查询时对内容进行矢量化。
在此向导的预览版中:
源数据仅是 blob,使用默认分析模式(每个 blob 一个搜索文档)。
索引架构不可配置。 源字段包括
content
(分块和矢量化)、标题metadata_storage_name
,以及文档键metadata_storage_path
(在索引中填充为parent_id
)。矢量化仅限 Azure OpenAI (text-embedding-ada-002),它使用带默认值的 HNSW 算法。
分块不可配置。 有效设置包括:
textSplitMode: "pages", maximumPageLength: 2000, pageOverlapLength: 500
先决条件
Azure 订阅。 创建试用版订阅。
在任何区域内、任何层级上的 Azure AI 搜索。 大多数现有服务都支持矢量搜索。 对于在 2019 年 1 月之前创建的一小部分服务,包含矢量字段的索引会在创建时失败。 在这种情况下,必须创建新服务。
Azure OpenAI 终结点,其中部署了 text-embedding-ada-002 和 API 密钥,或认知服务 OpenAI 用户上传数据的权限。 在此预览版中只能选择一个矢量器,矢量器必须是 Azure OpenAI。
Azure 存储帐户、标准性能(常规用途 v2)、热访问层和冷访问层。
提供文本内容、仅非结构化文档和元数据的 blob。 在此预览版中,数据源必须是 Azure Blob。
在 Azure 存储中的读取权限。 包含访问密钥的存储连接字符串提供对存储内容的读取访问。 如果使用 Microsoft Entra 登录名和角色,请确保搜索服务的托管标识具有“存储 Blob 数据读取者”权限。
检查空间
很多客户开始使用免费服务。 免费层限制为三个索引、三个数据源、三个技能组和三个索引器。 在开始之前,请确保有空间存储额外的项目。 本快速入门将为每个对象创建一个。
准备示例数据
本部分指向适用于本快速入门的数据。
使用你的 Azure 帐户登录到 Azure 门户,并转到 Azure 存储帐户。
在导航窗格中的“数据存储”下,选择“容器”。
创建新的容器,然后上传用于本快速入门的运行状况计划 PDF 文档。
在 Azure 门户中离开 Azure 存储帐户之前,在容器上授予存储 Blob 数据读取者权限,前提是需要基于角色的访问权限。 或者,从“访问密钥”页面获取到存储帐户的连接字符串。
获取 Azure OpenAI 连接详细信息
该向导需要终结点、部署 text-embedding-ada-002,以及 API 密钥或具有认知服务 OpenAI 用户权限的搜索服务托管标识。
使用 Azure 帐户登录到 Azure 门户,并转到 Azure OpenAI 资源。
在“密钥和管理”下,复制终结点。
在同一页上,复制密钥或检查“访问控制”,以将角色成员分配到搜索服务标识。
在“模型部署”下,选择“管理部署”以打开 Azure AI Studio。 复制 text-embedding-ada-002 的部署名称。
启动向导
若要开始,请在 Azure 门户中浏览到 Azure AI 搜索服务,然后打开“导入和矢量化数据”向导。
使用 Azure 帐户登录到 Azure 门户,然后转到 Azure AI 搜索服务。
在“概述”页上,选择“导入和矢量化数据”。
连接到数据库
下一步是连接到要用于搜索索引的数据源。
在“导入和矢量化数据”向导的“连接到数据”选项卡上,展开“数据源”下拉列表,然后选择“Azure Blob 存储”。
指定提供数据的 Azure 订阅、存储帐户和容器。
对于连接,请提供包含密钥的完全访问连接字符串,或指定具有容器“存储 Blob 数据读取者”权限的托管标识。
指定是否要删除检测:
选择“下一步: 矢量化和扩充”以继续。
扩充和矢量化数据
在此步骤中,指定用于矢量化分块数据的嵌入模型。
运行向导
此步骤创建以下对象:
与 blob 容器的数据源连接。
使用矢量字段、矢量器、矢量配置文件、矢量算法编制索引。 在向导工作流期间,系统不会提示你设计或修改默认索引。 索引遵循 2023-10-01-Preview 版本。
具有文本拆分技能的技能组用于分块,AzureOpenAIEmbeddingModel 用于矢量化。
具有字段映射和输出字段映射的索引器(如适用)。
如果收到错误,请先查看权限。 需要在 Azure OpenAI 上具有认知服务 OpenAI 用户,并在 Azure 存储上具有存储 Blob 数据读者。 Blob 必须是非结构化的(分块数据是从 Blob 的“content”属性中提取的)。
检查结果
搜索资源管理器接受文本字符串作为输入,然后矢量化矢量器查询执行文本。
选择你的索引。
(可选)选择“查询选项”并在搜索结果中隐藏矢量值。 此步骤使你的搜索结果更易于阅读。
选择 JSON 视图,以便在文本矢量查询参数中输入矢量查询的文本。
此矢量会提供一个默认查询,该查询在“vector”字段上发出矢量查询,返回最近的 5 个邻居。 如果选择隐藏矢量值,则默认查询会包括一个“select”语句,该语句从搜索结果中排除矢量字段。
{ "select": "chunk_id,parent_id,chunk,title", "vectorQueries": [ { "kind": "text", "text": "*", "k": 5, "fields": "vector" } ] }
将文本
"*"
替换为与健康计划相关的问题,例如“哪个计划的免赔额最低”。选择“搜索”以运行查询。
应会看到 5 个匹配项,其中每个文档都是原始 PDF 的一个区块。 标题字段显示区块来自哪个 PDF。
若要查看特定文档中的所有区块,请为特定 PDF 的标题字段添加筛选器:
{ "select": "chunk_id,parent_id,chunk,title", "filter": "title eq 'Benefit_Options.pdf'", "count": true, "vectorQueries": [ { "kind": "text", "text": "*", "k": 5, "fields": "vector" } ] }
清理
Azure AI 搜索是一项计费资源。 如果不再需要它,请将其从订阅中删除以免产生费用。
后续步骤
本快速入门介绍了“导入和矢量化数据”向导,该向导创建集成矢量化所需的所有对象。 若要详细探索每个步骤,请尝试使用一个集成矢量化示例。