edgequake_sdk/types/
query.rs1use serde::{Deserialize, Serialize};
4use std::collections::HashMap;
5
6#[derive(Debug, Clone, Serialize, Deserialize, Default)]
8#[serde(rename_all = "lowercase")]
9pub enum QueryMode {
10 #[default]
11 Hybrid,
12 Local,
13 Global,
14 Naive,
15 Mix,
16}
17
18#[derive(Debug, Clone, Serialize)]
20pub struct QueryRequest {
21 pub query: String,
22 #[serde(skip_serializing_if = "Option::is_none")]
23 pub mode: Option<QueryMode>,
24 #[serde(skip_serializing_if = "Option::is_none")]
25 pub top_k: Option<u32>,
26 #[serde(skip_serializing_if = "Option::is_none")]
27 pub stream: Option<bool>,
28 #[serde(skip_serializing_if = "Option::is_none")]
29 pub only_need_context: Option<bool>,
30}
31
32#[derive(Debug, Clone, Deserialize, Serialize)]
34pub struct SourceReference {
35 #[serde(default)]
36 pub document_id: Option<String>,
37 #[serde(default)]
38 pub chunk_id: Option<String>,
39 #[serde(default)]
40 pub content: Option<String>,
41 #[serde(default)]
42 pub score: Option<f64>,
43 #[serde(default)]
44 pub metadata: Option<HashMap<String, serde_json::Value>>,
45 #[serde(default)]
47 pub file_path: Option<String>,
48}
49
50#[derive(Debug, Clone, Deserialize, Serialize)]
52pub struct QueryResponse {
53 #[serde(default)]
54 pub answer: Option<String>,
55 #[serde(default)]
56 pub sources: Vec<SourceReference>,
57 #[serde(default)]
58 pub mode: Option<String>,
59}
60
61#[derive(Debug, Clone, Deserialize)]
63pub struct QueryStreamChunk {
64 #[serde(default)]
65 pub chunk: Option<String>,
66 #[serde(default)]
67 pub done: Option<bool>,
68 #[serde(default)]
69 pub sources: Option<Vec<SourceReference>>,
70}