---
title: 'PingCAP AI Lab 负责人李粒：TiDB 如何利用数据库 Copilot 优化数据库操作，提升用户体验与内部效率？'
date: '2024-05-24T13:18:22+08:00'
status: publish
permalink: /blog/how-tidb-optimize-database-operations-with-copilot
author: '周, 盛虎'
excerpt: '本文为 AICon 全球人工智能开发与应用大会上 InfoQ 记者与 PingCAP AI Lab 负责人李粒的采访实录，分享了 LLM 技术在数据库领域的应用前景与解决方案。'
type: post
id: 6761
category:
    - 产品技术解读
tag:
    - AI
    - Copilot
    - LLM
post_format: []
profile:
    - 李忠良
_yoast_wpseo_title:
    - 'TiDB 如何利用数据库 Copilot 优化数据库操作，提升用户体验与内部效率？'
---
导读
--

在应对不断增长的数据量、复杂的业务逻辑和对更高性能与可靠性的追求中，数据库系统面临着重重挑战。其中，有效处理大规模数据并保障数据的安全性与隐私性是当前需要解决的问题。随着人工智能技术的不断演进，LLM 的应用成为了数据库领域的热点。LLM 技术不仅能够优化数据库系统的性能和可靠性，还能为数据库查询、流程优化等提供更智能化的解决方案。

在 AICon 全球人工智能开发与应用大会上，**PingCAP AI Lab 负责人李粒分享了他的见解**。他将探讨上述挑战，并分享 LLM 技术在数据库领域的应用前景与解决方案。围绕此次分享，InfoQ 记者与李粒展开了深入的探讨，以下为采访实录。

编辑丨InfoQ 李忠良

- - - - - -

数据库领域挑战与应用案例
------------

> InfoQ：数据库领域当前最紧迫的挑战是什么？您认为这些挑战如何影响数据库系统的性能和可靠性？

李粒：当前数据库领域面临的最紧迫挑战之一是如何处理和分析日益增长的数据量，同时保持高效的性能和可靠性。这个挑战主要体现在以下几个方面：

首先，**数据规模的持续增长**是一个显著挑战。随着物联网、社交媒体和企业应用等领域的快速发展，数据量呈指数级增长。这不仅要求数据库能够有效地存储和管理海量数据，还需要优化存储结构、索引机制和查询处理，以维持高效的性能。

其次，**实时数据处理的需求日益增加**。现代业务场景，如实时分析和在线事务处理，要求数据库系统能够在处理大量数据的同时，保证极低的延迟。这对数据库的设计和优化提出了更高的要求。

第三，**数据安全与隐私保护**也是一个重大挑战。随着数据泄露事件的频发，如何通过加密、访问控制等措施保护数据安全，防止未授权访问或泄露，成为了数据库系统设计的一个重要方面。

此外，我们还面临着处理**多样化数据类型和复杂数据关系**的挑战。现代数据库不仅要处理结构化数据，还要能够有效管理半结构化和非结构化数据。同时，数据之间的关系也变得更加复杂，这对数据库的模型和查询语言提出了新的要求。

最后，**高可用性**和**灾难恢复能力**也是企业越来越关注的问题。任何数据丢失或服务中断都可能导致重大的业务损失，因此，确保数据库的高可用性和快速恢复能力是至关重要的。

这些挑战直接影响到数据库系统的性能和可靠性。例如，如果处理大规模数据时缺乏有效的索引和查询优化技术，将导致查询速度缓慢，严重影响用户体验。同样，如果安全措施不到位，数据可能面临泄露或损坏的风险，进而影响系统的整体可靠性。

> InfoQ：LLM 技术在数据库领域的应用案例有哪些？您可以分享一些具体的实例，以及这些案例是如何利用 LLM 技术解决现有数据库系统的挑战的？

李粒：LLM 技术在数据库领域的应用非常广泛，从提高用户体验到内部操作优化，都有显著的贡献。

首先，在用户感知方面，LLM 技术可以极大地简化用户与数据库的交互。例如，基于文档的 ChatBot，如 TiDB Bot，可以在 Slack 或 Cloud 平台上支持用户的使用提问。这种 ChatBot 能够理解用户的查询意图，并提供关于数据库配置、日志管理、慢查询优化等方面的建议。这不仅提高了用户的操作便利性，还有助于用户更有效地管理数据库。

此外，LLM 技术还能够帮助用户直接通过自然语言生成 SQL 查询（NL2SQL）。这意味着即使用户不熟悉 SQL 语法，也能通过描述他们的查询需求来获取数据。更进一步，我们可以将这种技术扩展到从原始数据到商业洞察的转换（NL2Insight），这不仅仅是生成 SQL，而是提供更深层次的数据分析和业务洞察。

在诊断和故障恢复方面，LLM 技术也显示出巨大的潜力。通过集成到基于 ChatBot 的系统中，LLM 可以利用日志、慢查询、性能指标等信息，提供更深入的领域判断和业务问题分析。这有助于减少平均故障修复时间（MTTR），使得即使非专业的用户也能快速诊断并解决问题。

在用户不直接感知的内部使用方面，LLM 技术同样发挥着重要作用。例如，在自动化测试中，LLM 可以用来生成数据库系统的测试用例，提高测试的覆盖率和效率。在代码审查中，LLM 可以帮助分析代码质量和风格一致性，提高开发效率。此外，LLM 还可以自动化生成性能分析报告、故障报告等，帮助技术团队快速获取关键信息，并管理企业内部的知识库，提高信息共享和检索效率。

> InfoQ：您提到的 Flow 和 Agent 应用分别是什么？能否详细解释这些技术方向？

李粒：在 LLM 应用中，我们可以区分三个技术层次：Wrapper, Flow, 和 Agent。每个层次都代表了与 LLM 交互的不同复杂度和应用场景。

1. LLM Wrapper：这是最基础的应用层次，涉及到与 LLM 的单次交互。在这个层次中，用户的请求直接被发送到模型，模型则返回一个响应。这种方式的能力上限直接受限于模型本身的推理能力。它适合于业务初期，当企业在寻找产品与市场契合度（PMF）时，可以快速开发和迭代。
2. Flow(DAG)：在 Flow 层次上，业务逻辑通过有向无环图（DAG）构建，实现与 LLM 的多次交互。每次交互都专注于解决一个特定问题，例如意图判断、内容改写、提供回答或批评等。这种方法有效克服了单次交互的局限性，支持构建更复杂的应用。适用于那些对如何利用 LLM 解决业务问题有清晰理解的场景，需要处理更复杂逻辑和提高准确度时采用。
3. Agent(Loop)：Agent 层次基于 Loop+Feedback 构建。在这里，LLM 能够根据人类输入自主决定和执行所需步骤，完成后自我评估是否存在异常，并据此进行调整。通过这种方式，LLM 能够显著提高结果的准确性，并解决更复杂的问题。构建 Agent 的逻辑与传统应用截然不同，其核心思想类似于构建一个团队或公司，每个 Agent 都是具有一定能力的工作力量。通过大量 Agent 的相互补充，最终共同做出相对合理的决策。

这些技术方向没有绝对的好坏，关键在于选择最适合当前业务需求的技术层次。随着业务的发展和需求的变化，可能需要从一个层次迁移到另一个层次，以适应更复杂的场景和提高系统的整体性能。

可以从这样的一张表格中，清晰的进一步认识不同层级应用的区别。

![技术方向对比](https://img1.pingcap.com/files/2024/05/20240530052146983.png)数据库的 Copilot 技术实践
-----------------

> InfoQ：在使用 LLM 解决实际问题时，您认为典型的步骤是什么？在这些步骤中，您所遇到的主要挑战和困难是什么？您是如何应对这些挑战的？

李粒：使用 LLM 解决实际问题通常涉及几个关键步骤，每个步骤都有其独特的挑战。

典型的业务实现步骤包括：

1. 业务洞察和需求判断：这是项目启动的第一步，需要深入理解业务需求和痛点。
2. 实验和可行性分析：在这一步，我们会进行初步的实验，测试 LLM 的适用性和效果。
3. 应用类型迭代：根据场景的复杂度，我们可能会从 Wrapper 开始，逐步迭代到 Flow 和 Agent。
4. 反馈设计和收集：设计有效的反馈机制，以收集用户反馈，这对模型的优化至关重要。
5. 持续优化设计和实施：根据收集到的反馈不断优化模型和业务流程。

在这些步骤中，我们遇到的主要挑战包括：

- 业务理解：深入理解业务需求常常需要与业务方紧密合作，这可能涉及到亲自参与业务流程。
- 模型能力：模型的理论能力与实际应用效果之间可能存在差距。
- 工具的成熟度：目前市场上的工具可能还不够成熟，我们有时需要进行开源贡献或自主研发。
- LLM 的稳定性：包括回答的稳定性和流程的稳定性，这需要通过精心设计的 Prompt 和流程控制机制来解决。
- LLM 的回答格式和质量：如何确保 LLM 提供的回答既符合业务需求又具有高质量，这需要通过持续的反馈和优化来实现。

**应对策略**：

- 深入合作：与业务方进行深入合作，确保充分理解业务需求。
- 持续实验：通过持续的实验和可行性分析，不断调整和优化 LLM 的应用。
- 反馈机制：设计有效的反馈机制，如 ChatBot 的点赞和相似性评价，SQL 的正确性评价等，以收集用户反馈并优化模型。
- 增强工具和流程：开发或改进工具，优化业务流程，提高 LLM 的应用效果和稳定性。

> InfoQ：什么是 Copilot，和其他 AI 应用方法有什么区别？

李粒：Copilot 是 AI 应用中的一种非常具体的交互方式，它在灵活性和易用性之间寻求平衡，旨在减轻用户的认知负担，同时提供有效的支持。

**Copilot 的核心特性和应用**：

Copilot 可以被视为用户的“数字助手”或“教练”，它嵌入到用户的工作流程中，提供主动的建议和支持。这种方法的关键在于它能够捕获大量的上下文信息，从而使 AI 能够提供更加精准和有用的建议。例如，GitHub Copilot 在编程环境中提供代码建议，而 Database Copilot 则可能在数据库管理或查询优化中提供帮助。

与其他 AI 应用方法相比，Copilot 的主要区别在于它的集成程度和交互方式。例如，与传统的聊天机器人相比，Copilot 更加深入地融入用户的具体任务和工作流程中，而不仅仅是提供一般性的对话支持。

与其他 AI 应用方法的比较：

1. 一般聊天（Chat）：这种方法提供最高的自由度，用户可以自由地以自然语言与系统交互。然而，它可能在易用性方面不如其他方法，尤其是在需要具体指导或操作的任务中。如 ChatGPT。
2. 专业聊天（Specialized Chat）：这种方法通过限制讨论的主题范围来提供更专业的支持。它比一般聊天更具指导性，但牺牲了一定的灵活性。如 TiDB Bot 只讨论 TiDB 的问题。
3. AI 启用的特性（AI-enabled Features）：这种方法提供最高的易用性，通常通过直接的按钮或切换来启用特定的 AI 功能。它的结果更可预测，但灵活性最低。如 Notion AI 的续写、翻译功能。

> InfoQ：数据库的 Copilot 是什么？

李粒：数据库 Copilot 是一种 AI 应用，它嵌入到用户的工作流程中，以提供实时的指导和建议，从而提高用户的工作效率和决策质量。这种应用模式在很多方面类似于飞行中的副驾驶，它不仅提供辅助，还能确保操作的正确性和安全性。

**数据库 Copilot 的核心特性和工作方式**：

- 集成与工作流程：数据库 Copilot 深入集成到用户的数据库操作和查询流程中。它通过分析用户的输入和行为，以及数据库的响应和状态，实时提供反馈和建议。
- 主动建议：与传统的工具不同，数据库 Copilot 采用主动出击的方式，根据当前的上下文和历史操作模式，推荐最佳的操作步骤或查询优化建议。
- 上下文感知：它能够理解和分析用户在数据库中的操作上下文，这使得它能够提供更加精准和有用的建议。
- 学习与适应：数据库 Copilot 通过持续学习用户的操作习惯和偏好，不断优化其建议算法，以提供更加个性化的支持。

**应用场景**：

- 查询优化：对于复杂的 SQL 查询，Copilot 可以提供性能优化建议，帮助用户改写查询以提高执行效率。
- 错误诊断：在用户遇到查询错误或性能瓶颈时，Copilot 可以提供诊断信息和修复建议。
- 学习辅助：对于不熟悉数据库操作的用户，Copilot 可以作为一个实时的学习工具，提供操作指导和最佳实践。

**挑战与对策：**

- 用户信任：建立用户对 Copilot 建议的信任是一个挑战。为此，我们确保所有建议都基于最佳实践和精确的数据分析，同时提供足够的解释和文档支持。
- 平衡自动化与控制：过度的自动化可能导致用户感觉失去控制。我们通过提供可调节的自动化级别和详细的用户控制选项来解决这一问题。
- 持续学习：为了保持 Copilot 的效果，我们持续收集用户反馈和操作数据，用于训练和优化模型。

> InfoQ：在处理复杂业务逻辑和规则时，如何保证生成的 SQL 语句的业务逻辑正确性？您是如何验证 Copilot 生成的 SQL 语句是否符合业务需求的？

李粒：确保生成的 SQL 语句符合业务逻辑的正确性是一个多步骤的过程，涉及到从数据架构的增强到持续的优化和反馈收集。我可以分几个部分来详细说明这个过程。

1. Schema 增强：在导入数据时，我们会对数据库的 schema 进行详细描述，包括列描述、表描述、表关系、数据库描述以及主实体。这有助于模型更好地理解数据结构和业务上下文。
2. 语料库建设：我们会在导入数据时同时引入与业务相关的语料库，这包括 schema 信息、领域知识和具体的 SQL 案例。这些语料库帮助模型学习特定业务领域的语言和逻辑。
3. Prompt（自问自答）：我们使用自问自答的方式来优化查询生成过程。这包括任务重写、实体提取、子问题生成及其解答，以及查询合并。这一步骤是确保生成的 SQL 语句逻辑正确性的关键。
4. 自我修正（Self-Fix）：我们对生成的 SQL 进行优化，确保其可执行性。如果一个查询执行报错，系统会将错误信息反馈给 LLM，然后尝试生成新的查询，直到得到一个可以正确执行的结果。
5. 持续优化：一个持续学习和适应的 Agent，专门负责优化 SQL 查询的生成和执行。

**Agent 的工作机制包括以下几个方面**：

- 自动化监控和反馈循环  
  Agent 持续监控数据库操作的效果，包括查询的执行时间、资源消耗等关键性能指标。同时，它也收集用户对查询结果的反馈，如点赞、点踩、修改等。基于这些数据，Agent 可以自动识别哪些查询需要优化，哪些已经达到了较好的性能。
- 动态学习和调整：  
  Agent 使用机器学习算法来分析收集到的数据，从中学习如何改进 SQL 语句的结构和逻辑。这包括选择更有效的索引、调整查询的结构、优化连接和过滤条件等。它还能根据数据库的实时状态动态调整查询策略，以适应数据量的变化、数据库负载的波动等外部条件。
- 生成和测试新的查询方案：  
  在识别出需要优化的查询后，Agent 会自动生成一系列改进的查询方案。这些方案会在一个安全的测试环境中执行，以评估它们的性能和准确性。通过比较不同方案的执行结果，Agent 可以选择最优的查询方案，并将其推荐给用户或自动应用到生产环境中。
- 持续迭代和优化：  
  这个过程是持续进行的。Agent 会不断迭代和优化其学习模型和查询生成算法，以适应新的业务需求和技术变化。它还会定期清理和更新其语料库，去除过时或低效的数据，确保学习资源的质量和相关性。

AI Agents 的高效运行和数据安全
--------------------

> InfoQ：LLM Agents 的落地涉及到服务开销和实时性，您是如何在平衡这两方面的情况下确保系统的高效运行和响应速度的？

李粒：这确实是在部署 LLM Agents 时面临的一个重要挑战。由于 LLM Agents 通常需要与 LLM 进行多次交互，这不仅增加了运行成本，还可能影响响应速度。这里的根本原因是 Agents 多次与 LLM 交互（常见有 20 次 -30 次）+ LLM 本身的运行速度 + LLM 成本很贵。

我们采取了几种策略来平衡这两方面的需求，以确保系统的高效运行。

1. 优化交互次数和处理速度：我们对不同类型的任务采用不同级别的 LLM 应用。例如，对于需要快速响应的任务，我们可能会使用 Wrapper 或 Flow 模式，这些模式的交互次数较少（通常是 1-5 次），可以在较短的时间内完成。对于可以容忍较长处理时间的任务，如后台分析、故障诊断等，我们会使用 Agents 模式。虽然这种模式需要更多的交互次数（20-30 次），但它可以处理更复杂的逻辑和循环，提供更深入的分析。
2. 提升 LLM 的运行效率：我们会根据需要调整服务的硬件配置，比如增加更多的 GPU 资源，以缩短处理时间。
3. 成本控制和业务适配：我们密切监控服务的成本和性能，确保在不牺牲用户体验的前提下，尽可能地降低成本。根据不同业务的特点和需求，选择最合适的 LLM 应用模式。例如，在一些非实时的应用场景中，可以接受较长的响应时间，这时可以使用更复杂的 Agents 模式来提高分析的准确性和深度。
4. 混合使用不同的模式：在某些情况下，我们会在 Flow 中嵌入 Agents 作为一个工具，用于解决特定的、易出错的问题。这种混合模式可以在保证效率的同时，解决复杂的问题。

> InfoQ：当 LLM Agents 需要获取相关业务或客户的数据以提高服务能力时，如何保护这些数据的安全和隐私？您采取了哪些措施来确保数据的保密性和完整性？

李粒：保护客户数据的安全和隐私是我们的首要任务。我们采取了多层次的措施来确保数据的保密性和完整性，这些措施涵盖了系统级和模型级的安全策略。

1. 系统级措施：
  
  
  - 数据访问控制：我们使用 TiDB 和 TiDB Cloud 来管理数据，这些系统具备强大的数据访问控制功能。除非得到用户的显式授权，否则无法访问业务数据。这确保了数据访问的合法性和安全性。
  - 数据脱敏：在处理业务数据时，我们会对数据进行脱敏处理。这意味着在数据被 LLM Agents 使用之前，所有敏感信息都会被去除或替换，以确保即使数据被泄露，也无法被恶意利用。
2. 模型级措施：  
  对于内部模型，我们可以严格控制数据处理和存储的环境。对于涉及第三方模型的交互，我们采取以下措施：
  
  
  - 数据最小化和脱敏：我们尽可能减少处理的数据量，并对所有敏感数据进行脱敏处理。这包括使用数据掩码或伪匿化技术，确保敏感信息不被暴露。
  - 字段替换：在某些情况下，我们会将敏感字段替换为随机字符（如 abcd），并提供这些字符的解释，这样即使数据被泄露，也无法直接关联到具体的业务信息。
3. 持续的安全审计和更新：
  
  
  - 安全审计：我们定期进行安全审计，以检查和评估现有的数据保护措施的有效性。
  - 技术更新：随着安全技术的发展，我们持续更新我们的数据保护技术和策略，以对抗新的安全威胁和挑战。

InfoQ：您认为未来数据库 Copilot 可能的发展方向是什么？

李粒：未来数据库 Copilot 的发展方向可能会集中在以下几个关键领域，以进一步提升其智能化水平和用户体验，同时解决现有的挑战：

1. 更深层次的自然语言处理能力  
  随着自然语言处理技术的进步，未来的数据库 Copilot 将能更准确地理解复杂的自然语言查询和指令，甚至能处理含有多重意图和复杂关系的查询。这将使非技术用户能够更直观、更自然地与数据库交互。
2. 增强的上下文理解和持续对话能力  
  未来的数据库 Copilot 可能会具备更强的上下文保持能力，能够在一系列交互中理解和引用之前的对话内容。这将使得进行复杂的数据分析和操作变得更加连贯和用户友好。
3. 自动化数据分析和见解生成  
  数据库 Copilot 将进一步发展其能力，不仅能执行查询，还能自动分析数据，提供业务见解和建议。例如，它可以自动识别数据趋势、异常和潜在的优化点，并向用户提出建议。
4. 更强的个性化和适应性  
  通过机器学习和用户行为分析，数据库 Copilot 将能够适应特定用户的查询习惯和偏好，提供更个性化的服务。例如，根据用户的角色和过去的查询历史，自动调整查询结果的展示方式和详细程度。
5. 更广泛的集成和兼容性  
  未来的数据库 Copilot 将支持更多类型的数据库和数据存储解决方案，包括 NoSQL 数据库、云存储和实时数据流平台。同时，它也将更容易集成到各种业务应用和数据分析工具中。
6. 增强的安全性和隐私保护  
  随着数据安全和隐私保护的重要性日益增加，未来的数据库 Copilot 将采用更先进的安全技术，如同态加密、访问控制和隐私保护算法，确保用户数据的安全和合规性。
7. 自动化数据库管理和优化  
  数据库 Copilot 将能够自动执行更多的数据库管理任务，如性能监控、故障诊断、自动调优和备份管理。这将大大减轻数据库管理员的负担，提高数据库的运行效率和可靠性。