MCPcopy Create free account
hub / github.com/cosdata/cosdata / create_root_node

Function create_root_node

src/vector_store.rs:44–150  ·  view source on GitHub ↗
(
    quantization_metric: &QuantizationMetric,
    storage_type: StorageType,
    dim: usize,
    prop_file: &RwLock<File>,
    version: VersionNumber,
    offset_counter: &HNSWIndexFileOffsetCounter

Source from the content-addressed store, hash-verified

42
43#[allow(clippy::too_many_arguments)]
44pub fn create_root_node(
45 quantization_metric: &QuantizationMetric,
46 storage_type: StorageType,
47 dim: usize,
48 prop_file: &RwLock<File>,
49 version: VersionNumber,
50 offset_counter: &HNSWIndexFileOffsetCounter,
51 cache: &HNSWIndexCache,
52 values_range: (f32, f32),
53 hnsw_params: &HNSWHyperParams,
54 distance_metric: DistanceMetric,
55 metadata_schema: Option<&MetadataSchema>,
56) -> Result<SharedLatestNode, WaCustomError> {
57 let vec = (0..dim)
58 .map(|_| {
59 let mut rng = rand::thread_rng();
60
61 let random_number: f32 = rng.gen_range(values_range.0..values_range.1);
62 random_number
63 })
64 .collect::<Vec<f32>>();
65 let vec_hash = InternalId::from(u32::MAX);
66
67 let vector_list = Arc::new(quantization_metric.quantize(&vec, storage_type, values_range)?);
68
69 let mut prop_file_guard = prop_file.write().unwrap();
70 let location = write_prop_value_to_file(&vec_hash, &vector_list, &mut prop_file_guard)?;
71
72 let prop_value = Arc::new(NodePropValue {
73 id: vec_hash,
74 vec: vector_list,
75 location,
76 });
77
78 let prop_metadata = match metadata_schema {
79 Some(schema) => {
80 let mbits = schema.base_dimensions();
81 let metadata = Arc::new(Metadata { mag: 0.0, mbits });
82 // A root node is similar to a base replica node. Hence
83 // the replica_id and prop_value's id are same.
84 let replica_id = vec_hash;
85 let location =
86 write_prop_metadata_to_file(replica_id, metadata.clone(), &mut prop_file_guard)?;
87 Some(Arc::new(NodePropMetadata {
88 replica_id: vec_hash,
89 vec: metadata,
90 location,
91 }))
92 }
93 None => None,
94 };
95
96 drop(prop_file_guard);
97
98 let file_id = offset_counter.file_id();
99
100 let mut root = LazyItem::new(
101 ProbNode::new(

Callers 1

Calls 14

write_prop_value_to_fileFunction · 0.85
HNSWLevelClass · 0.85
base_dimensionsMethod · 0.80
cloneMethod · 0.80
file_idMethod · 0.80
next_level_0_offsetMethod · 0.80
next_offsetMethod · 0.80
get_lazy_dataMethod · 0.80
set_parentMethod · 0.80

Tested by

no test coverage detected