语言 & 框架
采纳
-
75. dbt
我们仍然认为 dbt是在 ELT 数据管道中实施数据转换的强大且合理的选择。我们喜欢它能够引入工程上的严谨性,并支持模块化、可测试性和 SQL 转换的可重用性等实践。dbt 集成了很多云数据仓库、数据湖仓和数据库,包括Snowflake、BigQuery、Redshift、Databricks 和 Postgres,并且拥有健康的社区包生态系统。最近在 dbt core 1.8+ 和全新的 dbt Cloud 无版本体验中引入的原生单元测试支持,进一步巩固了其在我们工具箱中的地位。我们的团队很欣赏这个新的单元测试功能,它使他们能够轻松定义静态测试数据,设置输出预期,并测试管道的增量和完全刷新模式。在许多情况下,这使得团队能够淘汰自制脚本,同时保持相同的质量水平。
-
76. Testcontainers
在我们的经验中,Testcontainers 是创建可靠测试环境的一个有效默认选项。它是一个移植到多种语言的库,可以将常见的测试依赖项进行 Docker 化——包括各种类型的数据库、队列技术、云服务以及像网页浏览器这样的 UI 测试依赖项,并能够在需要时运行自定义 Dockerfile。最近发布了一个 桌面版本,允许对测试会话进行可视化管理,并能够处理更复杂的场景,这对我们的团队非常有用。
评估
-
91. Apache XTable™
在可用的开放表格格式中,能够支持数据湖仓一体(lakehouses)架构——例如 Apache Iceberg、Delta和 Hudi——尚未出现明显的赢家。相反,我们看到了一些工具正在促进这些格式之间的互操作性。例如, Delta UniForm 通过允许 Hudi 和 Iceberg 客户端读取 Delta 表,实现了单向互操作性。另一个新进入这个领域的是Apache XTable™,这是一个 Apache 孵化器项目,旨在实现 Hudi、Delta 和 Iceberg 之间的全向互操作性。与 UniForm 类似,XTable 在不创建底层数据副本的情况下,能够在这些格式之间转换元数据。XTable 对于那些在多个表格格式之间进行实验的团队可能会很有用。然而,考虑到这些格式之间功能的差异,长期依赖全向互操作性可能会导致团队只能使用功能的“最小公倍数”。
-
92. dbldatagen
为数据工程准备测试数据是一个重大挑战。从生产环境转移数据到测试环境存在风险,因此团队通常依赖于编造数据或合成数据。在本期雷达中,我们探讨了诸如 通过大模型生成合成数据等新方法。但大多数情况下,成本较低的程序生成已经足够用。dbldatagen (Databricks Labs Data Generator) 就是这样一个工具;它是一个用于在 Databricks 环境中生成合成数据的 Python 库,适用于测试、基准测试、演示等多种用途。dbldatagen 可以在短时间内生成规模达数十亿行的合成数据,支持多表、变更数据捕获和合并/连接操作等各种场景。它能够很好地处理 Spark SQL 的基本类型,生成范围和离散值,并应用指定的分布。在 Databricks 生态系统中创建合成数据时,dbldatagen 是一个值得评估的选项。
-
93. DeepEval
DeepEval 是一个基于 Python 的开源评估框架,用于评估大语言模型(LLM)的性能。你可以使用它评估使用流行框架(如LlamaIndex 或LangChain构建的检索增强生成(RAG)和其他类型的应用程序,也可以用于基准测试和对比不同模型,以满足你的需求。DeepEval 提供了一个全面的指标和功能套件,用于评估 LLM 的表现,包括幻觉检测、答案相关性和超参数优化。它支持与 pytest 的集成,结合其断言功能,你可以轻松地将测试套件集成到持续集成(CI)管道中。如果你正在使用 LLM,建议尝试 DeepEval 来改进测试流程,确保你的应用程序的可靠性。
-
95. Flutter for Web
Flutter 以其对 iOS 和 Android 应用程序的跨平台支持而闻名。现在,它已经扩展到更多的平台。我们之前评估过 Flutter for Web — 它允许我们从同一代码库构建适用于 iOS、Android 和浏览器的应用程序。并不是每个网页应用都适合使用 Flutter,但我们认为 Flutter 特别适合诸如 progressive web apps、single-page apps 和将现有 Flutter 移动应用转换为网页的情况。Flutter 已经支持 WebAssembly (WASM) 作为其实验性频道中的编译目标,这意味着它正在积极开发中。最近的版本已使其潜在漏洞和性能风险较为稳定。编译到 WASM 目标的 Flutter 网页应用的性能远超其 JavaScript 编译目标。不同平台上的近原生性能也是许多开发者最初选择 Flutter 的原因之一。
-
98. LLMLingua
LLMLingua 通过使用小型语言模型压缩提示,去除非必要的 token,从而提高大语言模型(LLM)的效率,并在性能损失最小的情况下实现这一目标。 这种方法使大语言模型(LLM)能够在有效处理较长提示的同时,保持推理和上下文学习能力,解决了成本效率、推理延迟和上下文处理等挑战。LLMLingua 与各种大语言模型兼容,无需额外训练,并支持如 LLamaIndex 等框架,它非常适合优化大语言模型的推理性能。
-
99. Microsoft Autogen
Microsoft Autogen是一个开源框架,旨在简化 AI 代理的创建和编排,支持多个代理协作解决复杂任务。它支持自动化和人机协作的工作流程,并兼容多种大语言模型(LLMs)和代理交互工具。我们的一个团队曾在为客户构建的 AI 驱动平台中使用 Autogen,每个代理代表一种特定技能,如代码生成、代码审查或文档摘要。该框架使团队能够通过定义正确的模型和工作流程,轻松且一致地创建新代理。他们还利用LlamaIndex 编排工作流程,使代理能够有效管理产品搜索和代码建议等任务。尽管 Autogen 在生产环境中展示了潜力,尤其在代理的扩展性和复杂性管理上仍有待评估,以确保其在扩展代理系统时的长期可行性。
-
100. Pingora
Pingora 是一个 Rust 搭建框架,旨在构建快速可靠可编程的网络服务。它最开始由 Cloudflare 开发用以解决 Nginx 的不足,Pingora 已展现出巨大的潜力,像River 这样的新型代理正是以 Pingora 为基础构建的。虽然我们大多数人无需面对 Cloudflare 级别的规模,但我们确实会遇到需要灵活的应用层路由的网络服务的场景。Pingora 的架构可以让我们在这些场景下充分利用 Rust 的强大能力,同时不牺牲安全性或性能。
-
101. Ragas
Ragas 是一个框架,旨在评估 检索增强生成 (RAG) 流水线的性能,解决了评估这些系统中检索和生成组件的挑战。它提供了结构化的指标,如可靠性、答案相关性和上下文利用率,这些指标有助于评估基于 RAG 系统的有效性。我们的开发者发现,它在运行定期评估以微调参数(如 top-k 检索和嵌入模型)时非常有用。一些团队将 Ragas 集成到每天运行的流水线中,以便在提示模板或模型发生变化时进行评估。虽然它的指标提供了可靠的见解,但我们担心该框架可能无法捕捉复杂 RAG 流水线的所有细微差别和复杂交互,因此建议考虑额外的评估框架。尽管如此,Ragas 在生产环境中简化 RAG 评估的能力使其脱颖而出,为数据驱动的改进提供了宝贵的支持。
-
102. Score
许多实施自己内部开发平台的组织倾向于创建自己的 平台编排 系统,以在开发人员与其平台托管团队之间强制执行组织标准。然而,针对安全、一致和合规地托管容器工作负载的铺路平台的基本功能在不同组织之间是相似的。如果我们有一种共享语言来指定这些要求,那该多好呢?Score在这一领域显示出了成为标准的潜力。它是一种以 YAML 形式编写的声明性语言,描述了容器化工作负载的部署方式,以及其运行所需的特定服务和参数。Score 最初由 Humanitec 开发,作为其 平台编排者 产品的配置语言,但现在作为一个开源项目由 云原生计算基金会 (CNCF) 进行管理。在 CNCF 的支持下,Score 有潜力在 Humanitec 产品之外得到更广泛的使用。它已经发布了两个参考实现:Kubernetes 和 Docker Compose。Score 的可扩展性希望能够促使社区对其他平台的贡献。Score 确实与 Kubevela 的开放应用模型 (OAM) 规范相似,但它更专注于容器工作负载的部署,而不是整个应用程序。与SST也有一些重叠,但 SSI 更关注直接部署到云基础设施,而不是内部工程平台。我们对 Score 的发展保持关注。
-
103. shadcn
-
104. Slint
Slint 是一个声明式的 GUI 框架,用于为 Rust、C++ 或 JavaScript 应用程序构建原生用户界面。尽管它是一个多平台的 UI 框架,拥有实时预览、响应式 UI 设计、VS Code 集成 和原生用户体验等重要特性,但我们特别想强调它在嵌入式系统中的实用性。开发嵌入式应用程序的团队经常会面临有限的 UI 开发选项,并且每个选项都有其权衡之处。Slint 在开发者体验和性能之间提供了完美的平衡,它使用类似 HTML 的易用标记语言,并可以直接编译为机器代码。在运行时,它还具有低资源占用的优势,这对于嵌入式系统至关重要。简而言之,我们喜欢 Slint,因为它将 web 和移动开发中经过验证的实践引入到了嵌入式生态系统中。
-
105. SST
SST是一个框架,用于将应用程序部署到云环境中,并同时配置应用程序运行所需的所有服务。SST 不仅是一个基础设施即代码 工具,它还是一个提供 TypeScript API 的框架,可以定义应用程序环境,在 Git 推送时触发应用程序部署服务,还配备了一个 GUI 控制台,用于管理生成的应用程序并调用 SST 管理功能。虽然 SST 最初是基于 AWS Cloud Formation 和 CDK,但其最新版本已经在Terraform 和 Pulumi 之上实现,因此理论上它是云平台无关的。SST 原生支持部署几种标准的 Web 应用程序框架,包括Next.js 和 Remix,但也支持无界面 API 应用程序。SST 似乎处于一个独特的类别中。虽然它与 平台编排工具如 Kubevela 有一些相似之处,但它还为开发者提供了便利功能,如实时模式,将 AWS Lambda 调用代理回开发者本地运行的函数。目前,SST 仍然有些新颖,但随着它的演进,这个项目及其工具类别值得持续关注。
暂缓
无法找到需要的信息?
每期技术雷达中的条目都在试图反映我们在过去六个月中的技术洞见,或许你所搜索的内容已经在前几期中出现过。由于我们有太多想要谈论的内容,有时候不得不剔除一些长期没有发生变化的条目。技术雷达来自于我们的主观经验,而非全面的市场分析,所以你可能会找不到自己最在意的技术条目。