本周16个Github有趣项目Korvus等

Interesting Projects, Tools and Libraries

以下是Rust语言的开源工具:
1、bitwhip
BitWHIP 是一个用 Rust 编写的 CLI WebRTC 代理。这些是您现在可以用它做的一些事情。

  • 以 30 毫秒的延迟发布您的桌面
  • 在本机播放器中播放流
BitWHIP 建立在开放协议之上,因此几乎可以在任何地方使用。它还应该与您最喜欢的工具和库(如 OBS、FFmpeg 或 GS​​treamer)互操作。

2、kaskade
Kaskade 是 Apache Kafka 的文本用户界面 (TUI), 由Textualize使用[url=https://github.com/Textualize/textual]Textual[/url]构建。它包括以下功能:

  • 管理:
    • 列出主题、分区、组和组成员。
    • 主题信息,例如滞后、副本和记录数。
    • 创建、编辑和删除主题。
    • 按名称过滤主题。
  • 消费者:
    • Json、字符串、整数、长整型、浮点型、布尔型和双精度型反序列化。
    • 按键、值、标题和/或分区进行过滤。
    • 使用 avro 支持 Schema Registry。
    • Protobuf 反序列化支持。

3、pratt-gen
Rust使用内联宏的递归下降解析器生成器库。

要解析 json 文件,您可以编写以下代码,并用来parse解析 json 格式的字符串。

use pratt_gen::*;

#[derive(Clone, Copy, ParserImpl, Space)]
pub enum Json<'a> {
    #[parse("{0}")]
    Float(f64),
    #[parse(
"{0}")]
    Int(i64),
    #[parse(
"{0}")]
    Str(&'a str),
    #[parse(
"{{ {0} }}")]
    Obj(&'a Obj<'a>),
    #[parse(
"[ {0} ]")]
    Arr(&'a Arr<'a>),
    #[parse(
"null")]
    Null(),
    #[parse(
"{0}")]
    Bool(Bool),
}

#[derive(Clone, Copy, ParesrImpl, Space)]
pub enum Bool {
    #[parse(
"true")]
    True(),
    #[parse(
"false")]
    False(),
}

#[derive(Clone, Copy, ParserImpl, Space)]
pub enum Obj<'a> {
    #[parse(
"{0} : {1} , {2}")]
    Next(Ident<'a>, Json<'a>, &'a Obj<'a>),
    #[parse(
"{0} : {1}")]
    Just(Ident<'a>, Json<'a>),
    #[parse(
"")]
    Null(),
}

#[derive(Clone, Copy, ParserImpl, Space)]
pub enum Arr<'a> {
    #[parse(
"{0} , {1}")]
    Next(Json<'a>, &'a Arr<'a>),
    #[parse(
"{0}")]
    Just(Json<'a>),
    #[parse(
"")]
    Null(),
}


4、cake
Cake是一个基于Candle的Rust 框架,用于对 LLama3 等大型模型进行分布式推理。该项目的目标是通过将消费级硬件重新用于 iOS、Android、macOS、Linux 和 Windows 设备的异构集群来运行大型 (70B+) 模型,从而有效地利用计划报废作为使 AI 更易于访问和民主化的工具。

其理念是将转换器块分片到多个设备,以便能够在通常无法装入单个设备的 GPU 内存的模型上运行推理。同一工作器上相邻转换器块的推理会进行批处理,以最大限度地减少数据传输造成的延迟。

5、tui-rs-tree-widget
Ratatui Widget 的构建是为了显示树形数据结构。

6、bollard
Rust 中的 Docker 守护进程 API

Bollard 利用最新的Hyper和 Tokio改进来实现包含未来、流和 async/await 范例的异步 API。

该库通过命名管道提供 Windows 支持,并通过可选的 Rustls绑定提供 HTTPS 支持。通过 OpenAPI、protobuf 和上游文档生成用于与 Docker和Buildkit交互的序列化类型。


以下是大模型开源工具:
7、Korvus
Korvus 是一个搜索 SDK,可将整个 RAG 管道统一到单个数据库查询中。Korvus 建立在 Postgres 之上,并绑定了 Python、JavaScript 和 Rust,可提供高性能、可自定义的搜索功能,同时最大程度减少基础设施问题。

Korvus 是专为 Postgres 构建的一体化开源 RAG(检索增强生成)管道。它将 LLM、向量内存、嵌入生成、重新排序、摘要和自定义模型整合到单个查询中,从而最大限度地提高性能并简化搜索架构。

