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.5- DECAY_THRESHOLD =
0.1- CORROBORATION_SIMILARITY_THRESHOLD =
0.9- WRITE_CONFIDENCE_GATE =
0.6- WRITE_NOVELTY_GATE =
0.3- STALE_DAYS =
90- 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_threshold ⇒ Object
- .decayed?(confidence:) ⇒ Boolean
- .initial_confidence ⇒ 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
23 24 25 26 27 28 29 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 23 def apollo_setting(*keys, default:) return default unless defined?(Legion::Settings) && !Legion::Settings[:apollo].nil? Legion::Settings[:apollo].dig(*keys) || default rescue StandardError default end |
.apply_corroboration_boost(confidence:, weight: 1.0) ⇒ Object
57 58 59 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 57 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
44 45 46 47 48 49 50 51 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 44 def apply_decay(confidence:, age_hours: nil, alpha: power_law_alpha, **) if age_hours [confidence * ((age_hours.clamp(0, Float::INFINITY) + 2.0)**(-alpha)) / ((age_hours.clamp(0, Float::INFINITY) + 1.0)**(-alpha)), 0.0].max else factor = 1.0 / (1.0 + alpha) [confidence * factor, 0.0].max end end |
.apply_retrieval_boost(confidence:) ⇒ Object
53 54 55 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 53 def apply_retrieval_boost(confidence:, **) [confidence + retrieval_boost, 1.0].min end |
.corroboration_boost ⇒ Object
32 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 32 def corroboration_boost = apollo_setting(:confidence, :corroboration_boost, default: CORROBORATION_BOOST) |
.corroboration_similarity_threshold ⇒ Object
40 41 42 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 40 def corroboration_similarity_threshold apollo_setting(:confidence, :corroboration_similarity, default: CORROBORATION_SIMILARITY_THRESHOLD) end |
.decay_threshold ⇒ Object
35 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 35 def decay_threshold = apollo_setting(:decay_threshold, default: DECAY_THRESHOLD) |
.decayed?(confidence:) ⇒ Boolean
61 62 63 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 61 def decayed?(confidence:, **) confidence < decay_threshold end |
.initial_confidence ⇒ Object
31 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 31 def initial_confidence = apollo_setting(:confidence, :initial, default: INITIAL_CONFIDENCE) |
.meets_write_gate?(confidence:, novelty:) ⇒ Boolean
65 66 67 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 65 def meets_write_gate?(confidence:, novelty:, **) confidence > write_confidence_gate && novelty > write_novelty_gate end |
.power_law_alpha ⇒ Object
34 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 34 def power_law_alpha = apollo_setting(:power_law_alpha, default: POWER_LAW_ALPHA) |
.retrieval_boost ⇒ Object
33 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 33 def retrieval_boost = apollo_setting(:confidence, :retrieval_boost, default: RETRIEVAL_BOOST) |
.stale_days ⇒ Object
38 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 38 def stale_days = apollo_setting(:stale_days, default: STALE_DAYS) |
.write_confidence_gate ⇒ Object
36 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 36 def write_confidence_gate = apollo_setting(:confidence, :write_gate, default: WRITE_CONFIDENCE_GATE) |
.write_novelty_gate ⇒ Object
37 |
# File 'lib/legion/extensions/apollo/helpers/confidence.rb', line 37 def write_novelty_gate = apollo_setting(:confidence, :novelty_gate, default: WRITE_NOVELTY_GATE) |