在数据分析领域快速发展的今天,通过自然语言与数据交互的能力变得越来越有价值。对话式分析旨在使复杂数据结构对没有专业技能的用户更易于访问。
LangGraph 是个框架,用于构建使用语言模型的状态化、多代理应用程序。Waii 提供文本到 SQL 和文本到图表的功能,使用户能够通过自然语言与数据库和数据可视化进行交互。
本文探讨 Waii 的能力如何增强 LangGraph 应用程序在对话式分析方面的应用。重点关注 Waii 处理数据库中复杂连接的方法,这是从自然语言查询生成准确 SQL 的一个关键方面。
对话式分析的核心是将自然语言转换为数据库操作的能力。Waii 提供了一个全面的文本到 SQL 解决方案,在几个关键领域很优秀:
下一节深入探讨 Waii 如何处理复杂连接。关注这点,因为它是对话式分析的基本能力,许多当今的解决方案都在努力应对。我们将检查一个示例,看看连接是如何构建的,并解释如何轻松地将 Waii 集成到你现有的 LangGraph 应用程序中以实现这些收益。
想象一下,一个流媒体平台的数据团队被指派创建一个全面的导演表现仪表板。他们需要通过结合来自电影、电视剧、类型、关键词、奖项和演员合作的数据来分析什么使导演成功。
创建一个视图,为排名前 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 ...
此查询展示了许多复杂的连接能力:
(这个列表不是穷尽的,还有许多其他考虑因素用于准确的连接处理,例如:on 和 where 子句之间的区别,连接顺序,非等连接,用于半结构化数据的横向连接等)
Waii 理解数据库关系的方法是关键。以下是它的工作原理:
Waii 自动构建数据库对象的全面知识图。这个图包含来自多个来源的信息:
这个图不断更新和完善。每次模式更改、新查询和新的反馈都被分析并整合到图中。
有了知识图,Waii 采用一系列代理流程来构建最优查询:
1. 表选择: 分析用户的请求以确定最相关的表。常见的连接关系和对关系语义的理解用于找到可能不直接语义链接到用户输入的表和路径。
2. 连接图分析: 提议和评估选定表之间的潜在连接路径。这包括评分连接图与之前看到的连接和关系语义理解的对齐程度。
3. 评估/细化连接条件: 单独检查以确保外连接和连接条件正确应用。这也是我们查看外连接的“on”与“where”子句条件的地方。
4. 查询构建: 根据选择的连接图和条件构建 SQL 查询。
5. 编译和优化: 确保连接在语法上正确并针对性能进行优化。我们还执行用户对查询的操作约束(例如,最大输出行数,最大输入分区)。
结果是,SQL 查询不仅准确回答了用户的问题,而且以优化的方式针对特定的数据库结构和查询引擎。
现在我们已经了解了 Waii 如何处理连接和文本到 SQL,让我们探讨如何将这种能力与 LangGraph 结合起来构建复杂的对话式分析应用程序。
LangGraph 是构建代理系统的事实上的框架。对于任何需要精确、周到的数据库访问的 LangGraph 应用程序,Waii 是一个很好的补充。将 Waii 与 LangGraph 集成允许开发人员创建在保持交互上下文的同时执行复杂查询的系统,提高了应用程序的整体智能。
实施此系统涉及几个关键组件:
1. LangGraph 框架: 提供多代理系统的总体结构,管理状态和代理交互。
2. Waii API 集成: SQL 生成和可视化代理将调用 Waii 的 API 以利用其文本到 SQL 和文本到图表的能力。
3. 自然语言处理: 用于理解用户输入和生成易于理解的响应。
4. Waii 执行 API: 执行生成的 SQL 查询对实际数据库进行操作。注入代码以执行用户级别的安全策略,例如限制行/列访问。
5. 状态管理: 维护多个用户交互之间的上下文,允许后续问题和迭代分析。
典型的交互流程可能如下所示:
(可选 / 图像中未显示:在错误或异常情况下,LangGraph 循环,重写输入并重新生成所需的对象。)
在此过程中,对话管理代理维护状态,允许上下文后续问题和更自然、流畅的交互。
示例的完整实现在附录 B 中给出。
LangGraph 和 Waii 的这种集成用于数据库访问提供了几个关键好处:
潜在的用例涵盖各个行业:
LangGraph 的多代理能力和 Waii 的高级文本到 SQL 和可视化功能的结合为分析和数据处理开辟了新的机会。通过使复杂的数据分析通过自然语言变得可访问,这种方法大大降低了从数据中获得高质量洞察的障碍。
关注我,紧跟本系列专栏文章,咱们下篇再续!
作者简介:魔都架构师,多家大厂后端一线研发经验,在分布式系统设计、数据平台架构和AI应用开发等领域都有丰富实践经验。
各大技术社区头部专家博主。具有丰富的引领团队经验,深厚业务架构和解决方案的积累。
负责:
- 中央/分销预订系统性能优化
- 活动&券等营销中台建设
- 交易平台及数据中台等架构和开发设计
- 车联网核心平台-物联网连接平台、大数据平台架构设计及优化
- LLM Agent应用开发
- 区块链应用开发
- 大数据开发挖掘经验
- 推荐系统项目
目前主攻市级软件项目设计、构建服务全社会的应用系统。
参考:
本文由博客一文多发平台 OpenWrite 发布!