## 概述

在本实验的前四个模块中，您将使用多个异构数据存储（如 MySQL、Milvus 和 ElasticSearch）来满足 GenAI 应用程序的不同需求。这将需要多个 Python 包，让您亲身体验开发和维护的挑战。然而，在模块 5 中，您将只使用一个 Python 包 - pytidb - 和一个数据存储 - TiDB - 作为 GenAI 的统一数据存储。在这里，您将亲眼看到使用 TiDB 为 GenAI 应用程序提供支持是多么简单和高效。

<!-- markdownlint-disable MD032 -->
> [!IMPORTANT]
> 在开始实验之前，请务必阅读以下信息。
> + 在开始本实验之前，你需要注册一个可计费的 OpenAI 账号，并获取 `OPENAI_API_KEY`。关于如何获取密钥，请参考 [OpenAI 的这份文档](https://help.openai.com/en/articles/4936850-where-do-i-find-my-openai-api-key)。
> + 本实验仅支持 Chrome 浏览器。
> + 目前，TiDB Full-Text Search with SQL 功能仅在 TiDB Serverless 法兰克福 (eu-central-1) 和新加坡 (ap-southeast-1) 区域可用。如果您在本实验中使用自己的免费 TiDB Cloud 数据库，请确保您的 TiDB 集群部署在法兰克福或新加坡。

![70%](https://lab-static.pingcap.com/quick-demo/demo-422/422-with-bg.png)

生成式 AI 目前是一个前沿领域，吸引了许多渴望探索的开发者。然而，几个障碍常常阻碍他们进入这个领域，例如：

- 缺乏 AI 基础知识，使他们不确定从何处开始。
- 缺少全面、循序渐进且互动的构建生成式 AI 应用程序指南。
- 学习所需的基础设施有限，如数据库和大型模型 API。

为了解决这些挑战，我们开发了一系列实验，包括本实验，通过这些实验，您将学习：

- 如何使用传统方法编写一个 AI 应用程序，基于以下存储，构建一个完整的应用程序:

  - 关系型数据库: 例如 `MySQL`
  - 向量数据库: 例如 `Milvus`
  - 全文搜索引擎: 例如 `ElasticSearch`

- 如何通过 `pytidb`，使用 **TiDB Cloud Serverless** 作为统一存储层，来简化你的 AI 应用程序。

> [!NOTE]
> 在本实验中，我们将使用 Streamlit 作为快速应用程序开发框架，以简化和加速数据应用程序的构建。
> 无论您选择自己的 TiDB Cloud Serverless 集群还是沙盒 TiDB Cloud Serverless 选项来开始实验，都将为此动手实验创建一个专用数据库。

### 任务

1. 构建你的第一个简易 AI 应用程序：调用 LLM 并给出问题的回答。
2. 使用 RAG 来改进你的 AI 应用程序，让你的应用程序拥有记忆力：

    - 使用 MySQL 作为文字块的存储
    - 使用 Milvus 作为向量存储及搜索引擎

3. 提升你的 AI 应用的表现，是时候引入多一个召回通道了。全文搜索是一个好的选择。这将会给你的 AI 应用程序以不同的搜索角度：

    - 使用 ElasticSearch 作为全文搜索引擎

4. **使用 TiDB 来重写你的应用程序，简化你的整体架构。**

> [!TIP]
> 点击 **开始** 启动实验环境。
> 环境准备就绪后，分配给您的动手实践会话的资源将填充实际值，您才可以按照实验指南逐步完成练习。
