use serde::{Deserialize, Serialize};
use uuid::Uuid;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Corpus {
pub org_id: Uuid,
pub name: String,
pub description: Option<String>,
pub created_at: String, }
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Document {
pub doc_id: Uuid,
pub corpus: String,
pub org_id: Uuid,
pub source_path: String,
pub bytes_indexed: u64,
pub chunks: u32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Chunk {
pub id: Uuid,
pub org_id: Uuid,
pub corpus: String,
pub doc_id: Uuid,
pub chunk_idx: u32,
pub text: String,
pub embedding: Vec<f32>, pub embedding_model: String,
pub metadata: serde_json::Value,
}
#[derive(Debug, Clone, Serialize)]
pub struct RetrievalResult {
pub chunk_id: Uuid,
pub doc_id: Uuid,
pub chunk_idx: u32,
pub text: String,
pub similarity: f32,
}
#[derive(Debug, Clone, PartialEq)]
pub struct RetrievableTag {
pub corpus: String,
pub k: u32,
pub min_similarity: Option<f32>,
pub span: (usize, usize),
}