当前位置: 首页 > article >正文

利用LangGraph和Waii实现你的chat2db!

0 前言

在数据分析领域快速发展的今天,通过自然语言与数据交互的能力变得越来越有价值。对话式分析旨在使复杂数据结构对没有专业技能的用户更易于访问。

LangGraph 是个框架,用于构建使用语言模型的状态化、多代理应用程序。Waii 提供文本到 SQL 和文本到图表的功能,使用户能够通过自然语言与数据库和数据可视化进行交互。

本文探讨 Waii 的能力如何增强 LangGraph 应用程序在对话式分析方面的应用。重点关注 Waii 处理数据库中复杂连接的方法,这是从自然语言查询生成准确 SQL 的一个关键方面。

1 Waii 的文本到 SQL 能力

对话式分析的核心是将自然语言转换为数据库操作的能力。Waii 提供了一个全面的文本到 SQL 解决方案,在几个关键领域很优秀:

  • 高精度的复杂模式连接
  • 适用于大型数据库的可扩展表选择
  • 定制编译器,用于语法正确性和查询优化
  • 专门针对过滤器、排序顺序、常见指标等的代理流程

下一节深入探讨 Waii 如何处理复杂连接。关注这点,因为它是对话式分析的基本能力,许多当今的解决方案都在努力应对。我们将检查一个示例,看看连接是如何构建的,并解释如何轻松地将 Waii 集成到你现有的 LangGraph 应用程序中以实现这些收益。

2 深入研究:连接处理

示例

想象一下,一个流媒体平台的数据团队被指派创建一个全面的导演表现仪表板。他们需要通过结合来自电影、电视剧、类型、关键词、奖项和演员合作的数据来分析什么使导演成功。

指令

创建一个视图,为排名前 5 的导演(按标题数量最高)提供以下信息:

  • 导演的名字
  • 总标题数量
  • 最频繁的类型
  • 最频繁的关键词
  • 获得的奖项数量
  • 电影总收入
  • 他们合作过的演员名单

查询

Waii 根据这些指令生成的完整查询可以在附录 A 中找到。这里有一个片段,显示了一些连接:

...
FROM ranked_directors AS rd
INNER JOIN movie_db.movies_and_tv.people AS p
    ON rd.people_id = p.people_id
LEFT JOIN combined_director_genres AS cdg
    ON rd.people_id = cdg.people_id AND cdg.genre_rank = 1
LEFT JOIN combined_director_keywords AS cdk
    ON rd.people_id = cdk.people_id AND cdk.keyword_rank = 1
LEFT JOIN director_awards AS da
    ON rd.people_id = da.people_id
LEFT JOIN director_revenue AS dr
    ON rd.people_id = dr.people_id
LEFT JOIN director_actors AS d_actors
    ON rd.people_id = d_actors.people_id
...

查询分析

此查询展示了许多复杂的连接能力:

  1. 复杂连接图: 查询中使用了 14 个具有不同限定符、元数和语义的表。
  2. 桥接表连接: 用于连接多对多关系中的实体(例如,导演与电影、电视剧和演员)。
  3. 维度表连接: 用于通过类型和关键词表中的描述性信息丰富数据。
  4. 复杂连接链: 实现连接遥远的实体,例如通过他们的合作将导演与演员联系起来。
  5. 全外连接: 用于结合导演在电影和电视剧中的工作,确保全面覆盖。
  6. 左连接用于可选数据: 当包括可能不是所有导演都存在的数据时应用(例如,奖项、收入)。

(这个列表不是穷尽的,还有许多其他考虑因素用于准确的连接处理,例如:on 和 where 子句之间的区别,连接顺序,非等连接,用于半结构化数据的横向连接等)

Waii 理解数据库关系的方法是关键。以下是它的工作原理:

3 知识图构建

Waii 自动构建数据库对象的全面知识图。这个图包含来自多个来源的信息:

  • 模式信息
  • 约束(例如,主键/外键)
  • 基于分析列名和数据模式的预测
  • 从查询历史中提取和排名的连接图
  • 数据库文档
  • 数据目录中定义的关系
  • 随着时间的推移从系统使用中获得的反馈

这个图不断更新和完善。每次模式更改、新查询和新的反馈都被分析并整合到图中。

4 用于查询构建的代理流程

有了知识图,Waii 采用一系列代理流程来构建最优查询:

1. 表选择: 分析用户的请求以确定最相关的表。常见的连接关系和对关系语义的理解用于找到可能不直接语义链接到用户输入的表和路径。

2. 连接图分析: 提议和评估选定表之间的潜在连接路径。这包括评分连接图与之前看到的连接和关系语义理解的对齐程度。

3. 评估/细化连接条件: 单独检查以确保外连接和连接条件正确应用。这也是我们查看外连接的“on”与“where”子句条件的地方。

4. 查询构建: 根据选择的连接图和条件构建 SQL 查询。

5. 编译和优化: 确保连接在语法上正确并针对性能进行优化。我们还执行用户对查询的操作约束(例如,最大输出行数,最大输入分区)。

结果是,SQL 查询不仅准确回答了用户的问题,而且以优化的方式针对特定的数据库结构和查询引擎。

5 构建对话式分析应用程序

现在我们已经了解了 Waii 如何处理连接和文本到 SQL,让我们探讨如何将这种能力与 LangGraph 结合起来构建复杂的对话式分析应用程序。

LangGraph 是构建代理系统的事实上的框架。对于任何需要精确、周到的数据库访问的 LangGraph 应用程序,Waii 是一个很好的补充。将 Waii 与 LangGraph 集成允许开发人员创建在保持交互上下文的同时执行复杂查询的系统,提高了应用程序的整体智能。

6 实现细节

实施此系统涉及几个关键组件:

