category
什么是透明度说明?
人工智能系统不仅包括技术,还包括将使用它的人、将受到它影响的人以及部署它的环境。创建一个适合其预期目的的系统需要了解该技术是如何工作的,其功能和局限性是什么,以及如何实现最佳性能。微软的透明笔记旨在帮助您了解我们的人工智能技术是如何工作的,系统所有者可以做出的影响系统性能和行为的选择,以及思考整个系统的重要性,包括技术、人员和环境。您可以在开发或部署自己的系统时使用透明说明,也可以与将使用或受系统影响的人员共享。
微软的透明度说明是微软将我们的人工智能原则付诸实践的更广泛努力的一部分。要了解更多信息,请参阅“微软人工智能原则”。
Azure人工智能搜索的基础知识
介绍
Azure AI Search为开发人员提供了工具、API和SDK,用于在web、移动和企业应用程序中构建丰富的私有异构内容搜索体验。搜索是任何向用户展示数据的应用程序的基础。常见的场景包括目录或文档搜索、在线零售商店或对专有内容的数据探索。
可搜索数据可以是文本或矢量的形式,并按原样从数据源中获取,也可以通过使用人工智能进行丰富,以改善整体搜索体验。开发人员可以通过使用他们调用的外部机器学习模型将数据转换为向量,索引器可以选择包括通过使用几种Azure人工智能语言服务(如命名实体识别(NER)和个人身份信息(PII)检测)以及Azure人工智能视觉服务(包括光学字符识别(OCR)和图像分析)来支持强大的一套数据丰富功能的技能集。
有关Azure人工智能搜索如何通过使用Azure人工智能服务或其他人工智能系统来更好地理解客户内容的意图、语义和隐含结构,从而改善搜索体验的更多信息,请参阅以下选项卡。
AI充实
人工智能丰富是Azure人工智能服务的机器学习模型在原始形式不易搜索的内容上的应用。通过丰富,分析和推理用于创建以前不存在的可搜索内容和结构。
人工智能丰富是Azure人工智能搜索索引器管道的可选扩展,该管道与客户搜索服务所在地区的Azure人工智能服务相连。富集管道具有与典型索引器(索引器、数据源、索引)相同的核心组件,以及指定原子富集步骤的技能集。可以通过使用基于Azure AI服务API的内置技能(如计算机视觉和语言服务)或运行您提供的外部代码的自定义技能来组装技能集。
矢量搜索
矢量搜索是一种信息检索方法,其中文档和查询在索引中表示为矢量,而不是纯文本。在矢量搜索中,Azure AI search外部托管的机器学习模型生成源输入的矢量表示,这些输入可以是文本、图像、音频或视频内容。这种内容的数学和规范化表示称为向量嵌入,为搜索场景提供了通用基础。
当所有内容都是向量时,查询可以在向量空间中找到匹配项,即使相关的原始内容属于不同的媒体类型,例如图像与文本,或者与查询不同的语言。搜索引擎扫描索引,寻找与查询中的矢量最相似(即最接近)的矢量内容。使用数学矢量表示而不是关键字进行匹配,可以更容易地找到具有相同语义但在文本上不同的匹配,例如“car”和“auto”。这将更详细地介绍向量嵌入以及相似性算法的工作原理。
Key terms
Term | Definition |
---|---|
Vector embeddings | A highly optimized way to represent data that reflects meaning and understanding extracted by a machine learning model from images, audio, video, or text. Content is converted to vector embeddings both at indexing and query time. Vector search amounts to taking embeddings provided in a query and looking for the most similar embeddings in the index. Results are then typically sorted by the degree of similarity. |
Embedding space | All vectors in the corpus for a single field occupy the same embedding space where similar items are located close to each other, and dissimilar items are farther apart. Higher dimensionality of the embedding space can include more information in a single vector and greatly improve the search experience, but at significant cost of index storage size and higher query latency. |
语义排序器
语义排序器使用查询的上下文或语义来计算新的相关性得分,该得分将语义上最接近原始查询意图的结果提升到顶部。初始结果集可以来自BM25排名的关键词搜索、矢量搜索或包括两者的混合搜索。它还通过提取结果中的逐字内容来创建和返回“标题”,并“突出显示”以引起对结果中重要内容的关注。如果查询具有问题的特征(“水的冰点是多少”),并且结果包含具有答案特征的文本(“水在0°C或32°F结冰”),则它也可以返回“答案”。
Key terms
Term | Definition |
---|---|
Semantic ranker | Uses the context and semantic meaning of a query to improve search relevance by using language understanding to rerank search results. |
Semantic captions and highlights | Extracts sentences and phrases from a document that best summarize the content, with highlights over key passages for easy scanning. Captions that summarize a result are useful when individual content fields are too dense for the results page. Highlighted text elevates the most relevant terms and phrases so that users can quickly determine why a match was considered relevant. |
Semantic answers | Provides an optional and additional substructure returned from a semantic query. It provides a direct answer to a query that looks like a question. It requires that a document has text with the characteristics of an answer. |
能力
AI充实
系统行为
Azure人工智能搜索中的几个人工智能丰富内置技能利用了Azure人工智能服务。请参阅下面链接的每个内置技能的透明度说明,了解选择使用技能时的注意事项:
- 关键短语提取技巧:语言服务-关键短语提取
- 语言检测技能:语言服务-语言检测
- 实体链接技巧:语言服务-实体链接
- 实体识别技能:语言服务-命名实体识别(NER)
- PII检测技能:语言服务-PII检测
- 情感技能:语言服务-情感分析
- 图像分析技能:计算机视觉-图像分析
- OCR技能:计算机视觉-OCR
请参阅每种技能的文档,以了解更多关于其各自能力、局限性、性能、评估以及集成和负责任使用的方法的信息。请注意,将这些技能组合使用可能会产生复合效果(例如,使用OCR时引入的错误将在使用关键短语提取时继续存在)。
用例
示例用例
因为Azure AI搜索是一个全文搜索解决方案,所以AI丰富的目的是提高非结构化内容的搜索实用性。以下是一些内置技能支持的内容丰富场景示例:
- 翻译和语言检测支持多语言搜索。
- 实体识别从大块文本中提取人物、地点和其他实体。
- 关键短语提取识别并输出重要术语。
- OCR识别二进制文件中的打印文本和手写文本。
- 图像分析描述图像内容,并将描述输出为可搜索的文本字段。
- 集成矢量化是一种预览功能,它调用Azure OpenAI嵌入模型来对数据进行矢量化,并将嵌入存储在Azure Search中以进行相似性搜索。
矢量搜索
系统行为
在矢量搜索中,搜索引擎在索引的嵌入空间内寻找矢量,以找到那些接近查询矢量的矢量。这种技术被称为最近邻搜索。这也有助于量化项目之间的相似程度或距离。向量的高度相似性表明原始数据也相似。Azure AI search支持的两种矢量搜索算法有不同的方法来解决这个问题,权衡了延迟、吞吐量、召回和内存等不同特性。
KNN
找到“k”个最近邻居的真实集合需要将输入向量与数据集中的所有向量进行详尽的比较。虽然每个向量相似性计算相对较快,但由于所需的比较数量太多,在大型数据集上执行这些详尽的比较在计算上既昂贵又缓慢。此外,每个向量的维数越高,对每个向量的计算就越复杂、越慢。
ANN
为了应对这一挑战,使用近似最近邻(ANN)搜索方法来权衡召回率和速度。这些方法可以有效地找到一小组最有可能与查询向量相似的候选向量,从而减少向量比较的总数。Azure AI搜索使用分层导航小世界(HNSW)算法将高维数据点组织成概率分层图结构,实现快速相似性搜索,同时允许在搜索精度和计算成本之间进行可调的权衡。
Azure AI Search还支持多个相似性指标来确定每个向量结果的最近邻居和分数。这些指标包括余弦、“欧几里得”(也称为“l2范数”)和“点积”。余弦计算两个向量之间的角度。欧几里得计算两个向量之间的欧几里得距离,这是两个向量差的l2范数。点积受两个矢量的大小和它们之间的角度的影响。对于归一化嵌入空间,点积等效于余弦相似性,但更有效。
用例
示例用例
在许多情况下,矢量搜索是有用的,并且它们仅受用于生成矢量嵌入的模型的能力的限制。以下是可以使用矢量搜索的一些通用用例:
- 语义搜索:通过使用模型从文本中提取语义理解,比如使用Azure OpenAI服务嵌入模型等模型。
跨不同数据类型搜索(多模式):对来自图像、文本、音频和视频或混合数据的内容进行编码,并对所有数据进行单一搜索。 - 多语言搜索:使用多语言嵌入模型以多种语言表示文档,以支持的语言查找结果。
- 混合搜索:矢量搜索在字段级别实现,这意味着您可以构建包括矢量字段和可搜索文本字段的查询。查询并行运行,结果并为一个响应。具有语义排序的混合搜索结果已经被证明提供了最好的定性结果。
- 过滤向量搜索:查询可以包括向量查询和过滤表达式。应用于其他数据类型的过滤器可用于根据其他条件包括或排除文档
- 矢量数据库:这个纯矢量存储用于长期内存或大型语言模型(LLM)的外部知识库。例如,使用Azure AI搜索作为Azure机器学习提示流中的矢量索引,用于检索增强生成(RAG)应用程序。
选择用例时的注意事项
可能会有与您选择生成向量嵌入的特定模型相关的注意事项。每个模型都可能有自己的偏见和公平性问题,在应用程序中使用之前应该进行评估。Azure人工智能搜索不提供任何将内容矢量化的模型作为服务的一部分。有关这些注意事项的示例,请参阅Azure OpenAI服务透明度说明。其他第三方或OSS模型将有自己的考虑因素需要审查。
语义排序器
系统行为
对第一层检索步骤的结果进行排序是一个高度资源密集的过程。为了在查询操作的预期延迟内完成排序器的处理,只有来自检索引擎的前50个结果作为输入发送到语义排序器。如果太长,则首先将50个结果发送到摘要步骤,该步骤在运行语义排序器之前从每个结果中提取最相关的内容。
在摘要步骤中,首先对检索到的文档进行准备过程,将不同的文档输入连接到一个长字符串中。如果字符串太长,则会进行修剪练习,特别强调保留添加到语义配置中的字段中包含的内容。字符串准备好后,通过机器阅读理解和语言表示模型来确定哪些句子和短语提供了相对于查询的最佳摘要。这个阶段从字符串中提取内容,这些内容将被传递到语义排名阶段,并可选地输出语义标题或语义答案。
最后一步,语义排名,确定在前一步中提取的内容与用户查询的相关性,并输出从4(高度相关)到0(无关)的语义排名得分。这一步骤基于查询文本和摘要文本,涉及比检索层更复杂的计算。
用例
示例用例
语义排序器可以用于多种场景。该系统的预期用例包括:
- 检索增强生成(RAG):语义排序器使您能够在符合您定义的相关性分数阈值的相关搜索结果中找到生成人工智能应用程序的响应。例如,您的数据上的Azure OpenAI服务使用Azure AI搜索来用您的数据增强OpenAI模型。您可以在该服务中使用语义排序器来提高提供给OpenAI模型的信息的相关性。
- 内容搜索:语义排序器允许您通过分析文本和元数据来搜索数据中的相关内容。例如,learn.microsoft.com网站上的搜索使用语义排序器来提高搜索microsoft技术文档的软件开发人员的搜索相关性。
- 电子商务搜索:语义排名使电子商务企业能够通过提供基于语义相关性的相关产品结果来增强搜索体验。例如,在线零售商使用语义排序器为其在线购物者提供相关搜索结果,从而优化其电子商务体验。
- QnA:AAzure人工智能搜索使组织能够根据数据库中的可用信息回答问题,为用户提供对话体验。例如,制造者可以使用语义排序器来增加聊天机器人可用的信息。工程师可以使用此聊天机器人提问,并在检索到的文档中检索与其查询和即时答案相关的高度相关的内部文档。
选择用例时的注意事项
我们鼓励客户在其创新解决方案或应用程序中使用语义排序器。然而,在选择用例时,以下是一些注意事项:
- 敏感信息:使语义排序器能够处理搜索查询中检索到的数据的机器学习模型,包括个人详细信息和财务信息等敏感信息。在为此类用例实现语义排序器之前,请考虑任何隐私和安全方面的影响。
- 偏见和公平性:语义排序由深度学习模型提供支持。这些深度学习模型是通过使用公共内容进行训练的。客户数据通过语义排序模型进行评分。当您选择用例时,评估语义排序器的输出,特别是对于对公平和公正有影响的用例,如招聘和招聘。
- 法规遵从性:一些行业,如医疗保健和金融,受到高度监管,可能对人工智能和机器学习的使用有限制。在此类行业中使用语义排序器之前,请确保解决方案符合相关法规和指南。
局限性
AI充实
Azure人工智能搜索中的人工智能富集使用服务的索引器和数据源功能调用Azure人工智能服务来执行内容富集。此过程中使用的索引器和数据源的限制将适用。有关这些相关限制的详细信息,请查看索引器和数据源文档。Azure人工智能搜索中的人工智能富集管道使用的每个Azure人工智能服务的限制也将适用。有关这些限制的更多信息,请参阅每个服务的透明度说明。
矢量搜索
技术限制、操作因素和范围
所有上传到Azure AI搜索的矢量都必须使用您选择的模型从服务外部生成。您有责任考虑每个模型的技术限制和操作因素,以及它创建的嵌入是否经过了很好的优化,甚至是否适合您的用例。这既包括从内容中提取的意义的推断,也包括向量嵌入空间的维度。
矢量化模型创建了定义应用程序的最终用户搜索体验的嵌入空间。如果模型不能很好地与所需的用例保持一致,或者生成的嵌入没有得到很好的优化,那么模型可能会有负面影响功能和性能的缺点。
虽然矢量搜索的许多限制源于用于生成嵌入的模型,但在查询时还应该考虑一些其他选项。您可以从两种算法中进行选择,以确定矢量搜索结果的相关性:穷举k近邻(KNN)或分层导航小世界。穷举k近邻(KNN)通过计算所有数据点对之间的距离并找到查询点的精确k近邻,在整个向量空间中执行与查询最相似的匹配的强力搜索。虽然更精确,但这种算法可能很慢。如果低延迟是主要目标,请考虑使用分层导航小世界(HNSW)算法。HNSW在高维嵌入空间中执行有效的近似最近邻(ANN)搜索。有关这些选项的更多信息,请参阅矢量搜索文档。
提高系统性能的最佳实践
一定要花时间A/B测试您的应用程序,使用您希望应用程序支持的不同内容和查询类型。找出哪种查询体验最适合您的需求。
一定要花时间用全方位的输入内容测试你的模型,以了解它在许多情况下的表现。这些内容可能包括潜在的敏感输入,以了解模型中是否存在任何固有的偏见。Azure OpenAI负责任的人工智能概述为如何负责任地使用人工智能提供了指导。
请考虑将Azure AI内容安全添加到您的应用程序架构中。它包括一个API,用于检测应用程序和服务中有害的用户生成和AI生成的文本或图像。
评估和集成矢量搜索以供您使用
为了确保最佳性能,请使用矢量搜索对计划实施的解决方案进行自己的评估。遵循以下评估过程:(1)使用一些内部利益相关者来评估结果,(2)使用A/B实验向用户推出矢量搜索,(3)在首次在体验中部署服务时纳入关键性能指标(KPI)和度量监控,以及(4)测试和调整语义排序器配置和/或索引定义,包括用户界面放置或业务流程等周围体验。
微软通过利用不同的数据集来衡量返回结果的速度、可扩展性和准确性,在延迟、召回和相关性方面对矢量搜索进行了严格评估。评估工作的主要重点应该是为您的特定用例选择合适的模型,了解模型的局限性和偏差,并严格测试端到端矢量搜索体验。
语义排序器
技术限制、操作因素和范围
在某些情况下,语义结果、标题和答案可能看起来不正确。语义排序器使用的模型是在各种数据源上训练的(包括开源和微软必应语料库中的选择)。Semantic ranker支持广泛的语言,并尝试将用户查询与搜索结果中的内容相匹配。语义排序器也是一个额外成本的高级功能,在预测端到端解决方案的总体成本时应考虑这一点。
语义排序器最有可能提高语义丰富的内容(如文章和描述)的相关性。它寻找术语之间的上下文和相关性,提升在查询中更有意义的匹配。语言理解在您的内容中“找到”摘要或标题和答案,但与Azure OpenAI服务模型GPT-3.5或GPT-4等生成模型不同,它不会创建它们。响应中只包含源文档中的逐字文本,然后可以在搜索结果页面上呈现这些文本,以获得更高效的搜索体验。
最先进的预训练模型用于汇总和排名。为了保持用户期望的搜索快速性能,根据默认评分算法的评分,语义摘要和排名仅应用于前50名的结果。输入源于搜索结果中的内容。它无法返回到搜索索引以访问搜索文档中查询响应中未返回的其他字段。输入的令牌长度为8960。这些限制是维持毫秒响应时间所必需的。
默认的评分算法来自Bing和Microsoft Research,并作为附加功能集成到Azure AI搜索基础设施中。这些模型是在内部使用的,不向开发人员公开,并且是不可配置的。有关支持语义排名的研究和人工智能投资的更多信息,请参阅Bing的人工智能如何为Azure人工智能搜索提供动力(微软研究博客)。
Semantic ranker还提供了答案、说明和响应中的突出显示。例如,如果模型将查询分类为一个问题,并且对答案有70%的信心,则该模型将返回一个语义答案。此外,语义字幕提供了结果中最相关的内容,并提供了突出显示该片段中最相关单词或短语的简短片段。
语义排序结果基于底层搜索索引中的数据,模型基于从索引中检索到的信息提供相关性排序、答案和标题。在生产环境中使用语义排序器之前,重要的是要进行进一步的测试,并确保数据集准确且适合预期用例。有关如何评估语义等级的更多信息和示例,请参阅此处的内容和附录。
系统性能
在许多人工智能系统中,性能通常与准确性有关——也就是说,人工智能系统提供正确预测或输出的频率。对于大规模的自然语言模型,两个不同的用户可能会看到相同的输出,并对其有用性或相关性有不同的看法,这意味着必须更灵活地定义这些系统的性能。在这里,我们广义地认为性能是指应用程序按照您和用户的期望执行,包括不生成有害的输出。
语义排序者接受了公共内容方面的培训。因此,语义相关性会因索引中的文档和针对索引发出的查询而有所不同。在使用这些内容进行决策时,使用自己的判断和研究是很重要的。
提高系统性能的最佳实践
一定要花时间用不同的查询类型来A/B测试您的应用程序,例如关键字与混合加语义排序器。找出哪种查询体验最适合您的需求。
一定要付出合理的努力,根据功能文档设置语义配置。
如果您对搜索索引中信息的准确性没有信心,请不要相信语义答案。
不要总是相信语义字幕,因为它们是通过一系列模型从客户内容中提取的,这些模型可以在简短的片段中预测最相关的答案。
语义等级评定
评价方法
语义排序是通过内部测试进行评估的,包括对多个数据集的自动化和人工判断以及内部客户的反馈。测试包括通过对相关或不相关文档进行评分来对文档进行排名,并按相关的优先顺序对文档进行排序。同样,字幕和答案功能也通过内部测试进行了排名。
评价结果
我们努力将所有模型更新免费发货(也就是说,更新后的模型应该只改进当前的生产模型)。通过使用适用于所评估特征的指标(例如,排名的归一化贴现累积增益和答案的精度/召回率),将每个候选者直接与当前生产模型进行比较。通过使用广泛的训练数据来训练、调整和评估语义排序模型,这些训练数据代表具有不同属性(语言、长度、格式、样式和音调)的文档,以支持最广泛的搜索场景。我们的培训和测试数据来源于:
文件来源:
- 学术和行业基准
- 客户数据(仅限测试,经客户许可执行)
- 合成数据
查询来源:
- 基准查询集
- 客户提供的查询集(仅限测试,在客户许可的情况下执行)
- 合成查询集
- 人工生成的查询集
评分查询/文档对的标签来源
- 学术和行业基准标签
- 客户标签(仅限测试,经客户许可执行)
- 合成数据标签
- 人为评分标签
评估和集成语义排序器以供您使用
语义排序器的性能因现实世界的使用和人们使用它的条件而异。通过增强语义排序器功能的深度学习模型提供的相关性质量与搜索索引的数据质量直接相关。例如,目前的模型具有令牌限制,仅考虑语义答案的前8960个令牌。因此,如果在长文档的末尾找到搜索查询的语义答案(超过8960标记限制),则将不提供该答案。同样的规则也适用于字幕。此外,语义配置按优先级顺序列出了相关的搜索字段。您可以重新排列此列表中的字段,以帮助调整相关性,更好地满足您的需求。
为了确保其场景中的最佳性能,客户应该使用语义排序器对他们实现的解决方案进行自己的评估。客户通常应遵循以下评估流程:
- (1)使用一些内部利益相关者来评估结果,
- (2)使用A/B实验向用户推出语义排序器,
- (3)在首次在体验中部署服务时纳入KPI和指标监控,
- 以及(4)测试和调整语义排序器配置和/或索引定义,包括用户界面放置或业务流程等周围体验。
如果您正在高风险领域或行业(如医疗保健、人力资源、教育或法律领域)开发应用程序,请评估应用程序在您的场景中的工作情况,实施强有力的人力监督,评估用户对应用程序限制的理解程度,并遵守所有相关法律。根据您的情况考虑其他缓解措施。
Learn more about responsible AI
- Microsoft AI principles
- Microsoft responsible AI resources
- Microsoft Azure Learning courses on responsible AI
Learn more about Azure AI Search
- 登录 发表评论
- 14 次浏览
最新内容
- 1 day ago
- 1 day 2 hours ago
- 1 day 3 hours ago
- 3 days 18 hours ago
- 4 days 2 hours ago
- 4 days 2 hours ago
- 4 days 3 hours ago
- 4 days 3 hours ago
- 1 week 1 day ago
- 1 week 1 day ago