Korvus 通过充分利用 Postgres 的强大功能来进行 RAG 操作而脱颖而出:

  1. Postgres-Native RAG:Korvus 利用 Postgres 的强大功能,让您可以直接在数据库中执行复杂的 RAG 操作。这种方法消除了对外部服务和 API 调用的需求,从而大大降低了延迟和复杂性。
  2. 单一查询效率:借助 Korvus,您的整个 RAG 管道(从嵌入生成到文本生成)都可在单一 SQL 查询中执行。这种“单一查询统领一切”方法可简化您的架构并提高性能。
  3. 可扩展性和性能:通过构建在 Postgres 之上,Korvus 继承了其出色的可扩展性和性能特征。随着数据的增长,Korvus 也会随之增长,即使数据集很大,也能保持高性能。

主要特点

  • 简化架构:用单一、强大的查询取代复杂的面向服务的架构。
  • 高性能:消除 API 调用和数据移动,实现更快的处理速度和更高的可靠性。
  • 开源:使用在 Docker 中本地运行的开源软件和模型来改善您的开发人员体验。
  • 多语言支持:将 Korvus 与 Python、JavaScript 和 Rust 结合使用。打开问题以投票支持其他语言。
  • 统一管道:在一个查询中结合嵌入生成、向量搜索、重新排名和文本生成。
  • Postgres 支持:在底层,Korvus 操作由久经考验的数据库平台上的高效 SQL 查询提供支持。

8、gpu.cpp
gpu.cpp 是一个轻量级库,可以简化使用 C++ 的便携式 GPU 计算。

它专注于通用的原生 GPU 计算,利用 WebGPU 规范作为可移植的低级 GPU 接口。这意味着我们可以在 C++ 项目中插入 GPU 代码,并使其在 Nvidia、Intel、AMD 和其他 GPU 上运行。相同的 C++ 代码可以在各种笔记本电脑、工作站、移动设备或几乎任何支持 Vulkan、Metal 或 DirectX 的硬件上运行。

我们希望通过 gpu.cpp 为个人开发者和研究人员提供一个高效库,让他们能够将 GPU 计算整合到程序中,而只需依赖标准 C++ 编译器作为工具即可。我们的目标是:

  • 高功率重量比 API:提供可覆盖全部 GPU 计算需求的最小 API 表面积。
  • 快速编译/运行周期:确保项目可以几乎立即构建,在现代笔记本电脑上编译/运行周期应该<5 秒。
  • 最小的依赖和工具开销:标准的 clang C++ 编译器就足够了,除了 WebGPU 本机实现之外没有外部库依赖。


以下是其他开源工具:
9、Mazeppa
用于按值调用函数式语言的现代超级编译器

超级编译是一种程序转换技术,它以符号方式评估给定程序,运行时值为未知数。在此过程中,它发现原始程序的执行模式并将其合成为独立函数;超级编译的结果是一个更高效的残差程序。在转换能力方面,超级编译同时包含了森林砍伐2和部分评估3,甚至还表现出一定的定理证明能力。

Mazeppa是一款现代超级编译器,旨在成为按值调用函数式语言的编译目标。与之前的超级编译器不同,Mazeppa 1) 提供全套原始数据类型,2) 支持手动控制函数展开,3) 在转换过程中做出的决策完全透明,4) 从一开始就以效率为设计理念。

10、magic-cli
Magic CLI 是一个命令行实用程序,它使用 LLM 帮助您更有效地使用命令行,其灵感来自Amazon Q(以前的 Fig 终端)GitHub Copilot for CLI等项目。


11、Toit
Toit 是一种专为微控制器设计的现代高级语言
Toit 针对微控制器上的实时重新加载进行了优化。您的代码在编写时会逐步运行,并且您会获得即时反馈。两秒钟内即可通过本地 WiFi推送更改,并保留 USB 电缆为手机充电。您可以快速迭代、快速学习并构建更好的产品。

12、Drag-and-Drop-Email-Designer
拖放式 HTML 电子邮件设计器 - 真正免费且开源。

为什么选择 SENDUNE 电子邮件设计师?

  • 真正的开源:可以将其用于个人用途或商业用途或其他用途。
  • 真正免费:因为那些声称“免费”的东西其实不是免费的。
  • 确实有效:因为免费的那些似乎不起作用。
  • 真正的 HTML:没有像 mjml 这样的中间代码管理员。
  • 真正快速且轻便:因为您可以利用时间做更好的事情。
  • 真正无代码:像专业人士一样进行设计,无需担心编码问题。我们的极简界面让您无后顾之忧。
  • 真正民主:将 HTML 输出保存为模板并与任何电子邮件服务提供商一起使用。

