Apache-2.0 · Python 3.10+ · framework-free

The framework-free backbone for backend RAG.

Deterministic dual-channel retrieval and agent orchestration, with anti-fabrication and source provenance built in — no Dify, no LangGraph, no DSL. Just composable Python.

orchestrator · structured channel
$ask "中国内地 FY2024 的 REVENUE 是多少"

ACME_CN FY2024 REVENUE 为 1320 USD_M(来源:ACME_FY2024_Review.pptx · slide=2,table=1,row=REVENUE,col=FY2024)

$ask "2025 的 REVENUE 是多少"

查不到:REVENUE / ACME_CN / 2025 …未在事实表中找到。为避免误导,不提供任何推测数字。

When the data isn't there, the orchestrator deterministically refuses — never guesses.

Why RAGSpine

Infrastructure decisions, made for you — and enforced in code.

No framework lock-in

Pure Python; bring your own everything. Drop into any backend.

Dual-channel

Deterministic numbers + narrative RAG, unified by an agent router.

Anti-fabrication + provenance

Enforced invariants, not prompt suggestions.

Office-document extraction

xlsx / pptx / pdf → structured facts, style- & color-aware.

Hybrid retrieval

CJK-aware BM25 + injectable vector + RRF fusion + optional LLM rerank.

FAQ short-circuit

SME-vetted answers bypass the LLM, behind conservative exclusion guards.

Built-in evaluation

Four-gate metrics + baseline regression gating.

Privacy-aware observability

Traces carry codes / counts / timings only.

Architecture

Two channels, one router.

Exact numbers come from a deterministic structured channel; everything else flows through narrative RAG. A single agent router decides, then attaches provenance to the answer.

structured numeric

Exact facts from a deterministic fact table — never inferred.

narrative RAG

Hybrid retrieval over prose, fused and optionally reranked.

agent routerone answer, with provenance