ITADN
Azure-Samples/azure-search-openai-demo
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

使用 Azure OpenAI 和 Azure AI Search 构建 RAG 聊天应用 (Python)

此解决方案使用 RAG(检索增强生成)技术,基于您自己的文档创建类似 ChatGPT 的前端体验。它使用 Azure OpenAI Service 访问 GPT 模型,并使用 Azure AI Search 进行数据索引和检索。

此解决方案的后端使用 Python 编写。此外,还有基于此的 JavaScript.NETJava 示例。了解有关使用 Azure AI Services 开发 AI 应用的更多信息。

Open in GitHub Codespaces Open in Dev Containers Open in VS Code for the Web

重要安全须知

此模板及其包含的应用代码和配置,旨在展示 Microsoft Azure 特定服务与工具。我们强烈建议客户在未实施或启用额外安全功能的情况下,不要将此代码用于生产环境。请参阅我们的生产化指南获取建议,并查阅Azure OpenAI 落地参考架构以了解更多最佳实践。

目录

Chat screen

📺 观看应用概览视频。

本示例展示了使用检索增强生成(Retrieval Augmented Generation)模式,基于自有数据创建类似 ChatGPT 体验的几种方法。它使用 Azure OpenAI Service 访问 GPT 模型(gpt-5.4-mini),并使用 Azure AI Search 进行数据索引和检索。

该仓库包含示例数据,因此可以端到端地直接试用。在此示例应用中,我们使用了一家名为 Zava 的虚构公司,该体验允许其员工询问有关福利、内部政策以及职位描述和角色的问题。

功能

  • 聊天(多轮)界面
  • 为每个答案渲染引用和思维过程
  • 在 UI 中直接包含设置,以调整行为并试验选项
  • 集成 Azure AI Search 用于文档的索引和检索,支持多种文档格式以及云数据摄取
  • 可选使用多模态模型对图像密集型文档进行推理
  • 可选添加语音输入/输出以提升无障碍性
  • 可选通过 Microsoft Entra 自动化用户登录和数据访问
  • 使用 Application Insights 进行性能跟踪和监控

架构图

RAG Architecture

Azure 账户要求

重要: 为了部署和运行此示例,您需要:

成本估算

价格因区域和使用情况而异,因此无法预测您的确切使用成本。 但是,您可以尝试使用Azure 定价计算器 来估算以下资源的费用。

  • Azure Container Apps: 自 2024 年 10 月 28 日起,作为应用部署的默认主机。更多详情请参阅 ACA 部署指南。采用 1 个 CPU 核心、2 GB 内存、最少 0 个副本的 Consumption 计划。按使用量付费(Pay-as-You-Go)定价。定价
  • Azure Container Registry: Basic 层。定价
  • Azure App Service: 仅当您按照 App Service 部署指南 部署到 Azure App Service 时才会配置。Basic 层,1 个 CPU 核心,1.75 GB 内存。按小时计费。定价
  • Azure OpenAI: Standard 层,GPT 和 Ada 模型。按每 1K 使用的 token 计费,且每个问题至少使用 1K tokens。定价
  • Azure AI Document Intelligence: 使用预构建布局的 SO (Standard) 层。按文档页数计费,示例文档总计 261 页。定价
  • Azure AI Search: Basic 层,1 个副本,免费级别的语义搜索。按小时计费。定价
  • Azure Blob Storage: 采用 ZRS (Zone-redundant storage) 的 Standard 层。按存储和读取操作计费。定价
  • Azure Cosmos DB: 仅当您启用了 使用 Cosmos DB 的聊天历史 时才会配置。Serverless 层。按请求单元和存储计费。定价
  • Azure AI Vision: 仅当您启用了 多模态方法 时才会配置。按每 1K 交易计费。定价
  • Azure AI Content Understanding: 仅当您启用了 媒体描述 时才会配置。按每 1K 图像计费。定价
  • Azure Monitor: Pay-as-you-go 层。成本基于摄入的数据量。定价

为降低成本,您可以将各种服务切换到免费 SKU,但这些 SKU 存在限制。 请参阅此指南以了解以最低成本部署的更多详细信息。

⚠️ 为避免不必要的成本,如果应用不再使用,请记得将其下线, 方法是在 Portal 中删除资源组或运行 azd down

入门

您有几种设置此项目的选项。 最简单的入门方式是使用 GitHub Codespaces,因为它会为您设置所有工具, 但您也可以根据需要在本地设置

GitHub Codespaces

您可以使用 GitHub Codespaces 虚拟运行此仓库,它将在您的浏览器中打开基于 Web 的 VS Code:

Open in GitHub Codespaces

代码空间打开后(这可能需要几分钟),打开一个终端窗口。

VS Code 开发容器

一个相关的选项是 VS Code Dev Containers,它将使用 Dev Containers 扩展 在本地 VS Code 中打开该项目:

  1. 启动 Docker Desktop(如果尚未安装,请先安装)

  2. 打开项目: Open in Dev Containers

  3. 在打开的 VS Code 窗口中,当项目文件显示出来时(这可能需要几分钟),打开一个终端窗口。

