RAGSpine
Concetti

Short-circuit FAQ

Una cache di domande e risposte verificate da esperti di dominio che bypassa l'LLM — protetta da esclusioni conservative, perché si trova a monte della protezione di prevenzione delle risposte inventate.

La cache FAQ restituisce una risposta verificata da esperti di dominio per una domanda nota, bypassando completamente l'LLM, il fact store e il retriever. È un'ottimizzazione di latenza e costi — e un livello ad alto rischio, perché si trova a monte della protezione di prevenzione delle risposte inventate. Uno short-circuit errato salterebbe ogni controllo di sicurezza a valle.

Poiché il livello FAQ si trova a monte della prevenzione delle risposte inventate, le sue esclusioni sono deliberatamente conservative: gli elementi strutturato-numerici, relativi a concorrenti, in tempo reale, scaduti, disabilitati e RESTRICTED non attivano mai lo short-circuit.

Dove si colloca

Nella route /v1/ask (service/api/routes.py), il lookup FAQ viene eseguito per primo:

# 1) FAQ short-circuit — on hit, never touches provider / fact store / retriever
hit = faq_cache.lookup(req.question, reference_date=ref)
if hit is not None:
    return AskResponse(..., route="faq", answer=hit.answer, sources=[...])

# 2) miss -> normal workflow (anti-fabrication guard, dual channel, ...)
result = answer_question(req.question, store, provider, ...)

lookup è una funzione pura (service/faq/faq_cache.py): consulta parse_intent / clarify_scope per le decisioni di confine ma non raggiunge mai l'LLM, il fact store o il retriever. La corrispondenza avviene esclusivamente per match esatto normalizzato / alias (NFKC, casefold, normalizzazione degli spazi e rimozione della punteggiatura finale) — nessuna corrispondenza fuzzy o basata su embedding.

Le esclusioni conservative

lookup restituisce un miss (None) se una qualsiasi di queste condizioni è vera — le esclusioni vengono verificate prima di consultare l'indice della cache:

Un elemento FAQ

Gli elementi sono verificati da esperti di dominio e tracciati per versione; l'hit trasporta la propria provenienza (FAQHit.source):

{
  "id": "what-is-ragspine",
  "question": "RAGSpine 是什么?",
  "aliases": ["What is RAGSpine?"],
  "answer": "RAGSpine 是一个无框架的后端 RAG 引擎……",
  "source": "internal/faq-handbook.md",
  "version": 3,
  "enabled": true,
  "valid_from": "2026-01-01",
  "valid_until": null,
  "sensitivity": "INTERNAL"
}

Un hit restituisce route: "faq" con un blocco cache (hit, type, faq_id, version, source). La trace registra solo cache_hit, faq_id e faq_version — mai il testo della risposta. Carica il JSON delle FAQ tramite la variabile d'ambiente RAGSPINE_FAQ_SOURCE.

In questa pagina