Skip to main content

relay_knowledge/domain/graph/retrieval/
hit.rs

1use serde::{Deserialize, Serialize};
2
3use super::super::EvidenceSpan;
4use super::{
5    CodeGraphArtifact, ContextEntity, ContextGraphFact, RankingSignal, RerankSignal,
6    RetrieverSource,
7};
8
9/// A context item returned by retrieval.
10#[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}