MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / from_bytes

Method from_bytes

nodedb-vector/src/rerank/sidecar.rs:88–127  ·  view source on GitHub ↗

Deserialize a sidecar from bytes produced by [`Self::to_bytes`].

(bytes: &[u8])

Source from the content-addressed store, hash-verified

86
87 /// Deserialize a sidecar from bytes produced by [`Self::to_bytes`].
88 pub fn from_bytes(bytes: &[u8]) -> Result<Self, RerankError> {
89 if bytes.len() < 5 {
90 return Err(RerankError::BadInput(
91 "sidecar from_bytes: too short".into(),
92 ));
93 }
94 if bytes[..4] != SIDECAR_MAGIC {
95 return Err(RerankError::BadInput(
96 "sidecar from_bytes: bad magic".into(),
97 ));
98 }
99 let version = bytes[4];
100 if version != SIDECAR_VERSION {
101 return Err(RerankError::BadInput(format!(
102 "sidecar from_bytes: unknown version {version}"
103 )));
104 }
105
106 #[derive(
107 serde::Serialize, serde::Deserialize, zerompk::ToMessagePack, zerompk::FromMessagePack,
108 )]
109 struct Payload {
110 codec_name: u8,
111 codec_bytes: Vec<u8>,
112 encoded: Vec<(u32, Vec<u8>)>,
113 }
114
115 let payload: Payload = zerompk::from_msgpack(&bytes[5..])
116 .map_err(|e| RerankError::BadInput(format!("sidecar deserialize: {e}")))?;
117
118 let codec_name = codec_name_from_u8(payload.codec_name).ok_or_else(|| {
119 RerankError::BadInput(format!(
120 "sidecar from_bytes: unknown codec_name byte {}",
121 payload.codec_name
122 ))
123 })?;
124 let codec = super::codec::rerank_codec_from_bytes(codec_name, &payload.codec_bytes)?;
125 let encoded = payload.encoded.into_iter().collect();
126 Ok(CodecSidecar { codec, encoded })
127 }
128
129 pub fn prepare_query(&self, query: &[f32]) -> Result<PreparedQuery, RerankError> {
130 self.codec.prepare_query(query)

Callers

nothing calls this directly

Calls 4

codec_name_from_u8Function · 0.85
rerank_codec_from_bytesFunction · 0.85
collectMethod · 0.80
lenMethod · 0.45

Tested by

no test coverage detected