georgeguimaraes/arcana
Embeddable RAG library for Elixir/Phoenix with agentic pipelines and dashboard
解決的問題
Arcana 是一個適用於 Elixir 和 Phoenix 應用程式的嵌入式 RAG(檢索增強生成)函式庫。透過直接整合到現有的 Ecto 儲存庫(使用 pgvector 的 PostgreSQL),它消除了對獨立向量資料庫、索引服務或編排層的需求。它允許開發人員在不引入新基礎設施開銷的情況下,為其應用程式添加向量搜尋、知識圖譜和 LLM 驅動的檢索功能。
工作原理
Arcana 在 BEAM 程序模型內運作,在監督樹下使用 Nx.Serving 實例作為嵌入器(embedders)和重排序器(rerankers)。它利用 PostgreSQL 的 pgvector 擴充功能進行儲存,並透過 Bumblebee (EXLA, EMLX 或 Torchx) 支援本地優先的嵌入,或透過 OpenAI 和 Cohere 等外部提供商進行支援。
該函式庫提供三種運作模式:
- Advanced RAG:具有合理預設值(包括查詢重寫和重排序)的高階 API (
Arcana.search/2,Arcana.ask/2)。 - Modular RAG:可自訂的流水線 (
Arcana.Pipeline),開發人員可以組合特定的步驟,如門控、重寫、分解、搜尋和接地(grounding)。 - Agentic RAG:LLM 驅動的迴圈 (
Arcana.Loop),模型在執行時選擇工具(搜尋、回答、放棄)來處理多跳或開放式問題。
適用對象
希望直接在現有應用棧和資料庫中實現從簡單語義搜尋到複雜智能體工作流等 RAG 能力的 Elixir 和 Phoenix 開發人員。
亮點
- 無需基礎設施:透過 pgvector 使用您現有的 Postgres 資料庫,而不是獨立的向量資料庫。
- 本地優先:透過 Bumblebee 支援本地嵌入和交叉編碼器重排序。
- GraphRAG:實現實體提取、社群檢測 (Leiden) 以及與向量結果融合的圖搜尋。
- 可插拔架構:每個步驟(分塊器、嵌入器、搜尋器、重排序器)都是一個具有單一回呼函式 (callback) 的 behavior,易於替換。
- 可觀測性:內建的 telemetry 事件和用於監控的專用 LiveView 儀表板。