Module: Legion::Extensions::Apollo::Helpers::Confidence
- Defined in:
- lib/legion/extensions/apollo/helpers/confidence.rb
Constant Summary collapse
- INITIAL_CONFIDENCE =
0.5- CORROBORATION_BOOST =
0.3- RETRIEVAL_BOOST =
0.02- POWER_LAW_ALPHA =
0.05- DECAY_THRESHOLD =
0.05- CORROBORATION_SIMILARITY_THRESHOLD =
0.9- WRITE_CONFIDENCE_GATE =
0.6- WRITE_NOVELTY_GATE =
0.3- STALE_DAYS =
90- DECAY_MIN_AGE_HOURS =
168- CONTENT_TYPES =
%i[fact concept procedure association observation].freeze
- STATUSES =
%w[candidate confirmed disputed decayed archived].freeze
- RELATION_TYPES =
%w[is_a has_a part_of causes similar_to contradicts supersedes depends_on].freeze
Class Method Summary collapse
- .apollo_setting(*keys, default:) ⇒ Object
- .apply_corroboration_boost(confidence:, weight: 1.0) ⇒ Object
- .apply_decay(confidence:, age_hours: nil, alpha: power_law_alpha) ⇒ Object
- .apply_retrieval_boost(confidence:) ⇒ Object
- .corroboration_boost ⇒ Object
- .corroboration_similarity_threshold ⇒ Object
- .decay_min_age_hours ⇒ Object
- .decay_threshold ⇒ Object
- .decayed?(confidence:) ⇒ Boolean
- .initial_confidence ⇒ Object
- .log ⇒ Object
- .meets_write_gate?(confidence:, novelty:) ⇒ Boolean
- .power_law_alpha ⇒ Object
- .retrieval_boost ⇒ Object
- .stale_days ⇒ Object
- .write_confidence_gate ⇒ Object
- .write_novelty_gate ⇒ Object
Class Method Details
.apollo_setting(*keys, default:) ⇒ Object
28 29 30 31 32 33 34 35 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 28 def apollo_setting(*keys, default:) return default unless defined?(Legion::Settings) && !Legion::Settings[:apollo].nil? Legion::Settings[:apollo].dig(*keys) || default rescue StandardError => e log.warn("Apollo Confidence.apollo_setting failed: #{e.}") default end |
.apply_corroboration_boost(confidence:, weight: 1.0) ⇒ Object
67 68 69 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 67 def apply_corroboration_boost(confidence:, weight: 1.0, **) [confidence + (corroboration_boost * weight), 1.0].min end |
.apply_decay(confidence:, age_hours: nil, alpha: power_law_alpha) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 51 def apply_decay(confidence:, age_hours: nil, alpha: power_law_alpha, **) return confidence if age_hours && age_hours < decay_min_age_hours if age_hours age_days = age_hours / 24.0 [confidence * ((age_days.clamp(1, Float::INFINITY) + 1.0)**(-alpha)) / (age_days.clamp(1, Float::INFINITY)**(-alpha)), 0.0].max else factor = 1.0 / (1.0 + alpha) [confidence * factor, 0.0].max end end |
.apply_retrieval_boost(confidence:) ⇒ Object
63 64 65 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 63 def apply_retrieval_boost(confidence:, **) [confidence + retrieval_boost, 1.0].min end |
.corroboration_boost ⇒ Object
38 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 38 def corroboration_boost = apollo_setting(:confidence, :corroboration_boost, default: CORROBORATION_BOOST) |
.corroboration_similarity_threshold ⇒ Object
47 48 49 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 47 def corroboration_similarity_threshold apollo_setting(:confidence, :corroboration_similarity, default: CORROBORATION_SIMILARITY_THRESHOLD) end |
.decay_min_age_hours ⇒ Object
45 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 45 def decay_min_age_hours = apollo_setting(:decay_min_age_hours, default: DECAY_MIN_AGE_HOURS) |
.decay_threshold ⇒ Object
41 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 41 def decay_threshold = apollo_setting(:decay_threshold, default: DECAY_THRESHOLD) |
.decayed?(confidence:) ⇒ Boolean
71 72 73 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 71 def decayed?(confidence:, **) confidence < decay_threshold end |
.initial_confidence ⇒ Object
37 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 37 def initial_confidence = apollo_setting(:confidence, :initial, default: INITIAL_CONFIDENCE) |
.log ⇒ Object
24 25 26 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 24 def log Legion::Logging end |
.meets_write_gate?(confidence:, novelty:) ⇒ Boolean
75 76 77 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 75 def meets_write_gate?(confidence:, novelty:, **) confidence > write_confidence_gate && novelty > write_novelty_gate end |
.power_law_alpha ⇒ Object
40 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 40 def power_law_alpha = apollo_setting(:power_law_alpha, default: POWER_LAW_ALPHA) |
.retrieval_boost ⇒ Object
39 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 39 def retrieval_boost = apollo_setting(:confidence, :retrieval_boost, default: RETRIEVAL_BOOST) |
.stale_days ⇒ Object
44 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 44 def stale_days = apollo_setting(:stale_days, default: STALE_DAYS) |
.write_confidence_gate ⇒ Object
42 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 42 def write_confidence_gate = apollo_setting(:confidence, :write_gate, default: WRITE_CONFIDENCE_GATE) |
.write_novelty_gate ⇒ Object
43 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 43 def write_novelty_gate = apollo_setting(:confidence, :novelty_gate, default: WRITE_NOVELTY_GATE) |