本地环境

  1. 安装所需的工具:
  • Azure Developer CLI
    • Python 3.10, 3.11, 3.12, 3.13, or 3.14
      • Important: 在 Windows 中,Python 和 pip 包管理器必须在路径中,安装脚本才能正常工作。
      • Important: 确保您可以从控制台运行 python --version。在 Ubuntu 上,您可能需要运行 sudo apt install python-is-python3 以将 python 链接到 python3
    • Node.js 20+
    • Git
    • Powershell 7+ (pwsh) - 仅适用于 Windows 用户。
      • Important: 确保您可以从 PowerShell 终端运行 pwsh.exe。如果失败,您可能需要升级 PowerShell。
  1. 创建一个新文件夹并在终端中切换到该文件夹。

  2. 运行此命令以下载项目代码:

    azd init -t azure-search-openai-demo

请注意,此命令将初始化一个 git 仓库,因此您无需克隆此仓库。

部署

以下步骤将配置 Azure 资源并将应用程序代码部署到 Azure Container Apps。若要改为部署到 Azure App Service,请遵循 app service 部署指南

  1. 登录您的 Azure 账户:

    azd auth login

对于 GitHub Codespaces 用户,如果上一条命令失败,请尝试:

 azd auth login --use-device-code
 ```

1. 创建一个新的 azd 环境:

 ```shell
 azd env new
 ```

输入将用于资源组的名称。
 这将在 `.azure` 文件夹中创建一个新文件夹,并将其设置为后续对 `azd` 调用的活动环境。
1. (可选)这是通过设置环境变量来自定义部署的环节,以便 [使用现有资源](docs/deploy_existing.md)、[启用可选功能(如身份验证或视觉)](docs/deploy_features.md)、或 [部署低成本选项](docs/deploy_lowcost.md)、或 [使用 Azure 免费试用进行部署](docs/deploy_freetrial.md)。
1. 运行 `azd up` - 这将配置 Azure 资源并将此示例部署到这些资源中,包括基于在 `./data` 文件夹中找到的文件构建搜索索引。
 - **重要**:请注意,此命令创建的资源将立即产生费用,主要来自 AI Search 资源。即使您在命令完全执行之前中断它,这些资源也可能产生费用。您可以运行 `azd down` 或手动删除资源以避免不必要的支出。
 - 系统将提示您选择两个位置,一个用于大多数资源,另一个用于 OpenAI 资源,目前这是一个简短的列表。该位置列表基于 [OpenAI 模型可用性表](https://learn.microsoft.com/azure/cognitive-services/openai/concepts/models#model-summary-table-and-region-availability),并可能随着可用性的变化而过时。
1. 应用程序成功部署后,您将在控制台中看到一个打印的 URL。 点击该 URL 在浏览器中与应用程序交互。
它将如下所示:

!['Output from running azd up'](docs/images/endpoint.png)

> 注意:在显示 'SUCCESS' 后,应用可能需要 5-10 分钟才能完全部署。如果您看到 "Python Developer" 欢迎屏幕或错误页面,请等待片刻并刷新页面。

### 再次部署

如果您仅更改了 `app` 文件夹中的后端/前端代码,则无需重新配置 Azure 资源。您只需运行:

```shell
azd deploy

如果你已更改基础设施文件(infra 文件夹或 azure.yaml),则需要重新配置 Azure 资源。你可以通过运行以下命令来完成:

azd up

运行开发服务器

只有在成功运行 azd up 命令之后,才能在本地运行开发服务器。如果尚未运行,请按照上述 部署 步骤操作。

  1. 如果最近未登录,请运行 azd auth login
  2. 启动服务器:

Windows:

./app/start.ps1

Linux/Mac:

./app/start.sh

VS Code:运行“VS Code Task: Start App”任务。

也可以启用热加载或 VS Code 调试器。 请参阅本地开发指南]中的更多提示。

使用应用

  • 在 Azure 中:导航到由 azd 部署的 Azure WebApp。URL 会在 azd 完成时打印出来(作为 "Endpoint"),或者你可以在 Azure 门户中找到它。
  • 本地运行:导航到 127.0.0.1:50505

进入 Web 应用后:

  • 在聊天中尝试不同的主题。尝试追问、澄清、要求简化或详细阐述答案等。
  • 探索引用和来源
  • 点击“设置”以尝试不同的选项、调整提示词等。

清理

要清理此示例创建的所有资源:

  1. Run azd down
  2. When asked if you are sure you want to continue, enter y
  3. When asked if you want to permanently delete the resources, enter y

资源组及其所有资源将被删除。

指导

你可以在 docs 文件夹中找到详尽的文档:

资源

获取帮助

这是一个示例,旨在展示现代生成式 AI 应用的功能,以及如何在 Azure 中构建它们。 如需有关部署此示例的帮助,请在 GitHub Issues 中发帖。如果您是 Microsoft 员工,也可以在 我们的 Teams 频道 中发帖。

此仓库由维护者提供支持,而非 Microsoft 支持, 因此请使用上述支持机制,我们将尽力为您提供帮助。

如需了解在 Azure 上开发 AI 解决方案的一般问题, 请加入 Azure AI Foundry 开发者社区:

Azure AI Foundry Discord Azure AI Foundry Developer Forum

注意

注意:本演示中使用的 PDF 文档包含使用语言模型(Azure OpenAI Service)生成的信息。这些文档中包含的信息仅用于演示目的,并不代表 Microsoft 的观点或信念。Microsoft 不对本文档中包含的信息的完整性、准确性、可靠性、适用性或可用性作出任何明示或暗示的陈述或保证。版权所有 Microsoft。