有趣:RAGapp等本周15个Github项目

本周Github有趣的项目、工具和库

1、LlamaFS
一个带有 llama 3 的自组织文件系统。

  • LlamaFS 是一个自组织文件管理器。它根据文件内容和众所周知的惯例(例如时间)自动重命名和组织文件。它支持多种文件,甚至支持图像(通过 Moondream)和音频(通过 Whisper)。
  • LlamaFS 以两种“模式”运行 - 作为批处理作业(批处理模式)和交互式守护进程(监视模式)。
  • 在批处理模式下,您可以将目录发送到 LlamaFS,它将返回建议的文件结构并组织您的文件。
  • 在监视模式下,LlamaFS 会启动一个守护进程来监视您的目录。它会拦截所有文件系统操作、更新 i 并使用您最近的编辑来主动学习和了解如何重命名文件,这样您就不会学习和预测您如何重命名文件。例如,如果您为 2023 年税务文件创建一个文件夹,并开始移动其中的 1-3 个文件,LlamaFS 将自动创建并移动正确的文件!

2、Elia
一个简洁的、以键盘为中心的终端用户界面,用于与大型语言模型交互。与 ChatGPT、Claude、Llama 3、Phi 3、Mistral、Gemma 等聊天。

elia是一款用于与 LLM 交互的应用程序,它完全在您的终端中运行,设计为以键盘为中心、高效且使用有趣!它将您的对话存储在本地 SQLite 数据库中,并允许您与各种模型进行交互。

  • 与专有模型(例如 ChatGPT 和 Claude)交谈,
  • 或与通过ollama或 LocalAI 运行的本地模型交谈。

运行本地模型

  1. 安装ollama
  2. 拉取您需要的模型,例如ollama pull llama3。
  3. 运行本地 ollama 服务器:ollama serve。
  4. 将模型添加到配置文件(见下文)。

3、Gloe
Gloe 是一个通用库,旨在帮助开发人员创建、维护、记录和测试操作和面向流的代码。

Gloe(发音为 /ɡloʊ/,类似“glow”)是一个通用库,旨在帮助开发人员创建、维护、记录和测试操作和流程导向代码。它在数据科学和机器学习管道、服务器和脚本以及代码与逻辑业务理解之间存在差距的任何领域都特别有用。

Gloe 并非旨在用于整个应用程序或替换现有库。相反,它旨在与其他工具集成并解决代码复杂性可能高于预期的领域。

Gloe 诞生于一个业务逻辑极其复杂的大型应用场景,将代码迁移到 Gloe 后,维护效率提升了 200%,并促使整个团队广泛采用。

动机
软件开发有很多与代码本身相关的模式和良好实践,例如如何记录、测试、构建以及使用哪种编程范式。然而,除此之外,我们认为成功的软件项目的关键在于参与开发的每个人之间的良好沟通。当然,这种沟通不一定局限于会议或短信,它也存在于文档工件和编写良好的代码中。

当开发人员编写代码时,他们其实是在向下一个阅读或重构代码的人讲述一个故事。根据代码的质量,这个故事可能相当混乱,人物角色不明确,情节混乱(有时会出现不受欢迎的转折)。下一个维护软件的人可能需要很长时间才能清楚地理解故事情节并使其清晰,或者他们只会放弃,保持原样。

Gloe 可以如何帮助我?
Gloe 让这个故事变得连贯、逻辑清晰且易于理解。这是通过将代码划分为具有明确职责和明确接口的简洁步骤来实现的。
然后,Gloe 允许您连接这些步骤,阐明它们的协作并确定重构期间所需的更改。
因此,您可以快速了解所讲述的整个故事并对其进行改进。受到自然变换和 Free Monad(存在于Scala和Haskell中)等事物的启发,Gloe 使用函数式编程和强类型概念实现了这种方法。

Gloe 不是工作流程协调器
目前,与Air Flow等包含用于任务编排的调度程序后端的平台不同,Gloe 的主要目的是协助开发。图形结构旨在使代码更扁平,从而更易读。但是,需要注意的是,Gloe 不提供在专用环境中执行任务的功能,也不会直接有助于提高执行速度或可扩展性。

主要特征

例子
考虑以下管道。其目的是向具有特定角色的用户发送两种类型的促销电子邮件。首先,它从 HTTP 请求中提取角色,然后获取属于此角色的用户,向每组用户发送相应的电子邮件,最后记录发送电子邮件的结果。

