Skip to main content

Crate azoth_vector

Crate azoth_vector 

Source
Expand description

Vector similarity search extension for Azoth using sqlite-vector

This crate provides vector similarity search capabilities for Azoth applications using the sqlite-vector extension.

§Features

  • Multiple vector types (Float32, Float16, Int8, 1-bit)
  • Multiple distance metrics (L2, Cosine, Dot Product, Hamming)
  • Fast k-NN search with filtering
  • SIMD-optimized for modern CPUs
  • No preindexing required
  • Migration helpers for easy setup

§Example

use azoth::prelude::*;
use azoth_vector::{VectorExtension, Vector, VectorSearch, VectorConfig, DistanceMetric};

// Initialize Azoth with vector support
let db = AzothDb::open("./data")?;
db.projection().load_vector_extension(None)?;

// Initialize vector column
db.projection().vector_init(
    "embeddings",
    "vector",
    VectorConfig::default(),
)?;

// Insert vectors
let vector = Vector::new(vec![0.1, 0.2, 0.3]);
db.projection().transaction(|txn: &rusqlite::Transaction| {
    txn.execute(
        "INSERT INTO embeddings (id, vector) VALUES (?, ?)",
        rusqlite::params![1, vector.to_blob()],
    ).map_err(|e| azoth::AzothError::Projection(e.to_string()))?;
    Ok(())
})?;

// Search for similar vectors
let query = Vector::new(vec![0.15, 0.25, 0.35]);
let search = VectorSearch::new(db.projection().clone(), "embeddings", "vector");
let results = search.knn(&query, 10).await?;

Re-exports§

pub use extension::VectorExtension;
pub use migration::add_vector_column;
pub use migration::create_vector_table;
pub use search::VectorSearch;
pub use types::DistanceMetric;
pub use types::SearchResult;
pub use types::Vector;
pub use types::VectorConfig;
pub use types::VectorType;

Modules§

extension
Extension loading and initialization
migration
Migration helpers for creating vector tables
search
Vector similarity search API
types
Vector types and configuration