FactGuard-9B (v0.1, research preview)

FactGuard-9B is a claim–evidence verification model, the 9B member of the FactGuard family. Given a set of evidence lines (F1–F9) and one atomic claim, it reads the probability of four label tokens at the answer position and returns one of:

Token Label Meaning
A SUPPORTED The evidence entails the whole claim (product, plan, number, condition, period).
B CONTRADICTED The evidence explicitly states something incompatible with the claim.
C NOT_VERIFIABLE The evidence does not say it, or plan/column attribution or conditions cannot be confirmed.
D STALE Supported only by past (dated) evidence.

It is a specialist model. It was trained for SaaS product pricing, plan, limit, and feature claims (mostly Korean claims against English or Korean pricing pages). It judges only the relation between a claim and the evidence you pass in. It does not know whether a fact is true in the world, and it does not search.

This repository contains the merged BF16 weights: the LoRA adapter merged into Qwen/Qwen3.5-9B. It loads like any Qwen3.5 checkpoint, and no adapter setup is needed.

Status

Research preview.

  • Sealed evaluation pending. A new sealed Specialist benchmark (unseen brands, documents and phrasings) will compare FactGuard 4B/8B/9B/27B and their base models; this card will be updated when it is out.
  • Performance on real AI answers is unverified.
  • The 0.992 below is a development-set result. It is not a generalization accuracy.
  • Not validated as a replacement for a 27B judge.

Usage

See example_inference.py and label_contract.json. Use the prompt exactly as specified (raw text, no chat template, add_special_tokens=False, at most 1,024 input tokens), and take the softmax over the four label token logits at the last position.

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
tok = AutoTokenizer.from_pretrained("ThakiCloud/FactGuard-9B")
model = AutoModelForCausalLM.from_pretrained("ThakiCloud/FactGuard-9B", dtype=torch.bfloat16, device_map="auto")
# prompt = HEAD + evidence_packet + "\n\n판정:"  (HEAD is in label_contract.json)

AutoModelForCausalLM loads the text model. The checkpoint keeps the base model's full multimodal layout (vision tower, MTP weights, processor files) unchanged. Vision weights were not trained, and no image-verification ability is claimed.

Training

  • Base: Qwen/Qwen3.5-9B, revision c202236235762e1c871ad0ccb60c8ee5ba337b9a. All 16 files match the Hub LFS/blob hashes.
  • Method: LoRA (r=16, alpha=32, dropout 0.05) on all attention, linear-attention, and MLP projections of the language model (vision excluded). The adapter was merged with W' = W + (B·A)·alpha/r, computed in fp32 and stored as BF16, on the unquantized base weights.
  • Curriculum. The same data, curriculum, and hyperparameters as FactGuard-4B v0.3. Each stage continued from the previous adapter, for 1 epoch at batch 4×4 and max length 1,024.
    1. v0: 18,000 synthetic counterfactual rows on fictional brands, labels set by the generating operation, lr 1e-4.
    2. v0.1: 10,000 rows (7,000 table/card/fragment formats on fictional brands + 3,000 replay), lr 5e-5.
    3. v0.3: 4,530 rows (1,530 deterministic counterfactuals built on official pricing pages of 25 real SaaS brands, using only cells where two extractors agreed + 3,000 replay), lr 5e-5, seed 2.
  • An auxiliary head-free objective predicts the decision evidence id (weight 0.3).
  • Hardware: a single NVIDIA B200 for all stages (about 41 minutes of training in total; final stage 284 steps).
  • Data not released. The training data contains no customer data and no human or LLM labels. Sealed evaluation sets were never used in training. The training/eval brand and claim-string overlap with the evaluation sets is 0.

Evaluation

These are development sets, not sealed evaluations. They were used during FactGuard development (the 4B v0.3 seed was selected on them), so they favor the 4B comparison and are not a held-out estimate. A sealed family comparison will be pre-registered and run once.

Model V03DEV (4,377) acc · S recall · FS · FC DEV4ALL (513) SLACKV22 (179)
Qwen3.5-9B base (no training) 0.260 · 0.188 · 2 · 0 0.694 · 0.116 · 0 · 1 0.732 · 0.143 · 0 · 0
FactGuard-9B v0.1 0.992 · 0.994 · 18 · 13 0.981 · 0.980 · 1 · 4 0.955 · 0.857 · 0 · 1
FactGuard-4B v0.3 0.993 · 0.996 · 17 · 8 0.990 · 0.986 · 0 · 0 0.933 · 0.804 · 1 · 2

FS = false support (predicted SUPPORTED when the gold label is not). FC = false contradiction. V03DEV and DEV4ALL are counterfactual; SLACKV22 is 179 claims from real answers with labels that were not independently audited.

  • Training lifts the base model from 0.260 to 0.992 on V03DEV. The untrained base almost never predicts SUPPORTED with this prompt.
  • Against FactGuard-4B, 9B is on par on the counterfactual sets and ahead on SLACKV22 by 4 items, which is too few to attribute to model size. 9B makes more false contradictions.
  • Single-stream latency (B200, batch 1, model only): p50 105.6 ms, p95 115.2 ms.

Merge check: the merged weights and the original LoRA adapter produce the same decisions on held-out development items (see eval_manifest.json).

Limitations

  • Performance on real, naturally occurring AI answers is not established, and no sealed evaluation exists for this model yet. Do not read development or counterfactual accuracy as real-world accuracy.
  • It makes more false contradictions than FactGuard-4B on the development sets.
  • Single-model decisions can produce false support. Pair the model with an evidence-coverage guard and human review for high-stakes use.
  • The model was trained for pricing, plan, and feature claims only. It is not validated for legal, financial-regulatory, medical, or general-knowledge verification.
  • "Not found in the evidence" means NOT_VERIFIABLE, not "false". Wrong or incomplete evidence can lead to wrong SUPPORTED decisions.

Provenance

  • Adapter sha256: d2f3ccb2204d4326fb81f18e59a3ba63d01c96038faaa222679ad6a6c421c21c
  • Merged shard sha256: see eval_manifest.json
  • License: Apache-2.0, following the base model.
Downloads last month
31
Safetensors
Model size
10B params
Tensor type
BF16
·
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for ThakiCloud/FactGuard-9B

Finetuned
Qwen/Qwen3.5-9B
Finetuned
(1137)
this model

Collection including ThakiCloud/FactGuard-9B