AgentSkillsCN

@ruvector/rvlite

独立向量数据库,支持 SQL、SPARQL 以及 Cypher 查询,由 RuVector WASM 提供动力。适用于用户需要轻量级嵌入式向量数据库、多语言查询支持(SQL/SPARQL/Cypher)、无需外部依赖即可独立进行向量搜索,或为各类应用打造便携式向量存储。

SKILL.md
--- frontmatter
name: "@ruvector/rvlite"
description: "Standalone vector database with SQL, SPARQL, and Cypher query support powered by RuVector WASM. Use when the user needs a lightweight embedded vector database, multi-language query support (SQL/SPARQL/Cypher), standalone vector search without external dependencies, or a portable vector store for applications."

@ruvector/rvlite

Standalone embedded vector database with multi-query-language support (SQL, SPARQL, Cypher), powered by RuVector WASM for zero-dependency portable vector search in any JavaScript runtime.

Quick Command Reference

TaskCode
Create databaseconst db = new RVLite()
Insert vectorawait db.insert(id, vector, metadata)
Searchawait db.search(queryVector, topK)
SQL queryawait db.query("SELECT * FROM vectors")
Cypher queryawait db.query("MATCH (n) RETURN n")
SPARQL queryawait db.query("SELECT ?s WHERE { ... }")
Build indexawait db.buildIndex()
Save to fileawait db.save('./db.rvlite')

Installation

Hub install (recommended): npx ruvector@latest includes this package. Standalone: npx @ruvector/rvlite@latest See Installation Guide for the full ecosystem.

Core API

RVLite Constructor

typescript
import { RVLite } from '@ruvector/rvlite';

const db = new RVLite({
  dimensions: 384,
  metric: 'cosine',
  persistPath: './my-db.rvlite',
  enableSQL: true,
  enableSPARQL: true,
  enableCypher: true,
});

Constructor Options:

ParameterTypeDescriptionDefault
dimensionsnumberVector dimensionality384
metricstringDistance metric'cosine'
persistPathstringFile persistence pathIn-memory
enableSQLbooleanEnable SQL queriestrue
enableSPARQLbooleanEnable SPARQL queriestrue
enableCypherbooleanEnable Cypher queriestrue

Vector Operations

typescript
// Insert
await db.insert('doc-1', [0.1, 0.2, 0.3], { title: 'Hello', category: 'greeting' });

// Batch insert
await db.batchInsert(items);

// Search
const results = await db.search(queryVector, 10);

// Search with filter
const results = await db.search(queryVector, 10, { filter: { category: 'greeting' } });

Multi-Language Queries

typescript
// SQL
const result = await db.query("SELECT id, metadata FROM vectors WHERE metadata->>'category' = 'greeting'");

// Cypher
const result = await db.query("MATCH (n:Vector) WHERE n.category = 'greeting' RETURN n");

// SPARQL
const result = await db.query("SELECT ?id WHERE { ?id :category 'greeting' }");

// Auto-detection of query language
const result = await db.query(queryString); // Auto-detects SQL/Cypher/SPARQL

Persistence

typescript
await db.save('./my-db.rvlite');                         // Save to file
const db = await RVLite.load('./my-db.rvlite');          // Load from file
const bytes = db.serialize();                             // Serialize to bytes
const db = RVLite.deserialize(bytes);                     // From bytes

Common Patterns

Embedded Search Engine

typescript
const db = new RVLite({ dimensions: 384, persistPath: './search.rvlite' });
for (const doc of documents) {
  await db.insert(doc.id, doc.embedding, { title: doc.title, text: doc.text });
}
await db.buildIndex();
const results = await db.search(queryEmbedding, 5);

SQL-Based Analytics on Vectors

typescript
const result = await db.query(`
  SELECT metadata->>'category' AS cat, COUNT(*) AS cnt
  FROM vectors
  GROUP BY metadata->>'category'
  ORDER BY cnt DESC
`);

Knowledge Graph with Cypher

typescript
await db.query("CREATE (a:Person {name: 'Alice'})");
await db.query("CREATE (b:Person {name: 'Bob'})");
await db.query("CREATE (a)-[:KNOWS]->(b)");
const friends = await db.query("MATCH (a:Person)-[:KNOWS]->(b) RETURN b.name");

Key Options

FeatureValue
Query languagesSQL, SPARQL, Cypher
DependenciesNone (WASM)
PersistenceFile or binary
RuntimesNode.js, Browser, Deno, Bun
Embedding supportAny (bring your own)

RAN DDD Context

Bounded Context: Data Infrastructure

References