db.execute( + """ + insert into temp.vec_static_blobs(name, data) + select ?, vec_static_blob_from_raw(?, ?, ?, ?) + """, + [name, ptr, element_type, dimensions, nvectors], + ) + + db.execute( + f'create virtual table "{name_escaped}" using vec_static_blob_entries({name_escaped})' + ) + +except ImportError: + + def register_numpy(db: Connection, name: str, array): + raise Exception("numpy package is required for register_numpy") diff --git a/databases/py-sqlite-vec/files/pyproject.toml b/databases/py-sqlite-vec/files/pyproject.toml new file mode 100644 index 000000000000..60a4f12110e5 --- /dev/null +++ b/databases/py-sqlite-vec/files/pyproject.toml @@ -0,0 +1,16 @@ +[build-system] +requires = ["setuptools>=61.0"] +build-backend = "setuptools.build_meta" + +[project] +name = "sqlite-vec" +version = "0.1.9" +description = "A vector search SQLite extension" +license = {text = "MIT OR Apache-2.0"} +requires-python = ">=3.8" + +[tool.setuptools.packages.find] +include = ["sqlite_vec*"] + +[tool.setuptools.package-data] +sqlite_vec = ["vec0.so", "vec0.dylib", "vec0.dll"] diff --git a/databases/py-sqlite-vec/files/sqlite-vec.h b/databases/py-sqlite-vec/files/sqlite-vec.h new file mode 100644 index 000000000000..40d5405f0163 --- /dev/null +++ b/databases/py-sqlite-vec/files/sqlite-vec.h @@ -0,0 +1,41 @@ +#ifndef SQLITE_VEC_H +#define SQLITE_VEC_H + +#ifndef SQLITE_CORE +#include "sqlite3ext.h" +#else +#include "sqlite3.h" +#endif + +#ifdef SQLITE_VEC_STATIC + #define SQLITE_VEC_API +#else + #ifdef _WIN32 + #define SQLITE_VEC_API __declspec(dllexport) + #else + #define SQLITE_VEC_API + #endif +#endif + +#define SQLITE_VEC_VERSION "v0.1.9" +// TODO rm +#define SQLITE_VEC_DATE "2025-01-01T00:00:00Z+0000" +#define SQLITE_VEC_SOURCE "v0.1.9" + + +#define SQLITE_VEC_VERSION_MAJOR 0 +#define SQLITE_VEC_VERSION_MINOR 1 +#define SQLITE_VEC_VERSION_PATCH 9 + +#ifdef __cplusplus +extern "C" { +#endif + +SQLITE_VEC_API int sqlite3_vec_init(sqlite3 *db, char **pzErrMsg, + const sqlite3_api_routines *pApi); + +#ifdef __cplusplus +} /* end of the 'extern "C"' block */ +#endif + +#endif /* ifndef SQLITE_VEC_H */ diff --git a/databases/py-sqlite-vec/pkg-descr b/databases/py-sqlite-vec/pkg-descr new file mode 100644 index 000000000000..c8ab31cd1476 --- /dev/null +++ b/databases/py-sqlite-vec/pkg-descr @@ -0,0 +1,5 @@ +sqlite-vec is a vector search SQLite extension with Python bindings. +It provides fast nearest-neighbor vector search using SQLite virtual tables. + +The Python package bundles the compiled vec0.so SQLite loadable extension +and provides helper functions for loading it and serializing vectors.