【AI 技术分享】大模型与数据检索的探索实践

本文涉及的产品
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_高级版,每接口累计50万次
NLP自然语言处理_基础版,每接口每天50万次
简介: 本文基于2024年9月27日与阿里云合办的线下沙龙分享整理而成,探讨如何通过大语言模型(LLM)让数据访问更简单。随着企业数据量增长,传统数据访问方式已难以满足需求。LLM结合自然语言检索,使非技术用户能直接用自然语言与数据交互,降低数据访问门槛。文章介绍了NL2SQL技术,通过LLM理解自然语言问题并生成SQL查询,实现高效数据获取。同时,探讨了AskTable架构及其在实际应用中的挑战与解决方案。

本文基于 2024 年 9 月 27 日 与阿里云合办的线下沙龙分享整理而成。)

探索的起点

我们在AskTable的探索起点,是一个简单的问题:如何让数据变得更加容易访问?

随着企业中数据量的增长,传统的数据访问方式逐渐难以满足需求,尤其是数据存储在多种数据库中、结构复杂、逻辑多样时,如何让非技术用户直接获取数据成了巨大挑战。

arxiv.org/abs/2408.05…

大模型的出现,自然语言检索成为了可能。大语言模型(LLM)与数据检索的结合,通过LLM对自然语言的理解能力,使用户能够用自然语言与数据交互,摆脱对SQL等编程语言的依赖,降低了数据访问的门槛,使数据获取更加直观和高效。

NL2SQL

企业大量高价值的数据都是结构化的,而这类数据大部分则用 SQL Database 来存储。NL2SQL 期望解决的问题是,如何将用户的问题,转换为到数据库中查询数据的 SQL。

AI 的仿生学

在希望 AI 来解决问题之前,我们先思考下,人类是如何解决问题的。

为了从数据中获取信息,工程师通常会经历理解问题、 分析查表、 编写 SQL 这三个步骤。

我们举一个例子,来看下人类是如何理解问题的。

示例问题是 :“告诉我所有在上个月购买商品的品类超过3种并且消费金额超过200元的客户联系方式”

步骤 1:理解问题

通常涉及到以下步骤:

  1. 提取关键词:例如“上个月”、“3种”、“200元”等。
  2. 约束条件的歧义:上个月是一个相对现在的时间描述,联系方式也存在可能的多义性(手机、邮箱等都是联系方式)。
  3. 自然语言的多义性:自然语言有其天然的复杂性,包括词法语法的歧义、开放式问题、不明确的定义、拼写或输入错误等。

理解问题的核心是搞明白用户要什么,对自然语言的理解能力。这是大模型的基础能力。

步骤 2:分析和查表

接下来,就是找数据。一般企业的数据表都非常多,只要找对了表,才能查到对的数据。

核心内容包括:

  1. 找到关键词和数据库中的字段对应关系:例如“客户”可以对应customers.customerId,而“品类”可能涉及多个字段,如Category和Subcategory。
  2. 数据库的复杂性:数据分析过程中,需要考虑数据库的多样性和复杂性,如:
  1. 字段的模糊性:例如“Datetime”字段可能表示不同时间含义。
  2. 字段之间的关系:单次消费还是累计消费?
  3. 专有名词、拼音、字母缩写的处理。
  4. 数据类型:例如Gender、Number等。
  1. 业务知识的重要性:查找数据表的过程需要理解数据的domain knowledge(领域知识)并且熟知数据库的schema。

对业务数据和表结构的深入理解是正确生成SQL查询的前提。

步骤 3:编写SQL

找到数据之后,就是编写 SQL 来查询的过程。该过程需要将用户的问题精确映射到数据库的结构和内容上。

挑战和复杂性:

  • 复杂的 外键 关系: 表之间可能存在复杂的外键关系,尤其是涉及多表联查的情况。
  • 多种写法:同样的需求可能存在多种SQL写法,具体如何编写取决于数据库结构和查询目标。
  • schema的定义:需要理解具体数据库的表结构(schema),包括字段和关系。
  • 方言:不同数据库(例如MySQL、PostgreSQL等)有各自的SQL方言,需要针对不同的语法进行调整。

我们的思考和实践

RAG的故事

在讲我们的解决方案之前,不得不提一下 RAG。

RAG(Retrieval-Augmented Generation) 是将检索和生成结合来回答用户问题的技术。

