georgeguimaraes/arcana
Embeddable RAG library for Elixir/Phoenix with agentic pipelines and dashboard
解决的问题
Arcana 是一个为 Elixir 和 Phoenix 应用程序设计的可嵌入式 RAG(检索增强生成)库。它无需单独的向量数据库、索引服务或编排层,而是直接集成到现有的 Ecto 仓库(PostgreSQL + pgvector)中。它提供了一种统一的方式来处理文档摄入、向量搜索、知识图谱以及 LLM 驱动的检索,所有操作都在单一进程模型中完成。
工作原理
Arcana 集成到 BEAM 进程模型中,使用 Nx.Serving 实例作为嵌入器和重排序器,并在监督树中运行。它基于代理型 RAG 分类体系,支持三种操作模式:
- 高级 RAG:提供简单的入口点(
Arcana.search/2、Arcana.ask/2),默认处理查询重写、混合搜索和重排序。 - 模块化 RAG:提供可组合的流水线(
Arcana.Pipeline),开发者可以自定义一系列步骤,如重写、分解、搜索和接地。 - 代理型 RAG:提供 LLM 驱动的循环(
Arcana.Loop),模型在运行时选择工具(搜索、回答、放弃)以回答复杂或多跳问题。
适用人群
希望在不增加基础设施开销或在栈中引入多种语言(如 Python)的情况下实现 RAG 功能的 Elixir 和 Phoenix 开发者。
核心亮点
- 无基础设施:通过 pgvector 使用您现有的 Postgres 数据库来存储文档、嵌入向量和知识图谱。
- 本地优先:通过 Bumblebee(EXLA、EMLX、Torchx)支持本地嵌入和交叉编码器重排序。
- GraphRAG:实现实体提取、社区检测(Leiden)以及与向量结果融合的图搜索。
- 语言学接地:包含用于 NLI 幻觉检测和忠实度评分的工具。
- 可插拔架构:每个步骤(分块器、嵌入器、搜索器、重排序器)都定义为行为(behaviour),可轻松替换。
相关
- 项目
- 项目
- 项目
- 项目
- 项目