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

Method deserialize

src/models/serializer/raw_vector_embedding.rs:85–166  ·  view source on GitHub ↗
(bufman: &BufferManager, offset: FileOffset)

Source from the content-addressed store, hash-verified

83 }
84
85 fn deserialize(bufman: &BufferManager, offset: FileOffset) -> Result<Self, BufIoError> {
86 let cursor = bufman.open_cursor()?;
87 bufman.seek_with_cursor(cursor, offset.0 as u64)?;
88 let id = VectorId::from(read_string(bufman, cursor)?);
89 let document_id = read_opt_string(bufman, cursor)?.map(DocumentId::from);
90 let dense_values_len = read_len(bufman, cursor)? as usize;
91 let dense_values = if dense_values_len == 0 {
92 None
93 } else {
94 let mut values = Vec::with_capacity(dense_values_len);
95 for _ in 0..dense_values_len {
96 values.push(bufman.read_f32_with_cursor(cursor)?);
97 }
98 Some(values)
99 };
100 let metadata_len = read_len(bufman, cursor)? as usize;
101 let metadata = if metadata_len == 0 {
102 None
103 } else {
104 let mut metadata = HashMap::with_capacity(metadata_len);
105
106 for _ in 0..metadata_len {
107 let field = read_string(bufman, cursor)?;
108 let val = {
109 let variant = bufman.read_u8_with_cursor(cursor)?;
110 match variant {
111 0 => FieldValue::Int(bufman.read_i32_with_cursor(cursor)?),
112 1 => FieldValue::String(read_string(bufman, cursor)?),
113 other => {
114 return Err(BufIoError::Io(io::Error::new(
115 io::ErrorKind::InvalidData,
116 format!("Invalid FieldValue variant `{}`", other),
117 )))
118 }
119 }
120 };
121 metadata.insert(field, val);
122 }
123
124 Some(metadata)
125 };
126
127 let sparse_values_len = read_len(bufman, cursor)? as usize;
128 let sparse_values = if sparse_values_len == 0 {
129 None
130 } else {
131 let mut sparse_values = Vec::with_capacity(sparse_values_len);
132
133 for _ in 0..sparse_values_len {
134 let index = bufman.read_u32_with_cursor(cursor)?;
135 let value = bufman.read_f32_with_cursor(cursor)?;
136 let pair = SparsePair(index, value);
137 sparse_values.push(pair);
138 }
139
140 Some(sparse_values)
141 };
142

Callers

nothing calls this directly

Calls 13

SparsePairClass · 0.85
open_cursorMethod · 0.80
seek_with_cursorMethod · 0.80
read_f32_with_cursorMethod · 0.80
read_u8_with_cursorMethod · 0.80
read_i32_with_cursorMethod · 0.80
read_u32_with_cursorMethod · 0.80
read_with_cursorMethod · 0.80
read_stringFunction · 0.70
read_opt_stringFunction · 0.70
read_lenFunction · 0.70
pushMethod · 0.45

Tested by

no test coverage detected