最佳实践 - 生成式AI提示技能

将 GenAI 提示自定义技能合并为索引器的引入流的一部分,使开发人员能够利用语言模型的内容生成功能来丰富数据源中的内容。 本文档概述了一些应当采用的建议和最佳做法,以便在利用此功能时确保系统的良好性能和行为。

GenAI 提示技能的功能

GenAI 提示自定义技能是 Azure AI 搜索技能目录的新增功能,允许搜索客户将文档内容和客户创建的提示传递给他们拥有的语言模型(托管在 Azure AI Foundry 中)。 生成的扩充内容以及源文档将引入搜索索引。 我们设想开发人员将这一点用于各种方案,为检索扩充生成(RAG)应用程序提供支持。 某些关键方案是 AI 生成的文档摘要、图像标题和基于用户指定提示的可自定义条件的实体/事实查找。

语言模型的内容生成功能正在迅速发展,它们集成到内容引入管道中提供了令人兴奋的搜索检索相关性的可能性。 但是,开发人员面临的挑战是确保他们用于其方案的提示和数据是安全的,并保护用户免受语言模型的任何无意结果。

与 RAG 应用程序交互的角色

为了列出将 AI 内容生成功能合并到 Azure AI 搜索索引器管道中的各种挑战,请务必了解与 RAG 应用程序交互的各种角色,因为其中每个角色都可能会带来一组不同的挑战。

Persona Description
最终用户 提出问题给 RAG 应用程序的人,期望得到一个基于源文档内容并有详细引用的回答。 除了答案的准确性之外,最终用户还期望应用程序提供的任何引文都清楚地表明,它是否来自源文件的逐字内容或模型中由 AI 提供支持的摘要。
RAG 应用程序开发人员/搜索索引管理员 负责配置搜索索引架构的人员,并设置索引器和技能集以将语言模型扩充数据引入索引。 GenAI 提示自定义技能允许开发人员将自由格式提示配置为 AI foundry 中托管的多个模型,从而提供极大的灵活性来点亮各种方案。 但是,开发人员需要确保管道中使用的数据和技能的组合不会产生有害或不安全的内容。 开发人员还需要评估语言模型生成的内容,了解偏差、不准确和不正确的信息。 尽管此任务对于大规模文档来说可能很困难,但在生成 RAG 应用程序以及索引架构定义时,它应该是第一步之一。
数据管理机构 该人员应是数据源中内容的主要主题专家(SME)。 主题专家预计将是针对语言模型驱动的扩展内容进行最佳评估的人,这些扩展被整合到索引中,以及 RAG 应用程序中由语言模型生成的答案。 数据管理机构的关键角色在于能够获取代表性样本,以验证数据扩充的质量和答案。如果大规模处理数据,这可能会很有挑战性。

本文档的其余部分列出了这些各种挑战,以及 RAG 应用程序开发人员可以遵循的提示和最佳做法来缓解任何风险。

挑战

以下是与 RAG 系统交互的各种角色所面临的挑战,这些角色利用语言模型增强采用 GenAI 提示符自定义技能引入到搜索索引中的内容,并为问题制定答案:

  • 透明度:RAG 系统的用户应该明白,AI 模型可能并不总是产生准确或精心制定的答案。 Azure AI 搜索有一个可靠记录的透明度说明,开发人员应阅读以了解 AI 用于增强核心搜索引擎功能的各种方式。 建议构建 RAG 应用程序的开发人员与其应用程序的用户共享透明度说明,因为它们可能不知道 AI 如何与正在使用的应用程序的各个方面进行交互。 此外,使用 GenAI 提示自定义技能开发人员时应注意,语言模型只生成引入搜索索引的内容的一部分,并且应将其突出显示给应用程序的用户。

  • 内容质量的内容采样/检查:开发人员和数据中小企业应考虑在 GenAI 提示自定义技能扩充后,考虑对引入搜索索引的某些内容进行采样,以检查其语言模型执行的扩充质量。 Azure 门户中的调试会话搜索资源管理器可用于此目的。

  • 内容安全筛选和评估:开发人员必须确保它们与 GenAI 提示自定义技能一起使用的语言模型具有适当的筛选器,以确保生成的内容的安全性,以及引入搜索索引后的内容的安全性。 开发人员和数据中小企业还应确保针对各种指标(例如准确性、任务特定的性能、偏差和风险)评估语言模型生成的内容。 Azure AI Foundry 为开发人员提供了一组可靠的工具,用于添加内容安全筛选器和明确的评估方法指南。

  • 快速回滚更改或修改技能配置的能力:与 GenAI 提示自定义技能配合使用的语言模型可能会随着时间的推移而出现问题,比如生成低质量内容。 开发人员应准备好回滚这些更改,可以通过更改索引器和技能集配置,或者在搜索查询中排除包含人工智能生成内容的索引字段。

