本周25个Github有趣项目SeekStorm等

github上有趣的项目、工具和库

1、Pongo
类似MongoDB,但基于 Postgres,具有很强的一致性优势。

Pongo 将 PostgreSQL 视为文档数据库,得益于 JSONB 支持。与传统 JSON 类型的纯文本存储不同,JSONB 以二进制格式存储 JSON 数据。这一简单的改变在性能和存储效率方面带来了显著的优势。

Pongo 使用下面的表结构来存储集合:

CREATE TABLE IF NOT EXISTS "YourCollectionName" (
    _id           TEXT           PRIMARY KEY,
    data          JSONB          NOT NULL,
    metadata      JSONB          NOT NULL     DEFAULT '{}',
    _version      BIGINT         NOT NULL     DEFAULT 1,
    _partition    TEXT           NOT NULL     DEFAULT 'png_global',
    _archived     BOOLEAN        NOT NULL     DEFAULT FALSE,
    _created      TIMESTAMPTZ    NOT NULL     DEFAULT now(),
    _updated      TIMESTAMPTZ    NOT NULL     DEFAULT now()
)

本质上,Pongo 采用 MongoDB api 并将其转换为原生 PostgreSQL 查询。它与MartenFerretDBAWS DocumentDB的概念类似。

查询:

const result = await users
  .find({ "address.history": { $elemMatch: { street: "Elm St" } } })
  .toArray();

将被翻译为

SELECT data
FROM "users"
WHERE jsonb_path_exists(
  data,
  '$.address.history<li> ? (@.street ==
"Elm St")'
);

2、SeekStorm
#Rust 中的亚毫秒级全文检索库与多租户服务器。
SeekStorm 高性能搜索库

  • 全文搜索
  • 真正的实时搜索,对性能的影响微乎其微
  • 增量索引
  • 多线程索引和搜索
  • 无限字段数量、字段长度和索引大小
  • 压缩文档存储:ZStandard
  • 布尔查询:AND、OR、PHRASE、NOT
  • 字段过滤
  • BM25F 和 BM25F_Proximity 排名
  • KWIC 片段,突出显示
  • 十亿级指数
  • 独立于语言
  • API 密钥
  • 带有 CORS 的 RESTful API
  • RAM 或内存映射文件中的索引

查询类型

  • OR 析取联合
  • AND 会合交叉点
  • "" phrase
  • - NOT
结果类型
  • TopK
  • Count
  • TopKCount
SeekStorm 多租户搜索服务器
  • 使用 RESTful API
  • 多租户索引管理
  • API密钥管理
  • 嵌入式 Web 服务器和 UI
  • 跨平台:可在 Linux 和 Windows 上运行(其他操作系统未经测试)

为什么选择 SeekStorm?

性能更低的延迟、更高的吞吐量、更低的成本和能耗,尤其是对于多字段和并发查询。低尾延迟可确保流畅的用户体验并防止客户和收入流失。虽然有些依靠专有硬件加速器(FPGA/ASIC)来提高性能,但 SeekStorm 在商用硬件上通过算法实现了类似的提升。

一致性在大规模索引期间和之后,没有不可预测的查询延迟,因为 SeekStorm 不需要资源密集型的段合并。稳定的延迟 - 由于即时编译,没有冷启动成本,没有不可预测的垃圾收集延迟。

扩展即使对于十亿级索引也能保持低延迟、高吞吐量和低 RAM 消耗。无限制的字段数量、字段长度和索引大小。

与 #BM25 相比,相关性术语接近度排名提供了更相关的结果。

实时真正的实时搜索,与 NRT 相反:每个索引文档都可以立即搜索,甚至在提交之前和提交期间。

