zeppelin_embed/fusion/
rules.rs1use super::{DEFAULT_ALPHA, FusionError};
2
3pub const ALPHA_POLICY_VERSION: u16 = 2;
6
7pub const LEXICAL_RULE_ALPHA: f64 = 0.4;
15
16pub const RARE_DOCUMENT_FREQUENCY_THRESHOLD: u64 = 5;
22
23#[derive(Clone, Copy, Debug, Eq, Ord, PartialEq, PartialOrd)]
25pub enum FusionRule {
26 QuotedPhrase,
28 RareExactToken,
30 IdentifierToken,
32}
33
34#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
36pub struct RuleSignals {
37 pub quoted_phrase: bool,
39 pub rarest_exact_document_frequency: Option<u64>,
41 pub identifier_token: bool,
43}
44
45impl RuleSignals {
46 #[must_use]
48 pub const fn none() -> Self {
49 Self {
50 quoted_phrase: false,
51 rarest_exact_document_frequency: None,
52 identifier_token: false,
53 }
54 }
55}
56
57pub(crate) fn effective_alpha(
58 query: &super::HybridQuery,
59) -> Result<(f64, Vec<FusionRule>), FusionError> {
60 if let Some(alpha) = query.alpha {
61 validate(alpha)?;
62 return Ok((alpha, Vec::new()));
63 }
64 validate(DEFAULT_ALPHA)?;
65 if !query.rules_enabled {
66 return Ok((DEFAULT_ALPHA, Vec::new()));
67 }
68 let mut applied = Vec::new();
69 if query.rule_signals.quoted_phrase {
70 applied.push(FusionRule::QuotedPhrase);
71 }
72 if query
73 .rule_signals
74 .rarest_exact_document_frequency
75 .is_some_and(|frequency| frequency <= RARE_DOCUMENT_FREQUENCY_THRESHOLD)
76 {
77 applied.push(FusionRule::RareExactToken);
78 }
79 if query.rule_signals.identifier_token {
80 applied.push(FusionRule::IdentifierToken);
81 }
82 if applied.is_empty() {
83 Ok((DEFAULT_ALPHA, applied))
84 } else {
85 Ok((LEXICAL_RULE_ALPHA, applied))
86 }
87}
88
89fn validate(alpha: f64) -> Result<(), FusionError> {
90 if alpha.is_finite() && (0.0..=1.0).contains(&alpha) {
91 Ok(())
92 } else {
93 Err(FusionError::InvalidAlpha(alpha))
94 }
95}