Spaces:
Runtime error
Runtime error
File size: 2,213 Bytes
6dfa658 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | from __future__ import annotations
import argparse
import sys
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(ROOT / "src"))
from legal_rag.data import load_corpus
from legal_rag.metrics import citation_label_accuracy, lexical_faithfulness_proxy, token_f1
from legal_rag.rag import extractive_baseline_answer
from legal_rag.retrievers import BM25Retriever
def main() -> None:
parser = argparse.ArgumentParser(description="Fast local health check for the legal RAG pipeline")
parser.add_argument("--data-dir", type=Path, default=Path("data"))
parser.add_argument("--question", default="Kasten oldurme sucu nedir?")
parser.add_argument("--top-k", type=int, default=5)
args = parser.parse_args()
corpus = load_corpus(args.data_dir)
if not corpus:
raise SystemExit("Smoke test failed: corpus is empty")
retriever = BM25Retriever(corpus)
results = retriever.search(args.question, top_k=args.top_k)
if not results:
raise SystemExit("Smoke test failed: BM25 returned no results")
answer = extractive_baseline_answer(args.question, results)
if "Kaynak:" not in answer:
raise SystemExit("Smoke test failed: answer does not include a citation line")
contexts = [result.doc.text for result in results]
citation_labels = {result.doc.citation_label for result in results[:1]}
citation_ok = citation_label_accuracy(answer, citation_labels)
faithfulness = lexical_faithfulness_proxy(answer, contexts)
self_f1 = token_f1(answer, answer)
if citation_ok < 1.0:
raise SystemExit("Smoke test failed: generated citation does not match top source")
if faithfulness <= 0.0:
raise SystemExit("Smoke test failed: answer has no lexical support in retrieved context")
if self_f1 != 1.0:
raise SystemExit("Smoke test failed: metric sanity check failed")
print("Smoke test passed")
print(f"documents: {len(corpus)}")
print(f"question: {args.question}")
print(f"top_source: {results[0].doc.id}")
print(f"citation: {results[0].doc.citation_label}")
print(f"faithfulness_proxy: {faithfulness:.3f}")
if __name__ == "__main__":
main()
|