send_promotion = (
    extract_request_role >>
    get_users >> (
        filter_basic_subscription >> send_basic_subscription_promotion_email,
        filter_premium_subscription >> send_premium_subscription_promotion_email,
    ) >>
    log_emails_result
)

通过阅读代码,你觉得是否已经足够清晰了?
Gloe 管道的每个步骤都称为一个转换器,创建一个转换器非常简单:

from gloe import transformer

@transformer
def extract_request_role(req: Request) -> str:
    your logic goes here

您可以使用右移位运算符连接多个转换器,就像上面的例子一样。当的参数>>是元组时,您正在创建分支。

4、mistral-finetune
mistral-finetune 是一个轻量级代码库,可以对 Mistral 的模型进行内存高效和高性能的微调。

mistral-finetune是一个轻量级代码库,可实现 Mistral 模型的内存高效且高性能的微调。它基于LoRA,这是一种训练范例,其中大多数权重被冻结,并且仅训练 1-2% 的低秩矩阵扰动形式的额外权重。

为了实现最高效率,建议使用 A100 或 H100 GPU。代码库针对多 GPU 单节点训练设置进行了优化,但对于较小的模型(例如 7B),单个 GPU 就足够了。

  • 此存储库的目标是提供一个简单的引导式入口点来微调 Mistral 模型。因此,它相当固执己见(尤其是在数据格式方面),并不旨在详尽涵盖多种模型架构或硬件类型。对于更通用的方法,您可以查看其他一些很棒的项目,例如 torchtune

常问问题:

  • 微调 MoE 的最佳实践是什么?

在微调 MoE 模型时,我们发现性能差异程度更高。使用不同种子微调 MoE 模型会导致性能差异很大,这并不罕见。我们在密集模型中没有观察到如此高的差异。因此,我们建议在 MoE 模型上运行相同微调过程的多个实例,并选择性能最佳的实例。
  • 如何确定模型训练过程中使用的token数量?

你可以使用以下脚本来查找:https://github.com/mistralai/mistral-finetune/blob/main/utils/validate_data.py。此脚本接受 .yaml 训练文件作为输入,并返回模型正在训练的 token 数量。
  • 如果遇到 CUDA 内存不足错误该怎么办?

一种可能的解决方案是减少每个 GPU 的批处理大小。批处理大小等于seq_lenx batch_size。尝试设置batch_size为 1 并减少seq_len。您可以在 .yaml 文件中定义batch_size和。seq_len

 
5、Pandora
面向具有自然语言动作和视频状态的通用世界模型。

我们推出了 Pandora,这是迈向通用世界模型 (GWM) 的一步,它:

  1. 通过生成跨领域的视频来模拟世界状态
  2. 允许随时用自然语言表达动作进行控制

6、Seismometer
以医疗保健为重点的预测模型评估。

医疗机构正在看到人工智能(AI)功能的激增,这些功能有可能改善患者的治疗效果和临床医生的工作效率。这些机构需要便捷、有效的工具和流程来评估人工智能模型的准确性,并确保它们支持对不同患者群体的公平护理。

医疗保健系统、医疗 IT 软件开发商、第三方专家和政府合作制定的标准有助于建立人工智能的评估标准。然而,要使这些标准具有实际意义,就必须正确、一致地实施这些标准,并在当地患者群体中测试模型,将其嵌入将要使用的特定工作流程中。

seismometer 是一套工具,可让您使用这些标准化的评估标准来评估人工智能模型的性能,帮助您根据自己的本地数据和工作流程做出决策。您可以用它来验证模型的初始性能,并随着时间的推移继续监控其性能。虽然它可用于任何领域的模型,但其设计重点是医疗人工智能模型的验证,因为本地验证需要交叉引用患者数据(如人口统计学、临床干预和患者预后)和模型性能。

功能

  • 该软件包包含模板,用于分析模型的统计性能、不同队列的公平性,以及医疗保健领域常用模型类型的应用和干预措施对结果的影响。
  • 我们希望这些模板能随着新的验证和分析技术及方法的出现而不断发展,而 seismometer 的设计就是为了方便将这些改进纳入其中。


7、Indexify
一个实时索引和结构化提取引擎,用于非结构化数据构建生成式 AI 应用程序。

Indexify 是一个开源引擎,用于使用可重复使用的提取器进行嵌入、转换和特征提取,为非结构化数据(视频、音频、图像和文档)构建快速数据管道。LLM 应用程序可以通过语义搜索和 SQL 查询查询对 LLM 友好的转换内容。

