Skip to content

Instantly share code, notes, and snippets.

@a-agmon
Created July 9, 2024 05:15
Show Gist options
  • Save a-agmon/ab257ac5356a2da07aa437e72f16018f to your computer and use it in GitHub Desktop.
Save a-agmon/ab257ac5356a2da07aa437e72f16018f to your computer and use it in GitHub Desktop.
async fn init_db_writer_task(
reciever: Receiver<EmbeddingEntry>,
db_uri: &str,
table_name: &str,
buffer_size: usize,
) -> anyhow::Result<JoinHandle<()>> {
let db = storage::VecDB::connect(db_uri, table_name).await?;
let task_handle = tokio::spawn(async move {
let mut embeddings_buffer = Vec::new();
while let Ok(embedding) = reciever.recv() {
embeddings_buffer.push(embedding);
if embeddings_buffer.len() >= buffer_size {
let (keys, vectors) = extract_keys_and_vectors(&embeddings_buffer);
db.add_vector(&keys, vectors, 384).await.unwrap();
embeddings_buffer.clear();
}
}
// some code ommitted ...
});
Ok(task_handle)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment