使用 RAG 和 LLMs 查询数据库(Text-to-SQL)面临的 4 大挑战及其解决方案

在 Text-to-SQL 场景中,用户必须保证准确性、安全性和稳定性,才能信任 LLM 生成的结果。然而,这并非易事…

Howard Chi
Wren AI 联合创始人
更新于
2024 年 11 月 9 日
2024 年 11 月 25 日
6
分钟阅读
发布于
2024 年 4 月 17 日

LLMs 的出现展示了机器理解自然语言的能力。这些能力帮助工程师完成了许多了不起的事情,例如编写代码文档和代码审查,其中最常见的用例之一是代码生成;GitHub Copilot 已经展示了 AI 理解工程师意图进行代码生成(如 Python、Javascript 和 SQL)的能力,虽然 LLM 的理解 AI 能够理解我们想要做什么并相应地生成代码。

使用 LLM 解决 Text-to-SQL 问题

基于 LLMs 的代码生成能力,许多人开始考虑使用 LLMs 来解决长期以来使用自然语言从数据库中检索数据的难题,有时这被称为“Text-to-SQL”。“Text-to-SQL”的概念并不新鲜;在“检索增强生成 (RAG)”出现以及最新的 LLM 模型突破之后,Text-to-SQL 有了新的机会,可以利用 LLM 的理解能力结合 RAG 技术来理解内部数据和知识。

通过 RAG 架构实现 Text-to-SQL

使用 RAG 实现 Text-to-SQL 的挑战

在 Text-to-SQL 场景中,用户必须保证准确性、安全性和稳定性,才能信任 LLM 生成的结果。然而,要追求一个可执行、准确且安全可控的 Text-to-SQL 解决方案并非易事;在此,我们总结了使用 LLM 结合 RAG 通过自然语言查询数据库的四个主要技术挑战:上下文收集、检索、SQL 生成和协作

使用 LLM 结合 RAG 实现 Text-to-SQL 的四个主要挑战

挑战 1:上下文收集的挑战

  • 跨多样化源的互操作性:在各种来源、元数据服务和 API 之间无缝地泛化和规范化搜索和集成的信息。
  • 数据和元数据的复杂关联:这涉及到在文档存储中将数据与其元数据关联起来。它包括存储元数据、模式以及上下文信息,如关系、计算和聚合。

挑战 2:检索的挑战

  • 向量存储的优化:开发和实现针对向量存储的优化技术,例如索引和分块,对于提高搜索效率和精确度至关重要。
  • 语义搜索的精确度:挑战在于理解上下文中查询的细微差别,这会显著影响结果的准确性。这通常涉及查询重写、重新排名等技术。

挑战 3:SQL 生成的挑战

  • SQL 查询的准确性和可执行性:生成既准确又可执行的 SQL 查询是一个重大挑战。这要求 LLM 深入理解 SQL 语法、数据库模式以及不同数据库系统的特定方言。
  • 适应查询引擎方言:数据库在 SQL 实现上通常有其独特的方言和细微差别。设计能够适应这些差异并在各种系统之间生成兼容查询的 LLMs,给这一挑战增加了另一层复杂性。

挑战 4:协作的挑战

  • 集体知识积累:挑战在于创建一个机制,能够有效地收集、整合和利用多样化用户群体的集体见解和反馈,以提高 LLM 检索数据的准确性和相关性。
  • 访问控制:当我们最终检索到数据时,下一个最重要的挑战是确保现有的组织数据访问策略和隐私法规也适用于新的 LLM 和 RAG 架构。

我们如何解决它?面向 LLMs 的语义层。

为了解决上述挑战,我们需要在 LLMs 和数据源之间建立一个层,使 LLMs 能够从数据源学习业务语义和元数据的上下文;这一层还需要将语义映射到物理数据结构,这通常被称为“语义层”。 语义层必须解决语义和数据结构之间的连接问题,并协调访问控制和身份管理,确保只有合适的人访问合适的数据。

面向 LLMs 的语义层应包含哪些内容?这里我们将其概括为几个方面。

数据解释与呈现

  1. 业务术语和概念:语义层包含业务术语和概念的定义。例如,在语义层中定义了“收入”这样的术语,因此当业务用户在其 BI 工具中查询“收入”时,系统能够根据底层数据源准确知道要检索哪些数据以及如何计算。
  2. 数据关系:它定义了不同数据实体之间的关系。例如,客户数据如何与销售数据相关,或者产品数据如何与库存数据关联。这些关系对于执行复杂分析和生成洞察至关重要。
  3. 计算和聚合:语义层通常包含预定义的计算和聚合规则。这意味着用户无需知道如何编写复杂公式来计算例如年初至今的销售额;语义层根据其包含的定义和规则处理这些操作。

数据访问与安全

  1. 安全和访问控制:它还可以管理谁有权访问哪些数据,确保用户只能看到和分析其被授权访问的数据。这对于维护数据隐私和遵守法规至关重要。

数据结构与组织

  1. 数据源映射:语义层将业务术语和概念映射到实际数据源。这包括指定哪些数据库表和列对应于每个业务术语,从而使 BI 工具能够检索正确的数据。
  2. 多维模型:在某些 BI 系统中,语义层包含多维模型(如 OLAP 多维数据集),可以进行复杂分析和数据切片/切块。这些模型将数据组织成维度和度量,用户可以轻松地探索和分析。

元数据

  1. 元数据管理:它管理元数据,即关于数据的数据。这包括数据源的描述、转换、数据血缘以及任何有助于用户理解他们正在处理的数据的其他信息。

隆重推出 Wren AI - 端到端开源 SQL AI Agent Text-to-SQL 整体解决方案

Wren AI 是一个开源 SQL AI Agent ,赋能数据、产品和业务团队通过聊天访问洞察,内置精心设计的直观 UI 和 UX,并与 Excel 和 Google Sheets 等工具无缝集成。以下是一些亮点关键功能。

1. 用任何语言与您的数据对话

Wren AI 支持您的语言,例如英语、德语、西班牙语、法语、日语、韩语、葡萄牙语、中文等。向 Wren AI 提出您的业务问题,解锁有价值的洞察。它超越了表面层面的数据分析,揭示有意义的信息,并简化了从潜在客户评分模板到客户细分等问题的答案获取。

2. 通过精心设计的 UI/UX 进行语义索引

Wren AI 实现了语义引擎架构,为 LLM 提供您的业务上下文;您可以轻松地在数据模式上建立逻辑呈现层,帮助 LLM 更好地了解您的业务上下文。

3. 生成带有上下文的 SQL 查询

通过 Wren AI,您可以使用“建模定义语言”处理元数据、模式、术语、数据关系以及计算和聚合背后的逻辑,减少重复编码并简化数据连接。

4. 无需编写代码即可获取洞察

在 Wren AI 中开始新的对话时,您的问题用于查找最相关的表格。LLM 会从中生成三个相关问题供用户选择。您还可以提出后续问题以获得更深入的洞察。

5. 轻松导出和可视化您的数据

Wren AI 提供无缝的端到端工作流程,使您能够轻松将数据连接到流行的分析工具,例如ExcelGoogle Sheets。这样,您的洞察仍然易于访问,可以使用您最熟悉的工具进行进一步分析。

对 Wren AI 感兴趣并想了解更多?

👉 使用您的数据在Wren AI Cloud上试用或在您的本地环境中安装

立即使用 AI 赋能您的数据吧?!

谢谢!您的提交已收到!
哎呀!提交表单时出现问题。