CMDCRAGArcana (cmdc_rag_arcana v0.5.0)

Copy Markdown View Source

Arcana-backed enterprise RAG adapter for CMDC.

本包不改变 cmdc core,而是通过标准 CMDC.ToolCMDC.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

answer(question, opts)

@spec answer(
  String.t(),
  keyword()
) :: {:ok, CMDCRAGArcana.SearchResult.t()} | {:error, term()}

执行 Arcana answer 并归一化为 CMDCRAGArcana.SearchResult

graph_search(query, opts)

@spec graph_search(
  String.t(),
  keyword()
) :: {:ok, CMDCRAGArcana.SearchResult.t()} | {:error, term()}

执行 GraphRAG 只读检索。

该函数只启用 Arcana graph/fusion search,不会触发 graph rebuild、entity embedding、community detect 或 summary。

graph_status(opts)

@spec graph_status(keyword() | map()) ::
  {:ok, CMDCRAGArcana.Graph.Status.t()} | {:error, term()}

只读查询 GraphRAG 状态。

pipeline_answer(question, opts)

@spec pipeline_answer(
  String.t(),
  keyword()
) :: {:ok, CMDCRAGArcana.SearchResult.t()} | {:error, term()}

按企业预配置 Pipeline preset 执行 Arcana Pipeline answer。

search(query, opts)

@spec search(
  String.t(),
  keyword()
) :: {:ok, CMDCRAGArcana.SearchResult.t()} | {:error, term()}

执行 Arcana search 并归一化为 CMDCRAGArcana.SearchResult

version()

@spec version() :: String.t()

返回当前包版本号。