提供三种模板类型,让您可以设计任何类型的交易或营销电子邮件。总之,您可以创建和保存无限数量的模板。

  • 拖放设计器- 立即开始设计漂亮的电子邮件。
  • HTML 代码编辑器- 重复使用您已有的 HTML 模板或从头开始编写代码。
  • 纯文本电子邮件- “极简主义者”。这是为您准备的。

以下是Python开源:
13、exo
使用日常设备在家中运行自己的 AI 集群

忘记昂贵的 NVIDIA GPU,将您现有的设备统一为一个强大的 GPU:iPhone、iPad、Android、Mac、Linux,几乎任何设备!

广泛的模型支持

  • exo 支持 LLaMA(MLX和tinygrad)和其他流行模型。

动态模型分区

  • exo根据当前网络拓扑和可用设备资源对模型进行最佳分割。这使您能够运行比在任何单个设备上都能够运行的更大的模型。

自动设备发现

  • exo 将使用最佳可用方法自动发现其他设备。无需手动配置。

ChatGPT 兼容 API

  • exo 提供了与 ChatGPT 兼容的 API来运行模型。只需在您的应用程序中进行一行更改,即可使用 exo 在您自己的硬件上运行模型。

设备平等

  • 与其他分布式推理框架不同,exo 不使用主从架构。相反,exo 设备采用 p2p 连接。只要设备连接到网络中的某个位置,就可以使用它来运行模型。

Exo 支持不同的分区策略,以跨设备分割模型。默认分区策略是环内存加权分区。这会在环中运行推理,其中每个设备运行的模型层数与设备的内存成比例。

14、MobileLLM
MobileLLM 针对设备用例优化十亿分之一参数语言模型。在 ICML 2024 中。

该存储库包含我们在工作中引入的 MobileLLM 的训练代码:“ MobileLLM:针对设备用例优化十亿分参数语言模型”,发表于 ICML 2024。
在这项工作中,我们全面考虑了多个设计因素,以获得具有少于十亿个参数的高质量 LLM。我们集成了 (1) SwiGLU 激活函数、(2) 深度和薄架构、(3) 嵌入共享、(4) 分组查询注意来构建 MobileLLM。MobileLLM-125M/350M 在零样本常识推理任务上比之前的 125M/350M SoTA 模型实现了 2.7%/4.3% 的准确率提升。在我们的更新版本中,我们进一步证明我们的设计理念可以有效扩展到更大的模型,MobileLLM-600M/1B/1.5B 的 SoTA 结果。

15、vectorlite
适用于 SQLite 的快速且可调的向量搜索扩展
Vectorlite 是SQLite 的运行时可加载扩展,它基于hnswlib实现快速向量搜索,并可在 Windows、MacOS 和 Linux 上运行。

有关该项目的动机和背景,请查看此处

Vectorlite 速度很快,与sqlite-vss相比,vectorlite 插入向量速度快 10 倍,搜索速度快 2-40 倍(取决于 HNSW 参数,需要权衡速度和准确率),如果设置了合适的 HNSW 参数,召回率会更高。


16、AI Dialer
一个全栈应用程序,用于可中断、低延迟和接近人类质量的 AI 电话呼叫,由拼接 LLM、语音理解工具、文本到语音模型和 Twilio 的电话 API 构建。

以下组件已以流式方式实现和整合在一起,以实现低延迟和可中断的AI 调用任务:

  • ☎️ 电话服务:通过虚拟电话号码(Twilio)拨打和接听电话
  • ️ 语音转文本服务:将呼叫者的语音转换为文本(以便可以传递给 LLM),并理解语音模式,例如用户何时结束讲话以及中断情况,以促进可中断性(Deepgram)
  • 文本到文本的 LLM:理解电话交谈,可以进行“功能调用”,并引导交谈完成通过“系统”消息指定的特定任务(OpenAI GPT-o 或 Anthropic Claude Sonnet 3.5)
  • 文本转语音服务:将 LLM 响应转换为高质量语音
  • ⚙️ Web 服务器:基于 FastAPI 的 Web 服务器,提供以下端点:
    • 使用 Twilio 的标记语言 (Twilio ML) 接听电话,
    • 通过每次调用的 WebSocket 启用与 Twilio 之间的音频流
    • 与基本 Steamlit 网页用户界面交互
  • 前端 UI:简单的 Streamlit 前端,可在浏览器中查看发起/结束呼叫并实时查看呼叫进度