工作流程概述:用户提出问题(Question),经过预处理(Preprocess),系统在向量数据库(Vector DB)中进行检索(Retrieve),最后使用大语言模型生成响应(Response)。

  • 用户(User)提问:用户以自然语言提出问题。
  • 预处理(Preprocess):对用户的问题进行预处理,以便更好地理解和格式化该问题。
  • 检索(Retrieve):从向量数据库(Vector DB)中检索相关信息。向量数据库用于存储嵌入(embedding),通过相似度匹配检索与问题相关的文档或数据。
  • 生成响应(Response):将检索到的信息输入到大语言模型中,结合检索结果来生成最终的回答。

RAG通过将外部知识引入LLM,能够有效弥补模型知识的不足。但普通的 RAG 架构对查询结构化数据,比如 SQL 数据库,有明显的不足。因为结构化数据不能像文本内容那样,做切片、 做 Embeding、做召回。

Structured RAG

简单点,是否可以直接将 SQL Database 中的数据,同步到 Vector DB,然后做 RAG?如下图。

很明显,有这些问题:

  • 如何同步:数据同步?向量数据库和关系型数据库
  • 形式问题:结构化数据到更容易被向量数据库处理的自然语言
  • 上下文窗口:在处理大量数据时,如何确保上下文信息能够被有效利用。
  • 聚合操作(aggregate/group by):在复杂查询中,聚合操作(例如求和、分组)如何被正确处理。
  • 权限和数据安全:在处理用户数据时,如何确保数据安全和权限控制。

通用的 RAG无法解决这类问题,我们需要一款专门为结构化数据设计的 Structured RAG。

主要流程如下:

  • 预处理(Preprocess) :在用户提出问题后,首先对其进行预处理,以消除问题中的歧义,并尽可能使需求清晰、明确、独立。
  • SQL生成:结合数据库的schema和相关业务信息,调用大语言模型生成SQL查询。这一步强调了生成SQL是通过理解数据库结构和用户需求实现的。
  • SQL执行与结果返回:
  • 执行SQL:在向量数据库中检索相关信息并生成SQL。
  • 返回结果:修正并执行生成的SQL,将查询结果返回给用户。

在LLM Structured RAG系统中,SQL仍然是关键部分。SQL生成能力需要结合LLM的自然语言理解和数据库的结构化信息,这对于有效完成数据操作和返回结果是至关重要的。

Pipeline

arxiv.org/abs/2408.07…

为了让查询结果更准确,从用户问题到SQL查询的典型Pipeline流程,分为检索、生成和纠正三个阶段。

每个阶段都有具体的子任务:

  1. 预处理(Preprocessing):

包括对数据库schema的理解,数据库内容的检索,以及对提示词或示例的处理。这一步确保输入的自然语言查询能够被更好地理解和处理。

  1. 生成阶段(Generation):
  1. 分解(Decomposition) :将复杂的问题分解为更简单的子任务。
  2. 思维链(Chain-of-Thought, CoT) :利用思维链来生成推理过程,使得生成SQL时具有更好的逻辑连续性。
  1. 后处理(Post-processing):
  1. 纠正(Correction) :包括执行导向的解码,通过执行SQL查询的结果来修正SQL。
  2. 排序(Ranking) :对生成的SQL进行排序以选取最佳的查询版本。

将自然语言转换为SQL查询的复杂过程,包括理解用户意图、生成SQL以及通过执行和结果反馈来优化SQL的准确性。这个多阶段的处理流程确保生成的SQL查询不仅正确,还具有更高的执行效率和业务关联度。


向量数据库存储了embeddings(schemas、examples、values),这些信息可以帮助在自然语言到SQL的转换中更好地理解上下文。

在生成SQL后,模型会再次通过检索阶段从向量数据库中获取相关的schema、示例等,帮助生成更准确的SQL。

关键挑战:

  • Schema的复杂性:数据库的schema可能非常多,因此需要有足够的上下文长度(context length)来处理这些信息。
  • 示例问题(few shots) :示例数据可能和具体的问题不相关,因此需要精心挑选相关的few-shot示例来帮助理解和生成。
  • 描述性的schema和字段名:为了更好地生成有效的SQL,需要提供详细的schema描述和字段名称。

结合向量数据库可以更好地利用数据库内容和结构信息来生成精准的SQL查询,增强LLM的生成能力,并提高查询的准确性和上下文的相关性。

