relay_knowledge/domain/graph/retrieval/
hit.rs1use serde::{Deserialize, Serialize};
2
3use super::super::EvidenceSpan;
4use super::{
5 CodeGraphArtifact, ContextEntity, ContextGraphFact, RankingSignal, RerankSignal,
6 RetrieverSource,
7};
8
9#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
11pub struct RetrievalHit {
12 pub evidence_id: String,
13 pub source_scope: String,
14 #[serde(skip_serializing_if = "Option::is_none")]
15 pub source_path: Option<String>,
16 #[serde(skip_serializing_if = "Option::is_none")]
17 pub source_span: Option<EvidenceSpan>,
18 pub content: String,
19 pub entity_labels: Vec<String>,
20 #[serde(default, skip_serializing_if = "Vec::is_empty")]
21 pub entities: Vec<ContextEntity>,
22 #[serde(default, skip_serializing_if = "Vec::is_empty")]
23 pub graph_facts: Vec<ContextGraphFact>,
24 #[serde(skip_serializing_if = "Option::is_none")]
25 pub code_artifact: Option<CodeGraphArtifact>,
26 pub retriever_sources: Vec<RetrieverSource>,
27 pub ranking: Vec<RankingSignal>,
28 #[serde(skip_serializing_if = "Option::is_none")]
29 pub rerank: Option<RerankSignal>,
30 pub score: f64,
31}