Skip to content

Instantly share code, notes, and snippets.

@rectalogic
Created March 12, 2025 19:53
Show Gist options
  • Save rectalogic/592400b7bb8f75c9618f66218f9143f3 to your computer and use it in GitHub Desktop.
Save rectalogic/592400b7bb8f75c9618f66218f9143f3 to your computer and use it in GitHub Desktop.
sqlite-vec with rusqlite
use rusqlite::{
Connection, Result,
auto_extension::{RawAutoExtension, register_auto_extension},
};
use sqlite_vec::sqlite3_vec_init;
use zerocopy::IntoBytes;
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_simple_db() -> Result<()> {
unsafe {
let raw_ext: RawAutoExtension = std::mem::transmute(sqlite3_vec_init as usize);
register_auto_extension(raw_ext)?;
}
let db = Connection::open_in_memory()?;
let v: Vec<f32> = vec![0.1, 0.2, 0.3];
let (vec_version, embedding): (String, String) = db.query_row(
"select vec_version(), vec_to_json(?)",
[v.as_bytes()],
|x| Ok((x.get(0)?, x.get(1)?)),
)?;
println!("vec_version={vec_version}, embedding={embedding}");
Ok(())
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment