vtcode_core/code/code_completion/engine/
ranking.rs1use super::suggestions::CompletionSuggestion;
2
3pub struct SuggestionRanker {
5 confidence_threshold: f64,
6 max_suggestions: usize,
7}
8
9impl SuggestionRanker {
10 pub fn new() -> Self {
11 Self { confidence_threshold: 0.3, max_suggestions: 10 }
12 }
13
14 pub fn rank_suggestions(&self, mut suggestions: Vec<CompletionSuggestion>) -> Vec<CompletionSuggestion> {
16 suggestions.retain(|s| s.confidence >= self.confidence_threshold);
18
19 suggestions.sort_by(|a, b| {
21 let score_a = a.confidence * 0.7 + a.acceptance_rate * 0.3;
22 let score_b = b.confidence * 0.7 + b.acceptance_rate * 0.3;
23 score_b.partial_cmp(&score_a).unwrap_or(std::cmp::Ordering::Equal)
24 });
25
26 suggestions.truncate(self.max_suggestions);
28 suggestions
29 }
30}
31
32impl Default for SuggestionRanker {
33 fn default() -> Self {
34 Self::new()
35 }
36}