mirror of
https://github.com/perstarkse/minne.git
synced 2026-04-29 20:27:09 +02:00
62 lines
1.7 KiB
Rust
62 lines
1.7 KiB
Rust
use serde::{Deserialize, Serialize};
|
|
|
|
/// Tunable parameters that govern each retrieval stage.
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct RetrievalTuning {
|
|
pub entity_vector_take: usize,
|
|
pub chunk_vector_take: usize,
|
|
pub entity_fts_take: usize,
|
|
pub chunk_fts_take: usize,
|
|
pub score_threshold: f32,
|
|
pub fallback_min_results: usize,
|
|
pub token_budget_estimate: usize,
|
|
pub avg_chars_per_token: usize,
|
|
pub max_chunks_per_entity: usize,
|
|
pub graph_traversal_seed_limit: usize,
|
|
pub graph_neighbor_limit: usize,
|
|
pub graph_score_decay: f32,
|
|
pub graph_seed_min_score: f32,
|
|
pub graph_vector_inheritance: f32,
|
|
}
|
|
|
|
impl Default for RetrievalTuning {
|
|
fn default() -> Self {
|
|
Self {
|
|
entity_vector_take: 15,
|
|
chunk_vector_take: 20,
|
|
entity_fts_take: 10,
|
|
chunk_fts_take: 20,
|
|
score_threshold: 0.35,
|
|
fallback_min_results: 10,
|
|
token_budget_estimate: 2800,
|
|
avg_chars_per_token: 4,
|
|
max_chunks_per_entity: 4,
|
|
graph_traversal_seed_limit: 5,
|
|
graph_neighbor_limit: 6,
|
|
graph_score_decay: 0.75,
|
|
graph_seed_min_score: 0.4,
|
|
graph_vector_inheritance: 0.6,
|
|
}
|
|
}
|
|
}
|
|
|
|
/// Wrapper containing tuning plus future flags for per-request overrides.
|
|
#[derive(Debug, Clone)]
|
|
pub struct RetrievalConfig {
|
|
pub tuning: RetrievalTuning,
|
|
}
|
|
|
|
impl RetrievalConfig {
|
|
pub fn new(tuning: RetrievalTuning) -> Self {
|
|
Self { tuning }
|
|
}
|
|
}
|
|
|
|
impl Default for RetrievalConfig {
|
|
fn default() -> Self {
|
|
Self {
|
|
tuning: RetrievalTuning::default(),
|
|
}
|
|
}
|
|
}
|