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와 같은 외부 제공업체를 지원합니다.
이 라이브러리는 세 가지 운영 모드를 제공합니다:
- 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) 및 벡터 결과와 융합된 그래프 검색을 구현합니다.
- 플러그형 아키텍처: 모든 단계(chunkers, embedders, searchers, rerankers)는 교체가 용이하도록 단일 콜백을 가진 behavior입니다.
- 관측 가능성: 내장된 telemetry 이벤트와 모니터링을 위한 전용 LiveView 대시보드를 제공합니다.