{"library":"rvlite","title":"RvLite Vector Database","description":"RvLite is a lightweight, embeddable vector database designed for universal execution across Node.js, browsers, and Edge environments. It leverages WebAssembly for high performance and portability, resulting in a small bundle size of approximately 850KB. The current stable version is 0.2.6. It supports multiple querying paradigms, including vector search with cosine, Euclidean, or dot product distance, standard SQL with extensions for distance operations, Cypher for property graph queries (Neo4j-compatible syntax), and SPARQL for RDF triple store interactions. Persistence options include file-based storage in Node.js and IndexedDB in browsers. The package provides a comprehensive SDK for programmatic interaction and a CLI for command-line operations and an interactive REPL, making it suitable for a wide range of AI-driven applications like RAG and knowledge graphs. Its key differentiators are its multi-query language support and extreme portability across JavaScript runtimes.","language":"javascript","status":"active","last_verified":"Thu Apr 23","install":{"commands":["npm install rvlite"],"cli":{"name":"rvl","version":null}},"imports":["import { createRvLite } from 'rvlite';","import { RvLite } from 'rvlite';","import type { RvLiteInstance } from 'rvlite';"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import { createRvLite } from 'rvlite';\nimport * as fs from 'fs'; // Required for Node.js persistence example\n\nasync function runRvLiteExample() {\n  // Create a new in-memory database instance with a specified vector dimension\n  const db = await createRvLite({ dimensions: 384 });\n  console.log(\"RvLite database initialized with 384 dimensions.\");\n\n  // Insert a vector with associated metadata\n  const docId1 = await db.insert([0.1, 0.2, 0.3, ...Array(381).fill(0)], { text: \"The quick brown fox jumps over the lazy dog.\" });\n  console.log(`Inserted document with ID: ${docId1}`);\n\n  // Insert another vector with a custom ID\n  const docId2 = \"custom-doc-id\";\n  await db.insertWithId(docId2, [0.4, 0.5, 0.6, ...Array(381).fill(0)], { source: \"my-blog\", tags: [\"nature\", \"animal\"] });\n  console.log(`Inserted document with custom ID: ${docId2}`);\n\n  // Perform a semantic search for similar vectors, retrieving top 2 results\n  const queryVector = [0.15, 0.25, 0.35, ...Array(381).fill(0)];\n  const searchResults = await db.search(queryVector, 2);\n  console.log(\"\\nTop 2 search results:\", searchResults);\n\n  // Demonstrate SQL capabilities: Create a table and insert data\n  await db.sql(\"CREATE TABLE documents (id TEXT PRIMARY KEY, content TEXT, embedding VECTOR)\");\n  await db.sql(`INSERT INTO documents (id, content, embedding) VALUES ('sql-doc-1', 'SQL is a powerful language.', '[0.1, 0.1, 0.1, ${Array(381).fill(0).map(() => '0.0').join(', ')}]')`);\n  console.log(\"\\nSQL table 'documents' created and data inserted.\");\n\n  // Query using SQL with vector distance function\n  const sqlResults = await db.sql(`\n    SELECT id, content, distance(embedding, '[0.1, 0.2, 0.3, ${Array(381).fill(0).map(() => '0.0').join(', ')}]') as dist\n    FROM documents\n    ORDER BY dist ASC\n    LIMIT 1\n  `);\n  console.log(\"\\nSQL query results with distance:\", sqlResults);\n\n  // Node.js persistence example: Export to file\n  if (typeof window === 'undefined') { // Check if running in Node.js environment\n    const state = await db.exportJson();\n    fs.writeFileSync('rvlite_db_backup.json', JSON.stringify(state, null, 2));\n    console.log(\"\\nDatabase state exported to rvlite_db_backup.json\");\n  }\n}\n\nrunRvLiteExample().catch(console.error);","lang":"typescript","description":"Demonstrates initializing a RvLite database, inserting vectors with metadata, performing semantic search, and executing SQL queries with vector distance. Includes an example of Node.js file-based persistence.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}