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

Method encode

nodedb-vector/src/rerank/codecs/bbq.rs:132–148  ·  view source on GitHub ↗

Encode a full-precision vector to BBQ 1-bit bytes. The serialised form is the raw `UnifiedQuantizedVector` buffer (`as_bytes()`): 32-byte `QuantHeader` followed by `dim.div_ceil(8)` sign-packed bits plus 14 bytes of corrective factors in the header.

(&self, v: &[f32])

Source from the content-addressed store, hash-verified

130 /// (`as_bytes()`): 32-byte `QuantHeader` followed by `dim.div_ceil(8)`
131 /// sign-packed bits plus 14 bytes of corrective factors in the header.
132 fn encode(&self, v: &[f32]) -> Result<Vec<u8>, RerankError> {
133 if v.len() != self.dim {
134 return Err(RerankError::BadInput(format!(
135 "bbq encode: vector len {} != codec dim {}",
136 v.len(),
137 self.dim
138 )));
139 }
140 let codec = self.codec.as_ref().ok_or_else(|| {
141 RerankError::NotTrained(
142 "bbq: codec must be trained before encoding (call train() with a sample of vectors)"
143 .to_string(),
144 )
145 })?;
146 let quantized = codec.encode(v);
147 Ok(quantized.as_ref().as_bytes().to_vec())
148 }
149
150 /// Prepare the query by centering it and serialising the exact FP32 centered
151 /// vector alongside the query norm.

Calls 5

to_stringMethod · 0.80
lenMethod · 0.45
as_refMethod · 0.45
to_vecMethod · 0.45
as_bytesMethod · 0.45