缓解风险的最佳做法

利用 GenAI 提示自定义技能为 RAG 应用程序提供支持时,存在过度依赖 AI 的风险,如上一部分的挑战中所述。 本文档的这一部分提供了一些模式和策略,用于降低风险并克服挑战。

引入搜索索引之前的内容采样和检查

调试会话 是 Azure 门户中内置的工具。 可以使用它检查单个文档的扩充状态。 若要启动调试会话,请创建技能集和索引器,并使索引器完成一次运行。 建议先从“开发”索引开始,然后再继续推进解决方案。 在开发索引时,请使用调试会话检查将写入索引的扩充文档的整个结构和内容。 调试会话的单个运行适用于一个特定的实时文档,并且语言模型生成的内容将显示在扩充文档的特定部分。 开发人员可以利用其调试会话的多个运行,指向数据源中的不同文档,以便合理了解其语言模型生成的内容的状态(及其与扩充文档结构的关系)。

下面的屏幕截图显示了开发人员如何在调用语言模型后检查技能的配置和技能生成的值。

示例:检查 GenAI 提示功能的配置

调试会话的屏幕截图,显示 GenAI 提示的自定义技能配置。

示例:检查 GenAI 提示技能的输出

调试会话的屏幕截图,其中显示了语言模型中的 GenAI 提示自定义技能输出。

使用搜索浏览器查看输出

除了调试会话之外,Azure AI 搜索还可以通过 Azure 门户 搜索资源管理器查询搜索索引来一次性浏览多个文档。 开发人员可以发出广泛的查询,以从搜索索引中检索大量文档,并检查由 GenAI 提示自定义技能生成其内容的字段。 若要能够查看字段的内容,在定义索引架构时,需要使用“可检索”属性对其进行配置。 对于通过调试会话检查的同一文档,下图显示了最终进入索引的搜索文档的完整内容。

搜索资源管理器页面的屏幕截图,其中显示了索引文档的完整状态。

开发人员可以利用这两种工具对语言模型生成的数据进行合理的采样,然后将其引入到其“开发”索引中。 此时,我们建议开发人员与数据中小企业合作,以确保采样的数据符合质量和准确性标准。 满足所需的标准后,开发人员可以将索引器转换为指向“生产”索引,该索引将是他们 RAG 应用程序的知识来源。

内容安全筛选和评估

Azure AI 内容安全是一项 AI 服务,用于检测应用程序和服务中有害的用户生成和 AI 生成的内容。 Azure AI Foundry 与 Azure AI 内容安全服务进行了可靠的集成,适用于文本和图像内容中的许多方案。 GenAI 提示自定义技能足够灵活,使开发人员能够指定任何类型的提示和内容,因为我们希望开发人员根据自己的方案定制技能配置。 但这意味着,模型生成的内容可能是有害的、有偏见的、明确的或本质上是暴力的。 我们强烈建议将 GenAI 提示技能配置为与 Azure AI Foundry 语言模型交互的开发人员为已部署的模型设置适当的内容安全筛选器。

Azure AI Foundry 有一个关于负责任的 AI 实践的详细说明指南,我们强烈建议开发人员查看指南的内容,并确保他们已针对正与 GenAI 提示自定义技能一起使用的模型实现它们。 确定语言模型生成的结果的质量和准确性的关键因素之一是精心制作的系统消息。 Azure AI Foundry 还发布了一个系统消息模板指南,用于缓解潜在的 RAI 伤害,并指导系统安全地与用户交互。

Azure AI Foundry 还发布了一份关于评估条件的详细指南,用于选择开发人员可以选择为其各种应用程序部署的模型。 虽然 GenAI 提示技能足够灵活,可用于 Azure AI Foundry 中几乎所有的聊天完成模型,但根据最终用户的条件,某些模型可能比其他人更好。 某些聊天完成模型具备高级图像处理能力,虽然具有较高的准确性,但成本也相对较高。 某些模型可能更容易通过提示、不正确的信息等攻击。 配置 GenAI 提示自定义技能的开发人员必须了解他们选择用于内容生成和引入搜索索引的模型的这些特征。 我们强烈建议开发人员在将数据切换到生产环境之前,使用“开发”索引和多种采样方法,以便清楚了解这些模型的性质。

