use std::collections::BTreeMap;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct LexicalCommitId(pub String);
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ChunkRef {
pub id: String,
pub source_path: String,
pub text: String,
pub metadata: serde_json::Value,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct DenseChunkRef {
pub chunk: ChunkRef,
pub embedding: Vec<f32>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Hit {
pub chunk_id: String,
pub score: f32,
pub rank: usize,
pub source: String,
pub metadata: serde_json::Value,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct LexicalQuery {
pub text: String,
pub limit: usize,
pub filters: FilterSet,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct FilterSet {
pub values: BTreeMap<String, serde_json::Value>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum Distance {
Cosine,
Euclidean,
Dot,
}