有趣:RAGapp等本週15個Github專案

banq發表於2024-05-31

本週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 不提供在專用環境中執行任務的功能,也不會直接有助於提高執行速度或可擴充套件性。

主要特徵

  • 使用純 Python 編寫型別安全的管道。
  • 將管道表示為一組原子的、隔離的、可擴充套件的、可跟蹤的責任單元(稱為變壓器)
  • 驗證執行過程中變壓器的輸入、輸出以及輸入和輸出之間的變化。
  • 混合同步和非同步程式碼,而不必擔心其併發性質。
  • 為極其複雜的流程編寫可讀且可維護的程式碼。¹
  • 在您需要的時間和地點使用它。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 容器公開以下端點:

  • 管理介面:http://localhost:8000/admin
  • 聊天介面:http://localhost:8000
  • API:http://localhost:8000/docs

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則會引發異常。


 

相關文章