1. LangGraph 框架: 提供多代理系统的总体结构,管理状态和代理交互。

2. Waii API 集成: SQL 生成和可视化代理将调用 Waii 的 API 以利用其文本到 SQL 和文本到图表的能力。

3. 自然语言处理: 用于理解用户输入和生成易于理解的响应。

4. Waii 执行 API: 执行生成的 SQL 查询对实际数据库进行操作。注入代码以执行用户级别的安全策略,例如限制行/列访问。

5. 状态管理: 维护多个用户交互之间的上下文,允许后续问题和迭代分析。

典型的交互流程可能如下所示:

  1. 用户输入一个问题。
  2. LangGraph 问题分类器决定请求最好从内存还是数据库中回答
  3. [可选] Waii SQL 生成器创建一个优化的 SQL 查询。
  4. [可选] Waii SQL 执行器注入安全约束,执行查询并检索结果。
  5. [可选] 结果分类器决定输出应该是数据还是可视化。
  6. [可选] Waii 图表生成器根据数据和元数据创建相关图表。
  7. LangGraph 洞察生成代理综合最终结果供用户使用
  8. 循环重复。

(可选 / 图像中未显示:在错误或异常情况下,LangGraph 循环,重写输入并重新生成所需的对象。)

在此过程中,对话管理代理维护状态,允许上下文后续问题和更自然、流畅的交互。

示例的完整实现在附录 B 中给出。

7 好处和用例

LangGraph 和 Waii 的这种集成用于数据库访问提供了几个关键好处:

  1. 可访问性: 通过自然语言交互,复杂的数据分析变得对非技术用户可访问。
  2. 分析深度: 系统可以处理手动制定具有挑战性的复杂查询。
  3. 上下文理解: 维护的状态允许更自然、上下文感知的关于数据的对话。
  4. 视觉洞察: 自动生成的相关可视化增强了对数据的理解。
  5. 可扩展性: 系统可以适应大型、复杂的数据库,而不会成比例地增加最终用户的复杂性。

潜在的用例涵盖各个行业:

  • 商业智能: 执行人员可以在不学习 SQL 或 BI 工具的情况下查询复杂的业务数据。
  • 医疗保健: 研究人员可以探索大型医疗数据库,关联患者结果中的不同因素。
  • 金融: 分析人员可以快速调查市场趋势和公司绩效的多个维度。
  • 电子商务: 营销团队可以分析客户行为模式以指导策略。
  • 教育: 管理员可以洞察学生表现和资源分配。

8 结论

LangGraph 的多代理能力和 Waii 的高级文本到 SQL 和可视化功能的结合为分析和数据处理开辟了新的机会。通过使复杂的数据分析通过自然语言变得可访问,这种方法大大降低了从数据中获得高质量洞察的障碍。

关注我,紧跟本系列专栏文章,咱们下篇再续!

作者简介:魔都架构师,多家大厂后端一线研发经验,在分布式系统设计、数据平台架构和AI应用开发等领域都有丰富实践经验。

各大技术社区头部专家博主。具有丰富的引领团队经验,深厚业务架构和解决方案的积累。

负责:

  • 中央/分销预订系统性能优化
  • 活动&券等营销中台建设
  • 交易平台及数据中台等架构和开发设计
  • 车联网核心平台-物联网连接平台、大数据平台架构设计及优化
  • LLM Agent应用开发
  • 区块链应用开发
  • 大数据开发挖掘经验
  • 推荐系统项目

目前主攻市级软件项目设计、构建服务全社会的应用系统。

在这里插入图片描述

大模型&AI产品经理如何学习

求大家的点赞和收藏,我花2万买的大模型学习资料免费共享给你们,来看看有哪些东西。

1.学习路线图

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己整理的大模型视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

在这里插入图片描述

在这里插入图片描述

(都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要点击下方图片前往获取

3.技术文档和电子书

这里主要整理了大模型相关PDF书籍、行业报告、文档,有几百本,都是目前行业最新的。
在这里插入图片描述

4.LLM面试题和面经合集

这里主要整理了行业目前最新的大模型面试题和各种大厂offer面经合集。
在这里插入图片描述

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

在这里插入图片描述


http://www.kler.cn/news/351010.html

相关文章:

  • Node.js实现文件上传下载
  • 【基于WireGuard搭建公司服务器虚拟专用通道服务】
  • Docker入门之构建
  • docker常用命令整理
  • Vue弹窗用也可以直接调用Js方法了
  • 详解Oracle审计(二)
  • 嵌入式工业显示器在食品生产行业的应用
  • 机器学习面试笔试知识点-线性回归、逻辑回归(Logistics Regression)和支持向量机(SVM)
  • postgresql 安装
  • 系统开发基础——开发模型
  • 数据结构 ——— 顺序表和链表的区别以及各自的优缺点
  • 使用Tftpd32工具数据互传是一种什么体验?SSD201/202D开发板演示,深圳触觉智能嵌入式方案商
  • Git上传命令汇总
  • stm32 rtx操作系统 堆(heap) 栈(stack) keil在线监测
  • 模板匹配的交通标志识别系统MATLAB
  • AI-基本概念-训练集、验证集、测试集
  • 前端vue部署网站
  • 卷积神经网络(CNN)-Padding介绍
  • 每日OJ题_牛客_小乐乐改数字_模拟_C++_Java
  • 护眼台灯横评:书客、柏曼、明基哪款使用体验好,又能护眼?
  • 【安当产品应用案例100集】023-企业内部对Oracle数据库动态凭据的管理
  • golang一个轻量级基于内存的kv存储或缓存
  • USB驱动程序知识介绍
  • es kibana .logstash离线集群安装
  • 总结ES6—ES13新特性
  • java导出带图形的word