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

Method encode

nodedb-vector/src/rerank/codecs/pq.rs:87–104  ·  view source on GitHub ↗

Encode a full-precision vector to PQ bytes (one centroid index per subspace). The serialized form is the raw `UnifiedQuantizedVector` buffer (`as_bytes()`): 32-byte `QuantHeader` followed by `m` code bytes.

(&self, v: &[f32])

Source from the content-addressed store, hash-verified

85 /// The serialized form is the raw `UnifiedQuantizedVector` buffer
86 /// (`as_bytes()`): 32-byte `QuantHeader` followed by `m` code bytes.
87 fn encode(&self, v: &[f32]) -> Result<Vec<u8>, RerankError> {
88 if v.len() != self.dim {
89 return Err(RerankError::BadInput(format!(
90 "pq encode: vector len {} != codec dim {}",
91 v.len(),
92 self.dim
93 )));
94 }
95 let codec = self.codec.as_ref().ok_or_else(|| {
96 RerankError::NotTrained(
97 "pq: codec must be trained before encoding (call train() with a sample of vectors)"
98 .to_string(),
99 )
100 })?;
101 use nodedb_codec::vector_quant::codec::VectorCodec;
102 let quantized = <PqCodec as VectorCodec>::encode(codec, v);
103 Ok(quantized.as_ref().as_bytes().to_vec())
104 }
105
106 /// Prepare the query by precomputing the M×K asymmetric distance table.
107 ///

Calls 6

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