{"library":"sqlite-vec","title":"SQLite-vec: Vector Search Extension for SQLite","type":"library","description":"sqlite-vec is a SQLite extension for vector search, written in pure C with no dependencies. It enables storing, manipulating, and querying vector data directly within SQLite files, making it ideal for edge deployments, serverless functions, and local tooling. It supports various vector types (float32, int8, bit) and distance metrics (L1, L2, cosine, Hamming), offering fast brute-force search and SIMD acceleration. The project is pre-v1, so breaking changes are expected. It supports Python, Node.js, Ruby, Rust, and Go bindings.","language":"python","status":"active","last_verified":"Thu May 21","install":{"commands":["pip install sqlite-vec"],"cli":null},"imports":["from sqlite_vec import load","from sqlite_vec import serialize_float32"],"auth":{"required":false,"env_vars":[]},"links":{"homepage":"https://TODO.com","github":null,"docs":null,"changelog":null,"pypi":"https://pypi.org/project/sqlite-vec/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null},"quickstart":{"code":"import sqlite3\nfrom sqlite_vec import load, serialize_float32\nimport numpy as np # Often used for embeddings\nimport os\n\n# Connect to an in-memory SQLite database\ndb = sqlite3.connect(\":memory:\")\n\n# Enable loading of SQLite extensions (necessary for sqlite-vec)\ndb.enable_load_extension(True)\n\n# Load the sqlite-vec extension\nload(db)\n\n# For security, disable extension loading immediately after loading\ndb.enable_load_extension(False)\n\n# Verify the extension is loaded\nvec_version, = db.execute(\"SELECT vec_version()\").fetchone()\nprint(f\"sqlite-vec version: {vec_version}\")\n\n# Create a virtual table for vectors using vec0 module\ndb.execute(\"CREATE VIRTUAL TABLE documents USING vec0(embedding float[4]);\")\n\n# Example embeddings (using numpy for convenience, ensure float32)\nembedding1 = np.array([0.1, 0.2, 0.3, 0.4], dtype=np.float32)\nembedding2 = np.array([0.5, 0.6, 0.7, 0.8], dtype=np.float32)\nembedding3 = np.array([0.15, 0.25, 0.35, 0.45], dtype=np.float32)\n\n# Insert embeddings into the virtual table\n# sqlite-vec automatically handles numpy arrays if they implement the Buffer protocol\n# For lists, use serialize_float32(list_of_floats)\ndb.execute(\"INSERT INTO documents(rowid, embedding) VALUES (?, ?);\", (1, embedding1))\ndb.execute(\"INSERT INTO documents(rowid, embedding) VALUES (?, ?);\", (2, embedding2))\ndb.execute(\"INSERT INTO documents(rowid, embedding) VALUES (?, ?);\", (3, embedding3))\ndb.commit()\n\n# Query for nearest neighbors (L2 distance by default)\nquery_embedding = np.array([0.1, 0.2, 0.3, 0.35], dtype=np.float32)\n\nprint(\"\\nNearest neighbors to [0.1, 0.2, 0.3, 0.35]:\")\nfor rowid, distance in db.execute(\n    \"SELECT rowid, distance FROM documents WHERE embedding MATCH ? ORDER BY distance LIMIT 2;\",\n    [query_embedding]\n):\n    print(f\"Document ID: {rowid}, Distance: {distance:.4f}\")\n\n# Close the database connection\ndb.close()\n","lang":"python","description":"This quickstart demonstrates how to initialize a SQLite database with the `sqlite-vec` extension, create a `vec0` virtual table for storing 4-dimensional float embeddings, insert example embeddings (using NumPy arrays, or `serialize_float32` for Python lists), and perform a K-Nearest Neighbors (KNN) search.","tag":null,"tag_description":null,"last_tested":"2026-04-25","results":[{"runtime":"python:3.10-alpine","exit_code":1},{"runtime":"python:3.10-slim","exit_code":1},{"runtime":"python:3.11-alpine","exit_code":1},{"runtime":"python:3.11-slim","exit_code":1},{"runtime":"python:3.12-alpine","exit_code":1},{"runtime":"python:3.12-slim","exit_code":1},{"runtime":"python:3.13-alpine","exit_code":1},{"runtime":"python:3.13-slim","exit_code":1},{"runtime":"python:3.9-alpine","exit_code":1},{"runtime":"python:3.9-slim","exit_code":1}]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-21","installed_version":"0.1.9","pypi_latest":"0.1.9","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":50,"avg_install_s":1.5,"avg_import_s":0.02,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"sqlite-vec","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"sqlite-vec","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"sqlite-vec","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0.02,"mem_mb":0.8,"disk_size":"18M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"sqlite-vec","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":0.8,"disk_size":"18M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"sqlite-vec","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"sqlite-vec","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"sqlite-vec","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.6,"import_time_s":0.03,"mem_mb":1.1,"disk_size":"20M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"sqlite-vec","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":1.1,"disk_size":"20M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"sqlite-vec","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"sqlite-vec","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"sqlite-vec","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.4,"import_time_s":0.02,"mem_mb":0.7,"disk_size":"12M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"sqlite-vec","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":0.7,"disk_size":"12M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"sqlite-vec","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"sqlite-vec","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"sqlite-vec","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.4,"import_time_s":0.02,"mem_mb":0.7,"disk_size":"12M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"sqlite-vec","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":0.7,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"sqlite-vec","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"sqlite-vec","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"sqlite-vec","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.7,"import_time_s":0.02,"mem_mb":0.5,"disk_size":"18M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"sqlite-vec","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":0.5,"disk_size":"18M"}]}}