使数据可供搜索

已完成

当你想要创建一个使用你自己的数据生成准确答案的代理时,你需要能够有效地搜索数据。 使用 Microsoft Foundry 生成代理时,可以使用与 Azure AI 搜索 的集成来检索聊天流中的相关上下文。

Azure AI 搜索是一个检索器,你可以在生成某个具有提示流的语言模型应用程序时包含它。 使用 Azure AI 搜索,你可以自带数据、为数据建立索引,以及查询索引来检索所需的任何信息。

示意图显示了正在查询某个索引来检索基础数据。

使用矢量索引

虽然基于文本的索引可以提高搜索效率,但通常可以使用基于向量的索引(包含表示数据源中的文本标记的嵌入)来实现更好的数据检索解决方案。

嵌入是一种特殊的数据表示格式,搜索引擎可以使用它轻松查找相关信息。 更具体地说,嵌入是浮点数的矢量。

例如,假设你有两个包含以下内容的文档:

  • 孩子们在公园里快乐地玩耍。
  • 孩子们快乐地在操场上跑来跑去。

这两个文档包含语义上相关的文本,尽管使用了不同的单词。 通过为文档中的文本创建矢量嵌入,可以用数学方法计算文本中单词之间的关系。

想象一下从文档中提取关键字并在多维空间中将其绘制为矢量:

矢量嵌入的示意图。

矢量之间的距离可以通过测量两个矢量之间的角度的余弦(也称为余弦相似性)来计算。 换句话说,余弦相似性计算文档和查询之间的语义相似性。

通过用矢量表示单词及其含义,即使数据以不同的格式(文本或图像)和语言进行存储,也可以从数据源中提取相关上下文。

当你希望能够使用矢量搜索来搜索数据时,你需要在创建搜索索引时创建嵌入。 若要为搜索索引创建嵌入内容,可以使用 Microsoft Foundry 中提供的 Azure OpenAI 嵌入模型。

示意图显示了包含嵌入的矢量索引。

创建搜索索引

在 Azure AI 搜索中,搜索索引描述如何组织内容以使其可供搜索。 想象一个包含许多书籍的图书馆。 你希望能够轻松高效地搜索图书馆并检索相关书籍。 为了使图书馆可供搜索,请创建一个目录(其中包含有关书籍的任何相关数据),以便轻松查找任何书籍。 图书馆的目录充当搜索索引。

尽管创建索引的方法不同,但 Microsoft Foundry 中的 Azure AI 搜索集成使你可以轻松地创建适合语言模型的索引。 可以将数据添加到 Microsoft Foundry,之后可以使用 Azure AI 搜索通过嵌入模型在 Microsoft Foundry 门户中创建索引。 索引资产存储在 Azure AI 搜索中,并在聊天流中使用时由 Microsoft Foundry 查询。

在 Microsoft Foundry 中创建索引的屏幕截图。

如何配置搜索索引取决于你拥有的数据以及你希望语言模型使用的上下文。 例如,使用关键字搜索,你可以检索与搜索查询完全匹配的信息。 语义搜索则更进一步,使用语义模型检索与查询含义匹配的信息,而不是与确切的关键字匹配的信息。 目前,最先进的技术是矢量搜索,它创建嵌入来表示数据。

提示

详细了解矢量搜索

搜索索引

可通过多种方式在索引中查询该信息:

  • 关键字搜索:根据作为输入提供的特定关键字或术语,标识相关文档或段落。
  • 语义搜索:通过了解查询的含义并将其与语义相关的内容进行匹配(而不是仅依赖于确切的关键字匹配项)来检索文档或段落。
  • 矢量搜索:使用文本(矢量)的数学表示形式以根据其语义含义或上下文查找类似的文档或段落。
  • 混合搜索:合并任何或所有其他搜索技术。 查询并行执行,并在统一的结果集中返回。

在 Microsoft Foundry 中创建搜索索引时,系统会引导你配置最适合与语言模型结合使用的索引。 将搜索结果用在生成式 AI 应用程序中时,混合搜索会提供最准确的结果。

混合搜索是关键字(和全文)与矢量搜索的组合,用户可以选择向其添加语义排名。 创建与混合搜索兼容的索引时,如果可以获得精确匹配(使用关键字),则检索到的信息是精确的,而如果只能找到概念上相似的信息(使用矢量搜索),则检索到的信息虽然不精确,但仍然相关。

提示

详细了解混合搜索