为什么延迟很重要

  • 搜索速度可能足以满足单次搜索的需求。如果低于 10 毫秒,人们将无法分辨延迟。与互联网网络延迟相比,搜索延迟可能很小。
  • 但是,当在服务器或服务中使用许多并发用户并请求最大扩展、吞吐量以及低处理器负载和成本时,搜索引擎性能仍然很重要。
  • 利用高性能搜索技术,您可以为大量并发用户提供服务,以更少的服务器、更低的成本、更少的能耗和更低的碳足迹实现更低的延迟。
  • 它还能确保即使对于复杂且具有挑战性的查询也能实现低延迟:即时搜索、模糊搜索、分面搜索以及非常频繁的术语的并集/交集/短语。
  • 除了平均延迟之外,我们还需要减少尾部延迟,尾部延迟经常被忽视,但可能会导致客户和收入的流失,并导致糟糕的用户体验。
  • 始终建议为搜索基础架构设计足够的性能空间,以便即使在高并发负载期间也能控制尾部延迟。
  • 此外,即使人类用户可能不会注意到延迟,但它仍然可能对需要多次查询的自主股票市场、国防应用或 RAG 产生很大影响。

关键词搜索仍然是矢量搜索和 LLM 出现的核心组成部分
关键字搜索只是一组文档的过滤器,返回包含某些关键字的文档,通常与 BM25 等排名指标结合使用。这是一项非常基本和核心的功能,要大规模实现低延迟非常具有挑战性。由于该功能非常基础,因此有无限的应用领域。它是一个组件,可与其他组件一起使用。有些用例今天可以用向量搜索和 LLM 更好地解决,但对于更多用例来说,关键字搜索仍然是最佳解决方案。关键字搜索精确、无损,而且速度非常快,具有更好的扩展性、更好的延迟、更低的成本和能耗。向量搜索与语义相似性一起工作,返回给定接近度和概率内的结果。

关键字搜索(词汇搜索)
如果您搜索的是精确的结果,如专有名词、数字、车牌、域名和短语(例如抄袭检测),那么关键字搜索就是您的好帮手。另一方面,向量搜索会将您正在寻找的精确结果埋没在无数只以某种方式语义相关的结果中。同时,如果您不知道确切的术语,或者您对更广泛的主题、含义或同义词感兴趣,那么无论使用什么确切的术语,关键字搜索都会让您失望。

向量搜索
如果您不知道确切的查询词,或者您对更广泛的主题、含义或同义词感兴趣,无论使用什么确切的查询词,向量搜索都是完美的选择。但如果您正在寻找确切的术语,例如专有名词、数字、车牌、域名和短语(例如抄袭检测),那么您应该始终使用关键字搜索。向量搜索只会将您正在寻找的确切结果埋没在仅以某种方式相关的无数结果中。它具有良好的召回率,但准确率低,延迟较高。它容易出现误报,例如在抄袭检测中,因为确切的单词和词序会丢失。

矢量搜索不仅使您能够搜索相似的文本,还可以搜索可以转换为矢量的所有内容:文本,图像(面部识别,指纹),音频,它还能让您做一些神奇的事情,例如女王 - 女人+男人=国王。

为什么使用 Rust
我们已将 SeekStorm 代码库(部分)从 C# 移植到 Rust

  • 与 C# 相比,性能提升 2..4 倍(延迟和吞吐量)
  • 首次运行不会很慢(由于即时编译,没有冷启动成本)
  • 稳定的延迟(无垃圾收集延迟)
  • 减少内存消耗(直到下一次垃圾收集时才增加)
  • 无框架依赖(CLR 或 JVM 虚拟机)
  • 提前编译而非即时编译
  • 内存安全语言
Rust 非常适合处理大数据和/或许多并发用户的性能关键型应用程序。使用注重性能的编程语言,快速算法将更加出色 

3、autokitteh
AutoKitteh 是一个用于#工作流 自动化和协调的开发者平台。 它易于使用,基于代码,是无代码/低代码平台(如 Zapier、Workato、Make.com、n8n)的替代平台,具有无限的灵活性。

此外,它还是一个持久的执行平台,适用于长期运行且可靠的工作流程。它基于Temporal,隐藏了许多基础架构和编码复杂性。
AutoKitteh 可以自托管,并且也可以提供云服务。

安装后,AutoKitteh 是一个可扩展的“无服务器”平台(包含电池),适用于 DevOps、FinOps、MLOps、SOAR、生产力任务、关键后端业务流程等。

