如何优化自然语言查询:重构数据库嵌入和管理系统成本
By IndyDevDan · 2024-03-02
在本博客中,我们将讨论如何通过重构数据库嵌入和管理系统成本来优化自然语言查询。我们将重点介绍重构数据库嵌入以匹配自然语言查询和对系统成本估算和数据流程优化。同时,我们还会探讨优化数据处理流程和构建Agentic软件的重要性。
博客文章摘要
- 过去的三个视频里,我们在我们的多智能体Postgress数据分析工具上取得了很大的进展。
- 我们创建了一个多智能体框架,用于自动生成GB4,并从头开始构建了一些新模式。
- 在上一个视频中,我们还创建了一个编排器来管理我们的智能体,并且通过特定的多智能体对话流程获得了对智能体的完全控制,例如顺序对话和广播对话。
- 然而,我们的多智能体Postgress数据分析工具存在一个主要问题,即它只读取两个Postgress表,而在实际生产数据库中,通常会涉及到10个、50个甚至数百个拥有数十万甚至数百万行的表。
- 因此,我们需要让我们的系统具备专注于与自然语言查询相关的表的能力,并添加令牌计数和价格估算功能,以便在编排器和智能体的生命周期中了解我们在GB4上的支出情况。
- 感谢大家的评论和反馈。在本视频结束时,我们将回顾一些最受欢迎的评论,比如代码在哪里、是否可以使用本地模型等。
- 接下来,让我们将精力集中在管理我们的Postgress多智能体内存和成本上。
博客文章摘要
重构数据库嵌入以匹配自然语言查询
- 重构数据库嵌入可以通过创建映射将自然语言查询转换为嵌入,并与所有现有表进行相似性匹配。
- 通过计算嵌入并将自然语言查询与表定义的嵌入进行比较,我们可以获取与查询最相关的表,并按相关性排序。
- 尽管现有的方法和技术可能面临匹配准确性问题,但我们可以通过简单直观地进行单词匹配来解决特定用例中的问题。
- 通过在查询中查找表名的方式,我们可以构 建一种简单的回退机制,以确保特定表名在查询中能够被提取出来,从而解决了可能存在的匹配不准确问题。
重构数据库嵌入以匹配自然语言查询
系统成本估算和数据流程优化
- 通过新增一个函数,将嵌入和单词匹配结果合并成一个表格,并更新通过嵌入函数返回的表格名称,不再包含顶层的概率,以此来构建数据库EMB。
- 优化了查询流程,使用新的相似表函数,同时运行单词匹配和嵌入模型,实现获取减少表定义的完整流程。
- 新增了一个函数,根据一组表格名获取表的创建语句,实现了更加灵活的数据查询和定义流程。
- 引入了令牌计数系统,通过LLM估算价格和令牌数量,实现了对整个系统运行成本的估算,并提供了对话记录的详细信息。
- 对定价功能进行了完善,通过粗略计算和转换,实现了更加准确的成本估算,这对于建立可持续的系统非常重要。
- 最终实现了组织成本的可视化,并对各个团队的成本进行了监控和评估,以便更好地理解整个系统的运行开销。
系统成本估算和数据流程优化
优化数据处理流程
- 管理者需要在数据处理流程中进行优化,包括裁员、数据库查询的优化以及成本控制。
- 裁员涉及到解雇数据可视化团队,加强数据工程团队和高级数据分析师的责任。
- 对数据库查询进行优化,包括将查询结果直接报告到文件,使用技巧如随机抽样以减少代理人工作量。
- 优化后的数据工程团队运行查询时的代理人成本大幅降低,运行较为复杂的查询耗费的代理人资源成本仅为3美分。
- 整体来看,数据查询和处理流程优化后效果显著,使得产品在生产系统中更具可用性。
- 下一步的改进方向可能包括将应用程序置于API之后,以实现更多的功能和应用场景。
优化数据处理流程
构建Agentic软件的重要性
- 构建Agentic软件能够让用户在自然语言界面中输入内容,获取SQL查询和结果,且前端可以根据返回的行数和大小以不同的格式呈现数据。
- 监控系统成本、利用代理和对话流程、绕过内存限制等方面的改进对于构建Agentic系统至关重要。
- 目前开源模型远远落后于GPT-3,更不用说GPT-4,因此在构建Agentic软件时,使用业内最佳技术是至关重要的。
构建Agentic软件的重要性
Conclusion:
通过对数据库嵌入的重构和系统成本的精准估算与管理,可以有效优化自然语言查询的性能和可用性。同时,对数据处理流程进行优化和构建Agentic软件也是构建更具竞争力系统的重要组成部分。