当新数据从外部数据源输入系统时,Indexify 会自动调用管道来更新 vectordbs、结构化数据库(postgres)。

为什么要使用 Indexify

  • 使用SQL和语义搜索使非结构化数据可查询
  • 实时提取引擎可在提取新数据时自动更新索引。
  • 创建提取图来描述嵌入和结构化提取的数据转换和提取。
  • 当内容被删除或更新时进行增量提取和选择性删除。
  • Extractor SDK允许添加新的提取功能,以及许多用于PDF、图像和视频索引和提取的现成提取器。
  • 可与任何 LLM 框架配合使用,包括Langchain、DSPy等。
  • 在原型设计期间在您的笔记本电脑上运行,并可扩展到云端的数千台机器。
  • 可与多种Blob 存储、矢量存储和结构化数据库配合使用
  • 我们甚至有开源自动化来在生产中部署到 Kubernetes。

8、sig
交互式 grep(用于流式传输)。

特征

  • 交互式 grep (用于流式传输)
    • sig允许用户以交互方式搜索(流)数据,并实时更新结果。
  • 归档模式
    • 在存档模式下,由于无法查找通过管道接收的流数据,因此无法在不退出进程的情况下向后搜索。因此,在sig中,会保存最新的 N 条流数据条目,并且可以切换到一种模式,在该模式下,您可以根据任意时刻的键输入来 grep 这 N 条条目。
    • 此外,通过以该模式启动,还可以通过文件等静态数据进行 grep。
      • 类似于带有选项的ugrep-Q。

9、Plane
开源 JIRA、Linear 和 Asana 替代品。 Plane 可帮助您以最简单的方式跟踪问题、史诗和产品路线图。

Meet Plane是一款开源项目管理工具,用于跟踪问题、运行冲刺周期并管理产品路线图,而无需管理工具本身的混乱。‍♀️

功能

  • 问题:使用支持文件上传的强大富文本编辑器快速创建问题并添加详细信息。添加子属性和对问题的引用,以便更好地组织和跟踪。
  • Cycles:使用 Cycles 保持团队的动力。使用燃尽图和其他有价值的功能深入了解项目进度。
  • 模块:将大型项目分解为更小、更易于管理的模块。在团队之间分配模块,以便轻松跟踪和规划项目进度。
  • 视图:创建自定义过滤器,仅显示您关心的问题。只需单击几下即可保存和共享您的过滤器。
  • 页面:平面页面配备 AI 和富文本编辑器,让您可以随时记下您的想法。格式化您的文本、上传图片、超链接或将您现有的想法同步到可操作的项目或问题中。
  • 分析:实时了解所有 Plane 数据。可视化问题数据以发现趋势、消除阻碍并推进工作。
  • 驱动器(即将推出):驱动器可帮助您共享文档、图像、视频或任何其他对您或您的团队有意义的文件,并就问题/解决方案进行协调。


10、Openpanel
将 Mixpanel 和 Plausible 的所有优点组合成一个工具。

Openpanel 是一款简单的分析工具,用于记录网络、应用程序和后端的事件。我们尝试将 Mixpanel 和 Plausible 结合到同一个产品中。

  • 可视化您的数据
    • 图表
      • 漏斗图
      • 线图
      • Bar图
      • 馅饼图
      • 直方图
      • 地图
    • 所有房产明细
    • 所有属性的高级过滤器
    • 使用图表创建漂亮的仪表板
    • 访问您的所有活动
    • 访问所有访客及其历史记录
  • 拥有自己的数据
  • 符合 GDPR 规定
  • 云或自托管
  • 实时事件
  • 隐私保护
  • 经济高效
  • 可预测的定价
  • 一流的 React Native 支持
  • 强大的导出 API

技术:
  • Nextjs-仪表板
  • Fastify - 事件 API
  • Postgres-存储基本信息
  • Clickhouse - 存储事件
  • Redis - 缓存层、发布/订阅和队列


11、RAGapp
在任何企业中使用 Agentic RAG 的最简单方法。

配置起来与OpenAI 的自定义 GPT一样简单,但可以使用 Docker 在您自己的云基础架构中部署。使用LlamaIndex构建。

