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

Function train_codebooks

nodedb-codec/src/vector_quant/opq.rs:231–256  ·  view source on GitHub ↗
(
    rotated: &[Vec<f32>],
    m: usize,
    k: usize,
    sub_dim: usize,
    kmeans_iters: usize,
    seed: u64,
)

Source from the content-addressed store, hash-verified

229}
230
231fn train_codebooks(
232 rotated: &[Vec<f32>],
233 m: usize,
234 k: usize,
235 sub_dim: usize,
236 kmeans_iters: usize,
237 seed: u64,
238) -> Vec<Vec<Vec<f32>>> {
239 let mut codebooks = Vec::with_capacity(m);
240 for s in 0..m {
241 let offset = s * sub_dim;
242 let sub_vecs: Vec<Vec<f32>> = rotated
243 .iter()
244 .map(|v| v[offset..offset + sub_dim].to_vec())
245 .collect();
246 let centroids = lloyd(
247 &sub_vecs,
248 sub_dim,
249 k,
250 kmeans_iters,
251 seed ^ (s as u64 * 0x1234567),
252 );
253 codebooks.push(centroids);
254 }
255 codebooks
256}
257
258fn make_uqv(codes: &[u8], dim: u16) -> UnifiedQuantizedVector {
259 let header = QuantHeader {

Callers 1

trainMethod · 0.85

Calls 5

lloydFunction · 0.85
collectMethod · 0.80
iterMethod · 0.45
to_vecMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected