此示例演示了使用检索增强生成模式对自己的数据创建类似 ChatGPT 的体验的几种方法。它使用 Azure OpenAI Service 访问 ChatGPT 模型 (gpt-35-turbo),并使用 Azure 认知搜索进行数据索引和检索。
存储库包含示例数据,因此可以进行端到端尝试。在此示例应用程序中,我们使用名为 Contoso Electronics 的虚构公司,该体验允许其员工询问有关福利、内部策略以及职位描述和角色的问题。
重要:若要部署和运行此示例,需要一个为 Azure OpenAI 服务启用访问权限的 Azure 订阅。你可以在此处请求访问权限。
从零开始:
部署或重新部署存储库的本地克隆:
本地运行:
./app/start.cmd
** AZURE 资源成本 ** 默认情况下,此示例将创建具有每月成本的 Azure 应用服务和 Azure 认知搜索资源。如果要通过更改 infra 文件夹下的参数文件来避免此成本,则可以将它们切换到每个版本的免费版本(尽管需要考虑一些限制;例如,每个订阅最多可以有 1 个免费的认知搜索资源。
进入网络应用后:
注意:本演示中使用的 PDF 文档包含使用语言模型(Azure OpenAI 服务)生成的信息。这些文档中包含的信息仅用于演示目的,并不反映 Microsoft 的意见或信念。Microsoft 对本文档所含信息的完整性、准确性、可靠性、适用性或可用性不作任何明示或暗示的陈述或保证。微软保留所有权利。
问:当 Azure 认知搜索支持搜索大型文档时,为什么我们需要将 PDF 分解为块?
答:由于令牌限制,分块允许我们限制我们发送到 OpenAI 的信息量。通过分解内容,它使我们能够轻松找到可以注入 OpenAI 的潜在文本块。我们使用的分块的 menthod 利用了一个滑动的文本窗口,这样结束一个块的句子将开始下一个块。这使我们能够减少丢失文本上下文的机会。