要运行,请使用镜像启动一个 docker 容器:
docker run -p 8000:8000 ragapp/ragapp
然后,访问管理 UI http://localhost:8000/admin来配置您的 RAGapp。
您可以使用来自 OpenAI 或 Gemini 的托管 AI 模型,以及使用Ollama 的本地模型。

Docker 容器公开以下端点:

12、Terminal Text Effects
应用于终端文本的视觉效果。

TerminalTextEffects (TTE) 是一个终端视觉效果引擎。TTE 可以作为系统应用程序安装以在终端中产生效果,也可以作为 Python 库安装以在 Python 脚本/应用程序中启用效果。TTE 包含一个不断增长的内置效果库,展示了引擎的功能。这些功能包括:

  • Xterm 256 / RGB 十六进制颜色支持
  • 通过路径、航点和运动缓和实现复杂的角色运动,并支持二次/三次贝塞尔曲线。
  • 通过具有符号/颜色变化、图层、缓和和路径同步进展的场景实现复杂的动画。
  • 可变停止/步进颜色渐变生成。
  • 通过自定义回调支持和许多预定义操作来处理路径/场景状态改变的事件。
  • 通过类型化效果配置数据类公开的效果定制,该数据类会自动作为 CLI 参数处理。
  • 以内联方式运行,保留终端状态和工作流程。


13、Zango
在 Django 整体上将微服务作为租户构建。 避免基础设施和运营开销。 轻松扩展。

Zango是一个基于 Django 构建的 Web 应用程序开发框架,旨在将多个应用程序或微服务作为租户托管在单一整体上。

  • 利用 Django 的优势,这是一个已经过验证和测试的 Web 框架
  • 将商业 Web 应用/微服务的基础知识作为框架的一部分提供
  • 在底层的单一整体上托管多个应用程序或微服务。
  • 安全性和合规性已内置。
  • 作为应用程序构建块的基本软件包套件
  • 使用案例包来构建行业特定用例

应用程序面板 - 管理所有应用程序/微服务的中央枢纽

执行配置权限、管理用户角色等任务。
大幅减少您的基础设施和运营开销,在单一部署上托管多个应用程序/微服务:

Zango 重新定义了多租户,允许多个不同的应用程序在一台服务器上运行。告别传统扩展方法的限制。借助我们的平台,您可以在一台服务器上运行多个不同的应用程序,这有助于控制成本。


14、Koheesio
用于构建高效数据管道的 Python 框架。 它促进模块化和协作,从而能够从简单、可重用的组件创建复杂的管道。

  • Koheesio 以芬兰语中的“凝聚力”一词命名,是一个用于构建高效数据管道的强大 Python 框架。它提倡模块化和协作,支持使用简单、可重复使用的组件创建复杂的管道。
  • 该框架功能多样,旨在支持多种实现,并与各种数据处理库或框架无缝协作。这确保 Koheesio 可以处理任何数据处理任务,无论底层技术或数据规模如何。
  • Koheesio 使用Pydantic进行强类型、数据验证和设置管理,确保管道组件内的高水平类型安全性和结构化配置。
  • Koheesio 的目标是通过经过充分测试的代码和丰富的功能集的坚实基础来确保可预测的管道执行,使其成为寻求构建强大且适应性强的数据管道的开发人员和组织的绝佳选择。

Koheesio 凝聚了多年的数据工程专业知识,培养了一个协作和创新的社区。虽然存在类似的库,但 Koheesio 专注于数据管道、与 PySpark 的集成以及针对数据转换、ETL 作业、数据验证和大规模数据处理等任务的特定设计使其与众不同。

Koheesio 旨在为任何类型的数据处理提供丰富的功能,包括读取器、写入器和转换。Koheesio 不会与其他库竞争。其目标是提供广泛的支持并专注于多种场景中的实用性。我们倾向于整合,而不是竞争...

Koheesio 核心组件
以下是 Koheesio 中包含的关键组件:

  • step:这是 Koheesio 中的基本工作单元。它表示数据管道中的单个操作,接收输入并产生输出。
  • Context:这是一个用于设置任务环境的配置类。它可用于跨任务共享变量,并根据任务环境调整其行为。
  • Logger:这是一个用于记录不同级别消息的类。


15、tach
一个用 Rust 编写的强制模块化设计的 Python 工具。

Tach 可让您定义和强制执行项目中 Python 包之间的依赖关系。
这强制实施解耦的模块化架构,使维护和开发更加容易。如果某个包尝试从另一个未列为依赖项的包导入,tach则会引发异常。