AskTable 架构

docs.asktable.com/docs/chat-d…

这个架构图中详细描述了如何通过各种模块完成用户的查询需求。图中有多个部分,下面进行概述:

  1. AskTable Meta Retrival模块
  1. 利用大语言模型(Qwen/GPT等)来生成向量嵌入(Query Embeddings)。
  2. 通过查询向量数据库(Meta Brain)来检索与问题相关的信息。
  1. AskTable Meta Brain模块
  1. 支持多种数据库系统,如MySQL、PostgreSQL、TiDB等,处理表结构和字段相关的元数据。
  2. 将获取的嵌入与具体数据库信息结合,帮助理解问题中的意图。
  1. AskTable Data Retrieval模块
  1. 使用大语言模型生成具体的SQL查询。
  2. 结合权限管理,对生成的SQL进行权限校验,确保查询的合规性。
  3. 对SQL进行执行,将查询结果返回给用户。
  4. 自动纠错,多路召回/查询等强化技术
  1. 查询缓存(Query Cache)
  1. 在系统中有查询缓存机制,通过缓存提高重复查询的效率,减少系统负担。

我们结合大语言模型、向量数据库、元数据查询等技术模块,实现从用户问题到SQL生成与执行的全流程。架构中考虑了元数据管理、权限控制以及缓存等机制,以确保系统的高效性和安全性。

NL2SQL easy?

做一个 Demo 很简单,但真正落地并不容易,这篇论文中,详细介绍了需要充分利用预处理、复杂的模型策略和后处理来确保结果的正确性和有效性。

arxiv.org/abs/2408.05…

仍然要考虑

用户交互和系统设计方面的考量:

  • 提问的艺术:引导用户如何更好地提出问题
  • 角色和授权,权限控制:确保不同用户有不同的数据访问权限,防止未经授权的数据泄漏。
  • 字段描述的设计、业务文档:如何有效地描述字段以帮助模型理解业务含义。
  • 冗余数据和 fallback 设计:为系统提供fallback机制,以便在查询失败时有替代方案。
  • SQL注入和数据泄露防护:在SQL生成和执行时防止SQL注入和数据泄露。
  • SQL 的方言适配:针对不同数据库,SQL语法可能存在差异,需要确保生成的SQL适配具体的数据库。

模型和系统实现方面的考量:

  • 模型能力和效率:确保大语言模型在生成SQL时的效率和能力,避免性能瓶颈。
  • 方案成本:考虑实现方案的成本,包括计算资源和数据处理成本。
  • 数据集:使用的训练和评估数据集需具有代表性,以确保模型能够处理多样化的问题。
  • 结果的解释性、可靠性和一致性:生成的SQL不仅需要是正确的,还需要具有解释性和一致性,以便用户理解和信任结果。

这些方面共同确保系统在用户使用时既高效又安全,并能够提供准确和可解释的查询结果。

我们在哪?到哪里?

随着技术的发展,自然语言处理到SQL生成的能力逐步增强,从简单的词汇和规则到对复杂业务的理解与高效的SQL生成。

对于此,我们的选择是:

  • ALL in LLM:我们是 LLM 虔诚的信徒,不引入复杂的系统设计,尽可能激发LLM的潜能。
  • 业务第一:我们专注于 LLM 在具体业务场景的落地,聚焦上层应用的落地
  • 安全性:我们相信开源模型的能力,寻找最佳的本地部署方案


作者:AskTable

