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) 以及与向量结果融合的图搜索。
- 可插拔架构:每个步骤(分块器、嵌入器、搜索器、重排序器)都是一个具有单一回调的 behavior,易于替换。
- 可观测性:内置的 telemetry 事件和用于监控的专用 LiveView 仪表板。