Arcana-backed enterprise RAG adapter for CMDC.
本包不改变 cmdc core,而是通过标准 CMDC.Tool 与 CMDC.Plugin
边界把 Arcana 的 search/answer 能力挂入 Agent Runtime。第一版只提供
只读检索与问答,不允许 Agent 直接 ingest / delete 企业知识库文档。
快速使用
{:ok, session} =
CMDC.create_agent(
model: "anthropic:claude-sonnet-4-5",
tools: [
CMDCRAGArcana.Tool.Search,
CMDCRAGArcana.Tool.Answer,
CMDCRAGArcana.Tool.IngestStatus,
CMDCRAGArcana.Tool.GraphStatus,
CMDCRAGArcana.Tool.GraphSearch
],
plugins: [
CMDCRAGArcana.Plugin.AccessControl,
CMDCRAGArcana.Plugin.CitationAudit
],
user_data: %{
tenant_id: "tenant-a",
user_id: "u-1",
roles: ["ops"],
cmdc_rag_arcana: %{
repo: MyApp.Repo,
llm: "openai:gpt-4o-mini",
status_backend: MyApp.Knowledge.RAGStatusBackend,
graph_profiles: [%{id: "contract_graph", mode: :relationship_graph}],
graph_policies: [%{profile_id: "contract_graph", collections: ["contracts"]}],
allowed_collections: ["policies"]
}
}
)集成测试可以把 :backend / :status_backend 改为自定义模块,从而避免
真实 Repo / pgvector / LLM / 企业控制面数据库。
Summary
Functions
执行 Arcana answer 并归一化为 CMDCRAGArcana.SearchResult。
执行 GraphRAG 只读检索。
只读查询 GraphRAG 状态。
按企业预配置 Pipeline preset 执行 Arcana Pipeline answer。
执行 Arcana search 并归一化为 CMDCRAGArcana.SearchResult。
返回当前包版本号。
Functions
@spec answer( String.t(), keyword() ) :: {:ok, CMDCRAGArcana.SearchResult.t()} | {:error, term()}
执行 Arcana answer 并归一化为 CMDCRAGArcana.SearchResult。
@spec graph_search( String.t(), keyword() ) :: {:ok, CMDCRAGArcana.SearchResult.t()} | {:error, term()}
执行 GraphRAG 只读检索。
该函数只启用 Arcana graph/fusion search,不会触发 graph rebuild、entity embedding、community detect 或 summary。
@spec graph_status(keyword() | map()) :: {:ok, CMDCRAGArcana.Graph.Status.t()} | {:error, term()}
只读查询 GraphRAG 状态。
@spec pipeline_answer( String.t(), keyword() ) :: {:ok, CMDCRAGArcana.SearchResult.t()} | {:error, term()}
按企业预配置 Pipeline preset 执行 Arcana Pipeline answer。
@spec search( String.t(), keyword() ) :: {:ok, CMDCRAGArcana.SearchResult.t()} | {:error, term()}
执行 Arcana search 并归一化为 CMDCRAGArcana.SearchResult。
@spec version() :: String.t()
返回当前包版本号。