Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion bench/hallucination/config-7b.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ hallucination_mitigation:
model_id: "models/halugate-sentinel"
threshold: 0.6
use_cpu: true
mapping_path: "models/halugate-sentinel/fact_check_mapping.json"

# Hallucination detector: verifies if LLM response is grounded in context
# Using large model (395M params) for better accuracy
Expand Down
1 change: 0 additions & 1 deletion bench/hallucination/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ hallucination_mitigation:
model_id: "models/halugate-sentinel"
threshold: 0.6
use_cpu: true
mapping_path: "models/halugate-sentinel/fact_check_mapping.json"

# Hallucination detector: verifies if LLM response is grounded in context
# Using large model (395M params) for better accuracy
Expand Down
File renamed without changes.
1 change: 0 additions & 1 deletion config/testing/config.hallucination.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ hallucination_mitigation:
model_id: "models/halugate-sentinel"
threshold: 0.6
use_cpu: true
mapping_path: "models/halugate-sentinel/fact_check_mapping.json"

# Hallucination detector: verifies if LLM response is grounded in context
hallucination_model:
Expand Down
41 changes: 10 additions & 31 deletions src/semantic-router/pkg/classification/fact_check_classifier.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,37 +49,16 @@ func (c *FactCheckClassifier) Initialize() error {
return nil
}

// Load mapping if configured
if c.config.MappingPath != "" {
mapping, err := LoadFactCheckMapping(c.config.MappingPath)
if err != nil {
logging.Warnf("Failed to load fact-check mapping from %s: %v, using defaults", c.config.MappingPath, err)
// Create default mapping
c.mapping = &FactCheckMapping{
LabelToIdx: map[string]int{
FactCheckLabelNotNeeded: 0,
FactCheckLabelNeeded: 1,
},
IdxToLabel: map[string]string{
"0": FactCheckLabelNotNeeded,
"1": FactCheckLabelNeeded,
},
}
} else {
c.mapping = mapping
}
} else {
// Create default mapping
c.mapping = &FactCheckMapping{
LabelToIdx: map[string]int{
FactCheckLabelNotNeeded: 0,
FactCheckLabelNeeded: 1,
},
IdxToLabel: map[string]string{
"0": FactCheckLabelNotNeeded,
"1": FactCheckLabelNeeded,
},
}
// Use default mapping (no external mapping file needed)
c.mapping = &FactCheckMapping{
LabelToIdx: map[string]int{
FactCheckLabelNotNeeded: 0,
FactCheckLabelNeeded: 1,
},
IdxToLabel: map[string]string{
"0": FactCheckLabelNotNeeded,
"1": FactCheckLabelNeeded,
},
}

// Initialize ML model - ModelID is required
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -480,7 +480,6 @@ var _ = Describe("Classifier with Hallucination Mitigation", func() {
cfg = &config.RouterConfig{}
cfg.HallucinationMitigation.Enabled = true
cfg.HallucinationMitigation.FactCheckModel.ModelID = "test-model"
cfg.HallucinationMitigation.FactCheckModel.MappingPath = "test-mapping.json"

classifier = &Classifier{Config: cfg}
Expect(classifier.IsFactCheckEnabled()).To(BeTrue())
Expand Down
3 changes: 0 additions & 3 deletions src/semantic-router/pkg/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -526,9 +526,6 @@ type FactCheckModelConfig struct {

// Use CPU for inference
UseCPU bool `yaml:"use_cpu"`

// Path to fact-check label mapping file (JSON format)
MappingPath string `yaml:"mapping_path"`
}

// HallucinationModelConfig represents configuration for hallucination detection model
Expand Down
14 changes: 0 additions & 14 deletions src/semantic-router/pkg/config/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2426,7 +2426,6 @@ hallucination_mitigation:
model_id: "models/fact_check_classifier"
threshold: 0.75
use_cpu: true
mapping_path: "config/hallucination/fact_check_mapping.json"
hallucination_model:
model_id: "models/hallucination_detect_modernbert"
threshold: 0.6
Expand All @@ -2445,7 +2444,6 @@ hallucination_mitigation:
Expect(cfg.HallucinationMitigation.FactCheckModel.ModelID).To(Equal("models/fact_check_classifier"))
Expect(cfg.HallucinationMitigation.FactCheckModel.Threshold).To(Equal(float32(0.75)))
Expect(cfg.HallucinationMitigation.FactCheckModel.UseCPU).To(BeTrue())
Expect(cfg.HallucinationMitigation.FactCheckModel.MappingPath).To(Equal("config/hallucination/fact_check_mapping.json"))
Expect(cfg.HallucinationMitigation.HallucinationModel.ModelID).To(Equal("models/hallucination_detect_modernbert"))
Expect(cfg.HallucinationMitigation.HallucinationModel.Threshold).To(Equal(float32(0.6)))
Expect(cfg.HallucinationMitigation.HallucinationModel.UseCPU).To(BeTrue())
Expand Down Expand Up @@ -2544,7 +2542,6 @@ default_model: "test-model"
cfg := &RouterConfig{}
cfg.HallucinationMitigation.Enabled = true
cfg.HallucinationMitigation.FactCheckModel.ModelID = "models/fact_check"
cfg.HallucinationMitigation.FactCheckModel.MappingPath = "config/mapping.json"

Expect(cfg.IsFactCheckClassifierEnabled()).To(BeTrue())
})
Expand All @@ -2556,7 +2553,6 @@ default_model: "test-model"
{Name: "no_fact_check_needed", Description: "Query does not need fact verification"},
}
cfg.HallucinationMitigation.FactCheckModel.ModelID = "models/fact_check"
cfg.HallucinationMitigation.FactCheckModel.MappingPath = "config/mapping.json"

