1use serde::{Deserialize, Serialize};
4use uuid::Uuid;
5
6#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct Corpus {
8 pub org_id: Uuid,
9 pub name: String,
10 pub description: Option<String>,
11 pub created_at: String, }
13
14#[derive(Debug, Clone, Serialize, Deserialize)]
15pub struct Document {
16 pub doc_id: Uuid,
17 pub corpus: String,
18 pub org_id: Uuid,
19 pub source_path: String,
20 pub bytes_indexed: u64,
21 pub chunks: u32,
22}
23
24#[derive(Debug, Clone, Serialize, Deserialize)]
25pub struct Chunk {
26 pub id: Uuid,
27 pub org_id: Uuid,
28 pub corpus: String,
29 pub doc_id: Uuid,
30 pub chunk_idx: u32,
31 pub text: String,
32 pub embedding: Vec<f32>, pub embedding_model: String,
34 pub metadata: serde_json::Value,
35}
36
37#[derive(Debug, Clone, Serialize)]
38pub struct RetrievalResult {
39 pub chunk_id: Uuid,
40 pub doc_id: Uuid,
41 pub chunk_idx: u32,
42 pub text: String,
43 pub similarity: f32,
44}
45
46#[derive(Debug, Clone, PartialEq)]
47pub struct RetrievableTag {
48 pub corpus: String,
49 pub k: u32,
50 pub min_similarity: Option<f32>,
53 pub span: (usize, usize),
55}