georgeguimaraes/arcana

Embeddable RAG library for Elixir/Phoenix with agentic pipelines and dashboard

解決する課題

Arcanaは、ElixirおよびPhoenixアプリケーション向けの埋め込み型RAG(Retrieval-Augmented Generation)ライブラリです。既存のEctoリポジトリ(pgvectorを使用したPostgreSQL)に直接統合することで、個別のベクトルデータベース、インデックス作成サービス、またはオーケストレーション層の必要性を排除します。これにより、開発者は新しいインフラのオーバーヘッドを導入することなく、アプリにベクトル検索、ナレッジグラフ、およびLLM駆動の検索機能を追加できます。

仕組み

ArcanaはBEAMプロセスモデル内で動作し、監視ツリー(supervision tree)の下で、埋め込み(embedders)とリランク(rerankers)にNx.Servingインスタンスを使用します。ストレージにはPostgreSQLのpgvector拡張機能を利用し、Bumblebee(EXLA、EMLX、またはTorchx)によるローカルファーストな埋め込み、またはOpenAIやCohereなどの外部プロバイダーをサポートしています。

このライブラリは3つの動作モードを提供します:

  • Advanced RAG: クエリの書き換えやリランキングを含む適切なデフォルト設定を備えた、ハイレベルなAPI(Arcana.search/2, Arcana.ask/2)。
  • Modular RAG: ゲーティング、書き換え、分解、検索、グラウンディングなどの特定のステップを構成できる、カスタマイズ可能なパイプライン(Arcana.Pipeline)。
  • Agentic RAG: モデルが実行時にツール(検索、回答、断念)を選択して、マルチホップまたはオープンエンドな質問を処理する、LLM駆動のループ(Arcana.Loop)。

対象者

シンプルなセマンティック検索から複雑なエージェントワークフローまで、既存のアプリケーションスタックとデータベース内で直接RAG機能を実装したいElixirおよびPhoenixの開発者。

ハイライト

  • インフラ不要: スタンドアロンのベクトルDBの代わりに、pgvectorを介して既存のPostgresデータベースを使用します。
  • ローカルファースト: Bumblebeeを介したローカル埋め込みとクロスエンコーダーによるリランキングをサポートしています。
  • GraphRAG: エンティティ抽出、コミュニティ検出(Leiden)、およびベクトル結果と融合したグラフ検索を実装しています。
  • プラグイン可能なアーキテクチャ: すべてのステップ(チャンカー、エンベッダー、サーチャー、リランカー)は、簡単に置き換えられる単一のコールバックを持つbehaviorです。
  • オブザーバビリティ: 組み込みのテレメトリイベントと、モニタリング用の専用LiveViewダッシュボードを備えています。