高级架构

  • 平台:一个可扩展的服务器,提供用于构建项目(工作流)、部署项目、使用 webhook 或调度程序触发代码、将代码作为持久工作流执行以及管理这些工作流的接口。
  • API: AutoKitteh 是一个 API 优先平台。所有服务都可通过 gPRC / HTTP 获得。
  • 内置集成: Slack、GitHub、Twilio、ChatGPT、Gemini、Gmail、Google 日历、HTTP、gRPC 等。添加新集成非常容易。
  • 支持的编程语言: Python、Starlark(Python 的一种方言)和 JavaScript(即将推出)。
AutoKitteh 提供一整套现成的高级工程功能。您可以专注于编写业务逻辑,我们负责其余工作:
  • 安全、无缝、双向 API 集成
  • 用户友好的管理、监控和调试
  • 独立和分布式系统可靠性
  • 自动恢复,不丢失状态
  • 内置持久性,适合长期运行的工作流程
  • 满足世界级可扩展性需求


4、gpt4all
GPT4All 在日常台式机和笔记本电脑上私下运行大型语言模型 (LLM)。无需 API 调用或 GPU - 您只需下载应用程序即可开始使用

Nomic 的嵌入模型可以将您本地文档和文件中的信息带入您的聊天中。它速度快、在设备上使用,并且完全私密。


5、karpor
Intelligence for Kubernetes。 世界上最有前途的 Kubernetes 可视化工具,适用于开发人员和平台工程团队。

Kubernetes 生态系统日趋复杂是一个不可否认的趋势,管理难度越来越大。这种复杂性不仅给运维带来了更重的负担,也减缓了用户对新技术的采用,限制了他们充分发挥 Kubernetes 的潜力。

总体来说,我们希望 Karpor 能够聚焦搜索、洞察、AI,突破日益复杂的 Kubernetes 迷宫

它为 Kubernetes 带来了高级搜索、 洞察 和AI。它本质上是一个Kubernetes 可视化工具。借助 Karpor,您可以跨任何云获得对 Kubernetes 集群的关键可见性。

  • 自动同步 自动同步多云平台管理的任何集群中的资源。
  • 强大、灵活的查询以快速简便的方式有效检索和定位您正在寻找的多集群资源。
  • 合规治理了解跨多个集群和合规标准的合规状态。
  • 资源拓扑相关资源在其操作环境中的逻辑和拓扑视图。
  • 自然语言操作使用通俗易懂的语言与 Kubernetes 交互,实现更直观的操作。
  • 情境化 AI 响应获得智能的情境化帮助,了解您的需求。
  • Kubernetes 的 AIOps利用 AI 驱动的洞察力实现 Kubernetes 管理自动化和优化。
微信群(中文)


6、bashbro
基于 Bash 的网络文件浏览器。 允许您通过网络浏览器浏览、查看和传输文件。

基于 Bash 的 Web 文件浏览器 - 允许您通过 Web 浏览器远程浏览、流式传输、查看文档和保存文件。通过 WSL 在 Windows 上运行。

7、bash-dungeon
在 shell 中的教育性地下城探索游戏。

用 Bash 编写的地下城探索游戏,这个游戏旨在以有趣和互动的方式教新用户如何使用他们的 shell。

8、Termino.js
在任何网站上创建基于Web的终端--非常适合游戏、动画和现实世界中的应用程序!

Termino.js 是一个高度可定制的前端组件,用纯 JavaScript 编写,非常适合在任何网站上制作基于 Web 的终端动画、游戏和应用程序,包括对基于 curses 的应用程序的支持、用户命令的自定义函数、键代码和鼠标事件等等!

特征

  • 快速:Termino.js 很轻量- 采用纯 JavaScript 构建
  • 自包含:无需任何依赖即可工作。
  • 非常适合动画:您可以轻松制作终端动画并带入您最喜欢的打字机库等!
  • 可定制:带来您自己的 HTML、CSS 并根据您的喜好定制/创建终端!
  • 输入:支持通过承诺/等待的值返回的问题输入
  • 多个实例:在一个页面中创建多个自定义终端!
  • HTML 支持:向您的终端添加 HTML 元素(如链接等)!
  • 自定义函数:轻松创建您自己的自定义函数(包括用户命令函数、键代码函数和您自己的鼠标事件函数)
  • 还有更多:选择无穷无尽!