目录
相关文章
|
1天前
|
人工智能 算法 计算机视觉
【01】opencv项目实践第一步opencv是什么-opencv项目实践-opencv完整入门以及项目实践介绍-opencv以土壤和水滴分离的项目实践-人工智能AI项目优雅草卓伊凡
【01】opencv项目实践第一步opencv是什么-opencv项目实践-opencv完整入门以及项目实践介绍-opencv以土壤和水滴分离的项目实践-人工智能AI项目优雅草卓伊凡
【01】opencv项目实践第一步opencv是什么-opencv项目实践-opencv完整入门以及项目实践介绍-opencv以土壤和水滴分离的项目实践-人工智能AI项目优雅草卓伊凡
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
Baichuan-M1-14B:AI 助力医疗推理,为患者提供专业的建议!百川智能开源业内首个医疗增强大模型,普及医学的新渠道!
Baichuan-M1-14B 是百川智能推出的首个开源医疗增强大模型,专为医疗场景优化,支持多语言、快速推理,具备强大的医疗推理能力和通用能力。
82 16
Baichuan-M1-14B:AI 助力医疗推理,为患者提供专业的建议!百川智能开源业内首个医疗增强大模型,普及医学的新渠道!
|
8天前
|
人工智能 测试技术 Python
VideoChat-Flash:上海AI Lab开源高效处理超长视频的多模态大模型
VideoChat-Flash 是上海人工智能实验室等机构推出的多模态大模型,通过分层压缩技术高效处理长视频,支持长达数小时的视频输入,推理速度提升5-10倍。
40 1
VideoChat-Flash:上海AI Lab开源高效处理超长视频的多模态大模型
|
14天前
|
弹性计算 人工智能 自然语言处理
OS Copilot——面向未来的AI大模型
阿里云的智能助手`OS Copilot`是一款基于大模型构建的操作系统智能助手,支持自然语言问答、辅助命令执行、系统运维调优等功能。
46 8
OS Copilot——面向未来的AI大模型
|
15天前
|
数据采集 人工智能 安全
1000多个智能体组成,AI社会模拟器MATRIX-Gen助力大模型自我进化
在人工智能领域,大型语言模型(LLMs)的发展迅速,但如何提升其指令遵循能力仍是一大挑战。论文提出MATRIX-Gen,一个基于多智能体模拟的AI社会模拟器。MATRIX-Gen通过模拟智能体交互生成多样化的现实场景,不依赖预定义模板,从而合成高质量指令数据。它包括MATRIX模拟器和MATRIX-Gen指令生成器,能生成监督微调、偏好微调及特定领域的数据集。实验表明,使用MATRIX-Gen合成的数据集微调后的模型在多个基准测试中表现出色,显著优于现有方法。然而,该方法也面临智能体和场景规模对数据质量的影响等挑战。
62 33
|
7天前
|
人工智能 供应链 搜索推荐
大模型进化论:AI产业落地将卷向何方?
大模型进化论:AI产业落地将卷向何方?
50 11
|
10天前
|
机器学习/深度学习 存储 人工智能
AI实践:智能工单系统的技术逻辑与应用
智能工单系统是企业服务管理的核心工具,通过多渠道接入、自然语言处理等技术,实现工单自动生成、分类和分配。它优化了客户服务流程,提高了效率与透明度,减少了运营成本,提升了客户满意度。系统还依托知识库和机器学习,持续改进处理策略,助力企业在竞争中脱颖而出。
34 5
|
14天前
|
存储 人工智能 缓存
面向AI的存储软硬结合实践和创新
本次分享的主题是面向AI的存储软硬结合实践和创新,由阿里云智能集团专家袁茂军、王正勇和常存银主讲。内容涵盖三大板块:自研存储部件设计及实践、自研存储服务器设计及实践、以及面向AI场景的存储软硬一体解决方案及实践。重点介绍AliFlash系列存储部件的演进与优化,包括QLC SSD的设计挑战与解决方案,并探讨了高性能存储服务器在AI场景中的应用与未来发展方向。通过软硬件深度融合,旨在提升AI业务的性能与效率,降低总拥有成本(TCO)。
|
15天前
|
机器学习/深度学习 存储 人工智能
淘天算法工程师玩转《黑神话》,多模态大模型如何成为天命AI
淘天集团未来生活实验室的算法工程师们以ARPG游戏《黑神话:悟空》为平台,探索多模态大模型(VLM)在仅需纯视觉输入和复杂动作输出场景中的能力边界。他们提出了一种名为VARP的新框架,该框架由动作规划系统和人类引导的轨迹系统组成,成功在90%的简单和中等难度战斗场景中取得胜利。研究展示了VLMs在传统上由强化学习主导的任务中的潜力,并提供了宝贵的人类操作数据集,为未来研究奠定了基础。
|
16天前
|
人工智能 弹性计算 JSON
AI大模型复习“搭子”—部署流程演示
本文主要介绍文档智能,介绍利用大模型构建知识库和AI学习助手的部署流程,主要包括以下几方面的内容: 1.什么是文档智能 2.文档智能 & RAG 3.基于文档智能和百炼平台的RAG应用案例

热门文章

最新文章