Expect(cfg.IsFactCheckClassifierEnabled()).To(BeTrue())
})
Expand All @@ -2565,23 +2561,13 @@ default_model: "test-model"
cfg := &RouterConfig{}
cfg.HallucinationMitigation.Enabled = false
cfg.HallucinationMitigation.FactCheckModel.ModelID = "models/fact_check"
cfg.HallucinationMitigation.FactCheckModel.MappingPath = "config/mapping.json"

Expect(cfg.IsFactCheckClassifierEnabled()).To(BeFalse())
})

It("should return false when model_id is missing", func() {
cfg := &RouterConfig{}
cfg.HallucinationMitigation.Enabled = true
cfg.HallucinationMitigation.FactCheckModel.MappingPath = "config/mapping.json"

Expect(cfg.IsFactCheckClassifierEnabled()).To(BeFalse())
})

It("should return false when mapping_path is missing", func() {
cfg := &RouterConfig{}
cfg.HallucinationMitigation.Enabled = true
cfg.HallucinationMitigation.FactCheckModel.ModelID = "models/fact_check"

Expect(cfg.IsFactCheckClassifierEnabled()).To(BeFalse())
})
Expand Down
6 changes: 2 additions & 4 deletions src/semantic-router/pkg/config/helper.go
Original file line number Diff line number Diff line change
Expand Up @@ -452,16 +452,14 @@ func (c *RouterConfig) IsFactCheckClassifierEnabled() bool {
// Check new fact_check_rules config first
if len(c.FactCheckRules) > 0 {
// For new signal config, still need the model from HallucinationMitigation
return c.HallucinationMitigation.FactCheckModel.ModelID != "" &&
c.HallucinationMitigation.FactCheckModel.MappingPath != ""
return c.HallucinationMitigation.FactCheckModel.ModelID != ""
}

// Fall back to legacy HallucinationMitigation config
if !c.HallucinationMitigation.Enabled {
return false
}
return c.HallucinationMitigation.FactCheckModel.ModelID != "" &&
c.HallucinationMitigation.FactCheckModel.MappingPath != ""
return c.HallucinationMitigation.FactCheckModel.ModelID != ""
}

// GetFactCheckRules returns all configured fact_check_rules
Expand Down
Loading