Termino.js 不是:
  • Termino.js 不是您可以在计算机上下载并使用的可执行应用程序。它是您在浏览器中使用的 JavaScript 库。
  • Termino.js 不是bash模拟器等。Termino.js 可以通过 API 等连接到进程bash 或SSH实例,或者任何允许您通过提供输入和接收输出与它们交互的进程。
您可以在此处查看 Termino.js 的使用演示。

如何使用Termino.js:

<!doctype html>
  <html>
    <head>
    <title>Termino.js Basic Example</title>
    </head>
    <body>
      <div id="terminal">
      <pre><code class=
"termino-console"></code></pre>
      <textarea class=
"termino-input" rows="1" wrap="hard"></textarea>
      </div>
      <script type=
"module">
        import {Termino} from 'https:
//cdn.jsdelivr.net/gh/MarketingPipeline/Termino.js@latest/dist/termino.min.js';
        let term= Termino(document.getElementById(
"terminal"))
        term.echo(
"Hello world from https://github.com/MarketingPipeline")
      </script>
    </body>
  </html>

9、transfer-thought
用于构建#虚拟现实 体验的网络平台。

10、pgcli
具有自动完成和语法高亮功能的 Postgres CLI

这是一个具有自动完成和语法高亮功能的 postgres 客户端。

11、crawlee-python
一个用于 Python 的网页抓取和浏览器自动化库,用于构建可靠的爬虫。提取 AI、LLM、RAG 或 GPT 的数据。从网站下载 HTML、PDF、JPG、PNG 和其他文件。适用于 BeautifulSoup、Playwright 和原始 HTTP。有头模式和无头模式。具有代理旋转功能。

为什么 Crawlee 是网页抓取和爬取的首选?
为什么要使用 Crawlee,而不是仅仅使用带有 HTML 解析器的随机 HTTP 库?

  • HTTP 和无头浏览器抓取的统一界面。
  • 根据可用的系统资源自动并行抓取。
  • 用 Python 编写,带有类型提示- 增强 DX(IDE 自动完成)并减少错误(静态类型检查)。
  • 出现错误或被阻止时自动重试。
  • 集成代理轮换和会话管理。
  • 可配置的请求路由- 将 URL 直接发送到适当的处理程序。
  • 要抓取的URL 的持久队列。
  • 表格数据和文件的可插入存储。
  • 强大的错误处理。
为什么使用 Crawlee 而不是 Scrapy?
  • Crawlee 对无头浏览器爬取(Playwright)具有开箱即用的支持。
  • Crawlee 具有简约而优雅的界面- 用少于 10 行的代码即可设置您的抓取工具。
  • 完整的类型提示覆盖。
  • 基于标准Asyncio。

12、papaya
适用于读取密集型工作负载的快速且符合人体工程学的Rust并发哈希表。

特征

  • 符合人体工程学的无锁 API — 不再有死锁!
  • 强大的原子操作。
  • 在异步上下文中无缝使用。
  • 极具可扩展性,低延迟读取(参见性能)。
  • 所有操作的延迟均可预测。
  • 高效内存使用,并由 提供支持的垃圾收集功能

papaya专为读取密集型工作负载而构建。因此,读取操作具有极高的吞吐量,并提供随并发性扩展的一致性能,这意味着papaya在读取比写入更常见的工作负载中将表现出色。在写入密集型工作负载中,papaya尽管这不是其主要用例,但仍将提供具有竞争力的性能。有关详细信息,请参阅基准测试

papaya旨在为所有操作提供可预测且一致的延迟。大多数操作都是无锁的,那些非锁操作仅在罕见和受限的条件下才会阻塞。papaya还具有增量调整大小的功能。可预测的延迟是性能的重要组成部分,通常不会出现在基准测试中,但对实际使用具有重要影响。


以下是Python库:

13、whenever
用 Rust 编写的 Python 现代日期时间库。

每次使用 Python 的日期时间时,您是否都会祈祷自己没有混淆 naive 和 awareness?

Whatever可帮助您编写正确且经过类型检查的日期时间代码。错误会变成IDE 中的红色波浪线,而不是生产中的错误。它的速度也比其他第三方库(通常也比标准库)快得多。

二十多年来,Pythondatetime已经与现代日期时间库的期望不符。有两点尤为突出:

  1. 它并不总是考虑夏令时 (DST)。
  2. 类型无法区分简单日期时间和感知日期时间。
还有另外两个流行的第三方库,但它们没有(完全)解决这些问题。

为什么要用everyone?

  • DST 安全算法
  • Typesafe API 可防止常见错误
  • 修复箭头/钟摆无法移动的问题
  • 基于已证实且熟悉的概念
  • 无与伦比的性能
  • 经过彻底测试和记录
  • 支持日期运算
  • 纳秒精度
  • Rust!—但有纯 Python 后备
  • 支持最新的 GIL 相关改进(实验性)
代码演示:

>>> from whenever import (
...    # 不同用例的显式类型
...    Instant,
...    ZonedDateTime,
...    LocalDateTime,
... )

# 无需复杂的时区/日历,即可识别时间时刻
>>> now = Instant.now()
Instant(2024-07-04 10:36:56Z)

#简单明了的转换
>>> now.to_tz("Europe/Paris")
ZonedDateTime(2024-07-04 12:36:56+02:00[Europe/Paris])

#天真
"的本地时间不会意外地与其他类型的时间混合。
# 需要明确地进行转换并处理歧义。
>>> party_invite = LocalDateTime(2023, 10, 28, hour=22)
>>> party_invite.add(hours=6)
Traceback (most recent call last):
  ImplicitlyIgnoringDST: Adjusting a local datetime implicitly ignores DST [...]
>>> party_starts = party_invite.assume_tz(
"Europe/Amsterdam", disambiguate="earlier")
ZonedDateTime(2023-10-28 22:00:00+02:00[Europe/Amsterdam])

# DST 安全运算
>>> party_starts.add(hours=6)
ZonedDateTime(2022-10-29 03:00:00+01:00[Europe/Amsterdam])

# Comparison and equality
>>> now > party_starts
True

#格式化和解析常用格式(ISO8601、RFC3339、RFC2822)
>>> now.format_rfc2822()
"Thu, 04 Jul 2024 10:36:56 GMT"

#如果您必须这样做:您可以将其转换为/从标准程序库
>>> now.py_datetime()
datetime.datetime(2024, 7, 4, 10, 36, 56, tzinfo=datetime.timezone.utc)


14、django-sql-explorer
将人工智能助手与 Django 集成,构建智能应用程序。

15、0xtools
用于 Linux 系统的 X 射线视觉。

16、FastEmbed
快速、准确、轻量级的 Python 库,用于实现最先进的嵌入式技术。

17、Satyrn  
一个适用于 Mac 的现代 Jupyter 客户端。

18、LivePortrait
让一幅肖像活起来!

19、django-sql-explorer
通过 SQL 查询在公司内部轻松共享数据。

20、Incidental
一个与 Slack 集成的开源事件管理平台。

21、maelstrom
Maelstrom 是一个快速的 Rust 和 Python 测试运行器,它在自己的容器中运行每个测试。 测试既可在本地运行,也可分布到集群作业运行程序中。

22、Crawlee
一个用于构建可靠爬虫的 Python 网络抓取和浏览器自动化库。 为 AI、LLM、RAG 或 GPT 提取数据。 从网站下载 HTML、PDF、JPG、PNG 和其他文件。 可与 BeautifulSoup、Playwright 和原始 HTTP 一起使用。 同时支持有头和无头模式。 具有代理轮换功能。

23、Posting
一个强大的 HTTP 客户端,可在终端中使用。

24、Dishka
可爱的 DI 框架,具有作用域和可接受的 API。

25、momentum
后端代码的开源行为审计器。