Skip to content

sklyt/sqlite_vector

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Vector calculation native sqlite3 extension

  1. cosine_similarity
  2. l2_distance
  3. dot_product

Build (windows only) - update for your platform

gcc -shared -o nonsimd_vector.dll main.c
gcc -shared -o simd_vector.dll main_simd.c -mavx -mfma -O3 -march=native -ffast-math -fopenmp

Example(node.js)

import Database from 'better-sqlite3';

const db = new Database('embedblob.db');

 db.loadExtension("[path to your dll for windows/so for linux/[darwin file type os file type]/simd_vector.dll")


 // 
 const embedding = yourEmbeddingFunction(useQuery)
 const sim = 0.7

  const f = new Float32Array(embedding)  // must be 1d 32 binary buffer/array
    const res2 = db.prepare(`
        SELECT *,
               cosine_similarity(embeddings, ?) AS similarity
        FROM embeddings
        WHERE sessid = ? AND similarity > ?
    `).all(embedding, sess, sim);

    // sess is just session id for chats 

avalable functions

//cosine_similarity, l2_distance, dot_product
  const f = new Float32Array(embedding) // must be 1d 32 binary buffer/array
const rows2 = db.prepare(`
    SELECT *, l2_distance(embeddings, ?) AS distance,
    dot_product(embeddings, ?) AS dot_product
     FROM embeddings WHERE sessid = ?
  `).all(f,f, "sess1");



  console.log(rows2[0])

About

Vector calculation native sqlite3 extension

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors