MCPcopy Create free account
hub / github.com/atomicdotdev/atomic / list_embeddings

Method list_embeddings

atomic-core/src/pristine/txn/write/embeddings.rs:65–102  ·  view source on GitHub ↗
(&self, path: &str)

Source from the content-addressed store, hash-verified

63 }
64
65 fn list_embeddings(&self, path: &str) -> PristineResult<Vec<(u32, EmbeddingRecord)>> {
66 let table = match self.txn.open_table(EMBEDDINGS) {
67 Ok(table) => table,
68 Err(redb::TableError::TableDoesNotExist(_)) => return Ok(Vec::new()),
69 Err(e) => return Err(PristineError::from(e)),
70 };
71
72 let mut results = Vec::new();
73 let prefix = format!("{}\0", path);
74
75 let iter = table.range::<&str>(prefix.as_str()..)?;
76
77 for item in iter {
78 let (key_guard, value_guard) = item?;
79 let key_str = key_guard.value();
80
81 if !key_str.starts_with(&prefix) {
82 break;
83 }
84
85 let (_, chunk_idx) = match decode_embedding_key(key_str) {
86 Some(decoded) => decoded,
87 None => continue,
88 };
89
90 let bytes = value_guard.value();
91 let record: EmbeddingRecord =
92 postcard::from_bytes(bytes).map_err(|e| PristineError::Serialization {
93 message: format!(
94 "failed to deserialize EmbeddingRecord at '{}': {}",
95 key_str, e
96 ),
97 })?;
98 results.push((chunk_idx, record));
99 }
100
101 Ok(results)
102 }
103
104 fn count_embeddings(&self) -> PristineResult<usize> {
105 let table = match self.txn.open_table(EMBEDDINGS) {

Callers 1

Calls 3

decode_embedding_keyFunction · 0.85
as_strMethod · 0.45
pushMethod · 0.45

Tested by 1