~/tools / Embedding e ricerca (RAG) / RAG Citation Checker

RAG Citation Checker — Verifica numeri di fonte e citazioni di una risposta RAG con le fonti

Verifica le citazioni di una risposta RAG rispetto alle fonti che hai inviato: ogni numero di fonte deve esistere, ogni testo citato dovrebbe comparire nella sua fonte, e lo strumento elenca le frasi senza numero di fonte, le fonti mai citate e le risposte interrotte. Legge risposte di /api/chat di Ollama (anche in streaming), risposte compatibili con OpenAI e testo semplice. Nulla lascia il tuo browser.

La risposta dell'esempio è scritta a mano per mostrare un testo citato che non è nella sua fonte.

4 fonti (un array JSON di stringhe). Risposta letta come una risposta di /api/chat di Ollama, nella forma di JSON con citazioni.

Token del prompt (prompt_eval_count): 306

  • Il testo citato della citazione #2 non è nella fonte [4].

Citazioni

FonteTesto citatoRisultato
[2]hnsw.ef_search is 40 by defaultTrovato così com'è
[4]4 bytes per dimension plus 8Non è in questa fonte

Questo verifica solo che i numeri e i testi citati corrispondano alle fonti. Non può dire se la risposta è corretta né se una fonte sostiene davvero una frase.

Formato della risposta dalla documentazione di riferimento dell'API e dal codice sorgente di Ollama, verificato su Ollama 0.40.11 il 2026-11-05. Ollama API: /api/chat

Tutto avviene nel tuo browser. Lo strumento non si collega a nulla.

Quando un modello risponde in base a fonti numerate, le citazioni si possono verificare in modo meccanico. Incolla le stesse fonti che hai inviato, nello stesso formato del RAG Prompt Builder (un array JSON di stringhe o di oggetti, oppure testo separato da righe con --- o da righe vuote; vengono numerate a partire da [1] allo stesso modo), e incolla la risposta. La risposta può essere la risposta completa di /api/chat di Ollama (lo strumento prende message.content; una risposta in streaming con un oggetto JSON per riga viene unita), una risposta compatibile con OpenAI (choices[0].message.content) oppure solo il testo. Se la risposta è JSON con una risposta e un elenco di citazioni, come lo chiede il RAG Prompt Builder, lo strumento verifica ogni citazione: il numero della fonte deve essere uno di quelli delle fonti, e il testo citato dovrebbe comparire in quella fonte, così com'è oppure ignorando le differenze di spazi, maiuscole e minuscole, caratteri a larghezza piena e virgolette tipografiche. Se la risposta è testo, lo strumento raccoglie i numeri tra parentesi quadre, come [2] o [1, 3], segnala i numeri che non corrispondono a nessuna fonte ed elenca le frasi che non hanno un numero. In entrambi i casi elenca le fonti mai citate e avvisa quando non ci sono citazioni, o quando done_reason è "length", il che significa che la risposta è stata interrotta da num_predict. Quello che non può fare è giudicare se la risposta è giusta. Nel nostro test con qwen2.5:7b, una risposta citava parola per parola la regola corretta della sua fonte e dava comunque un numero sbagliato, e un'altra risposta diceva di non saperlo ma citava una fonte senza attinenza. Una citazione che passa qui mostra soltanto che il testo citato è nella fonte.

La logica principale di questo strumento è open source, con licenza MIT. github.com/seigo5555/toolkitbox-lib/src/rag-citations.ts

Casi d'uso

  • Verificare che la risposta di un modello locale citi solo fonti che sono state davvero inviate, con testi citati che ci sono davvero
  • Trovare le frasi di una risposta che non hanno una fonte, prima di mostrare la risposta agli utenti
  • Confrontare prompt o modelli sulle stesse domande in base a quanto spesso le loro citazioni reggono

Utilizzo

  1. Incolla le fonti che hai inviato insieme alla domanda, nello stesso ordine.
  2. Incolla la risposta: la risposta completa di /api/chat, una risposta compatibile con OpenAI o il testo della risposta.
  3. Leggi la tabella delle citazioni, le frasi senza numero di fonte e le fonti che non sono state citate.

FAQ

Un testo citato è segnato come non trovato. La risposta è sbagliata?

Non necessariamente. Il modello potrebbe aver parafrasato la fonte invece di copiarla. Ma un testo che non è nella fonte non si può verificare, quindi considera quell'affermazione non sostenuta finché non hai letto la fonte.

Tutte le citazioni passano. La risposta è corretta?

Non necessariamente. Lo strumento verifica solo che i numeri e i testi citati corrispondano alle fonti. Nel nostro test, il modello ha citato la regola corretta (4 volte le dimensioni più 8 byte) e ha comunque risposto 1552 byte invece di 1,544 per un vettore a 384 dimensioni.

Perché le fonti devono essere nello stesso ordine?

I numeri nella risposta si riferiscono all'ordine in cui le fonti sono state inviate. Se l'ordine è diverso, [2] punta a un altro testo e la verifica non ha senso.

Come divide lo strumento la risposta in frasi?

Agli a capo, dopo . ! ? seguiti da uno spazio, e dopo i caratteri a larghezza piena 。!?. Un numero che segue subito la fine di una frase, come "… here. [1]", vale per quella frase. Abbreviazioni come e.g. possono dividere una frase in due.

Cosa significa done_reason "length"?

Nel codice sorgente di Ollama, è il motivo indicato quando la risposta ha raggiunto il limite di token (num_predict) invece di fermarsi da sola. La fine della risposta, e forse le sue citazioni, manca.

I miei dati vengono inviati da qualche parte?

No. La verifica avviene nel tuo browser. Lo strumento non si collega mai a Ollama né a nessun altro servizio.

Articoli correlati

Correlati