Skip to main content

xz_embed/types/
entry.rs

1use serde::{Deserialize, Serialize};
2use std::collections::HashMap;
3
4/// 向量条目 — 存储的最小单元
5#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct VectorEntry {
7    /// 全局唯一标识(建议使用 UUID v7)
8    pub id: String,
9    /// 浮点向量
10    pub vector: Vec<f32>,
11    /// 键值对元数据(用于过滤和聚合)
12    pub metadata: HashMap<String, String>,
13    /// 原始文本内容(可选,用于调试和混合检索)
14    pub content: Option<String>,
15    /// 创建时间(epoch milliseconds)
16    pub created_at: u64,
17    /// 过期时间(epoch milliseconds,None = 永不过期)
18    pub expires_at: Option<u64>,
19    /// 来源通道标签(如 "seed", "semantic", "manual")
20    pub channel: Option<String>,
21}
22
23/// 搜索结果 — 向量搜索返回的条目
24#[derive(Debug, Clone, Serialize, Deserialize)]
25pub struct SearchResult {
26    /// 对应 VectorEntry.id
27    pub id: String,
28    /// 相似度分数(cosine 相似度,范围 [-1, 1])
29    pub score: f32,
30    /// 元数据
31    pub metadata: HashMap<String, String>,
32    /// 原始文本内容
33    pub content: Option<String>,
34    /// 来源通道
35    pub channel: Option<String>,
36}