在回滚或修改数据摄取配置时要保持灵活性。

前面的两个部分强调开发人员拥有“开发”环境的重要性,在这些环境中,开发人员/数据中小企业使用内置机制配置“开发”索引,以评估搜索索引的内容。

开发评估环境的图表。

在开发环境中的评估令人满意后,开发人员应将引入过程迁移到生产环境,其中索引器对完整的客户数据进行处理。 但是,在此数据集上作时,质量或性能可能会意外下降。 此外,在开发环境中无需进行评估即可更新模型-这两种情况都可能导致与 RAG 应用程序交互的用户体验欠佳,开发人员需要在检测和缓解此类情况方面具有敏捷性。 为了捕获此类情况,开发人员应确保他们还持续监视其“生产”索引,并准备好根据需要修改配置。 以下部分介绍开发人员可以采用的一些模式来响应此类方案。

主从索引为 RAG 应用程序提供支持

开发人员应考虑使用主索引和辅助索引来为 RAG 应用程序提供支持。 主索引和辅助索引在字段配置中相似 - 唯一的区别是主索引将具有额外的(可搜索和可检索)字段,该字段将包含通过 GenAI 提示自定义技能从语言模型生成的内容。 开发人员应配置其 RAG 应用程序,以便扩充的 AI 模型可以使用主要索引或辅助索引作为知识源。 主索引应优先,但如果 RAG 应用程序生成的结果质量似乎受到不利影响,则应用程序应交换为使用未生成内容作为知识源的一部分的辅助索引。 可以通过利用索引别名功能,让 RAG 应用程序查询别名,并在必要时交换映射到别名的索引,而无需对 RAG 应用进行任何代码更改或重新部署。

下图演示了此模式。

主从索引模式的关系图。

在搜索查询中终止使用生成字段

使用两个搜索索引副本的较轻的替代方法是确保 RAG 应用程序能够轻松修改向 Azure AI 搜索发出的搜索查询。 默认情况下,发出搜索查询时,会扫描所有可搜索字段,但 Azure AI 搜索允许指定必须分析哪些字段才能生成一组搜索结果。

请考虑包含两个内容字段的索引-“名称”字段和一个包含酒店信息的示例数据集的(详细)“说明”字段。 假设 RAG 开发人员/搜索索引管理员配置了名为“summary”的第三个字段,该字段将通过 GenAI 提示技能保存 AI 生成的说明摘要。 配置 RAG 应用程序时,开发人员可以指定两种类型的搜索查询:用于分析所有可搜索字段的默认搜索查询,以及另一个仅查看其内容不是由语言模型生成的可搜索字段的特定查询。 下面是此类特定查询的示例,该查询显式省略“摘要”字段。

POST https://[service-name].search.azure.cn/indexes/[index-name]?api-version=[api-version] 

{ 
    "search": "Spacious, air-condition* +\"Ocean view\"", 
    "searchFields": "description, name", 
    "searchMode": "any",  
    "queryType": "full"  
} 

如果默认查询开始在性能或评估指标中降级,则 RAG 应用程序可以回退到此特定查询(可能需要代码更改/重新部署),如下图所示。

描述回退查询模式的关系图。

修改技能配置后重置索引器

有时,由于“完整”客户数据集中的新数据,指定给 GenAI 提示自定义技能的系统或用户消息可能会受到影响。相较于之前的选项,调整这些消息可能会提供更快速的替代方案。 但是,如果系统或用户消息针对 GenAI 提示自定义技能进行了修改,则建议开发人员还 重置并重新运行 索引器,以将此应用到数据源中的所有文档。 此选项可能会产生额外的费用。

局限性

本文档中建议的风险缓解策略和模式可能会因具体情境或数据依赖性,以及存储和成本等因素的限制。 RAG 开发人员有责任确保他们完全了解与 AI 内容生成相关的任何特定风险,作为引入管道的一部分,并制定适当的策略来缓解这些风险。

循环监督中的人类

鉴于数据引入的规模,对生产环境应用程序进行人为介入的监督可能不可行。 建议在“开发”环境中通过数据中小企业进行广泛的验证,以最大程度地减少生产中对这些数据的需求。 遵循评估过程:(1)使用一些内部利益干系人来评估结果,(2)使用 A/B 试验向用户推出此功能,(3)在部署功能时纳入关键绩效指标(KPI)和指标监视。