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

Function index_embedding

src/vector_store.rs:782–940  ·  view source on GitHub ↗
(
    config: &Config,
    hnsw_index: &HNSWIndex,
    parent_lazy_item_latest_ptr: SharedLatestNode,
    prop_value: Arc<NodePropValue>,
    prop_metadata: Option<Arc<NodePropMetadata>>,
    current_

Source from the content-addressed store, hash-verified

780
781#[allow(clippy::too_many_arguments)]
782pub fn index_embedding(
783 config: &Config,
784 hnsw_index: &HNSWIndex,
785 parent_lazy_item_latest_ptr: SharedLatestNode,
786 prop_value: Arc<NodePropValue>,
787 prop_metadata: Option<Arc<NodePropMetadata>>,
788 current_lazy_item_latest_ptr: SharedLatestNode,
789 cur_level: HNSWLevel,
790 version: VersionNumber,
791 file_id: IndexFileId,
792 hnsw_params: &HNSWHyperParams,
793 max_level: u8,
794 offset_counter: &HNSWIndexFileOffsetCounter,
795 distance_metric: DistanceMetric,
796) -> Result<(), WaCustomError> {
797 let fvec = &prop_value.vec;
798 let mut skipm = PerformantFixedSet::new(if cur_level.0 == 0 {
799 hnsw_params.level_0_neighbors_count
800 } else {
801 hnsw_params.neighbors_count
802 });
803 let new_node_id = match &prop_metadata {
804 Some(metadata) => *metadata.replica_id,
805 None => *prop_value.id,
806 };
807 skipm.insert(new_node_id);
808
809 let current_lazy_item = unsafe { &*current_lazy_item_latest_ptr }.latest;
810 let current_node = unsafe { &*current_lazy_item }.try_get_data(&hnsw_index.cache)?;
811
812 let cur_node_id = &current_node.get_id();
813
814 let mdims = prop_metadata.clone().map(|pm| pm.vec.clone());
815
816 let z = traverse_find_nearest(
817 config,
818 hnsw_index,
819 current_lazy_item_latest_ptr,
820 fvec,
821 Some(&prop_value.id),
822 mdims.as_deref(),
823 &mut 0,
824 &mut skipm,
825 &distance_metric,
826 true,
827 hnsw_params.ef_construction,
828 )?;
829
830 let z = if z.is_empty() {
831 let fvec_data = VectorData {
832 id: None,
833 quantized_vec: fvec,
834 metadata: mdims.as_deref(),
835 };
836 let cur_node_metadata = current_node.prop_metadata.clone().map(|pm| pm.vec.clone());
837 let cur_node_data = VectorData {
838 id: Some(cur_node_id),
839 quantized_vec: &current_node.prop_value.vec,

Callers 1

index_embeddingsFunction · 0.85

Calls 13

traverse_find_nearestFunction · 0.85
HNSWLevelClass · 0.85
create_nodeFunction · 0.85
create_node_edgesFunction · 0.85
try_get_dataMethod · 0.80
get_idMethod · 0.80
cloneMethod · 0.80
get_childMethod · 0.80
set_childMethod · 0.80
insertMethod · 0.45
is_emptyMethod · 0.45
calculateMethod · 0.45

Tested by

no test coverage detected