@wiscale/velesdb-sdk 1.2.0 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -165,24 +165,27 @@ const results = await db.hybridSearch(
165
165
  );
166
166
  ```
167
167
 
168
- ### `db.query(queryString, params)` (v0.8.5+)
168
+ ### `db.query(collection, queryString, params?, options?)` (v0.8.5+)
169
169
 
170
170
  Execute a VelesQL query.
171
171
 
172
172
  ```typescript
173
173
  // Simple query
174
174
  const results = await db.query(
175
+ 'documents',
175
176
  "SELECT * FROM documents WHERE category = 'tech' LIMIT 10"
176
177
  );
177
178
 
178
179
  // With vector parameter
179
180
  const results = await db.query(
181
+ 'documents',
180
182
  "SELECT * FROM documents WHERE VECTOR NEAR $query LIMIT 5",
181
183
  { query: [0.1, 0.2, ...] }
182
184
  );
183
185
 
184
186
  // Hybrid query
185
187
  const results = await db.query(
188
+ 'docs',
186
189
  "SELECT * FROM docs WHERE VECTOR NEAR $v AND content MATCH 'rust' LIMIT 10",
187
190
  { v: queryVector }
188
191
  );
@@ -246,6 +249,147 @@ await db.flush('documents');
246
249
 
247
250
  Close the client and release resources.
248
251
 
252
+ ## Knowledge Graph API (v1.2.0+)
253
+
254
+ VelesDB supports hybrid vector + graph queries.
255
+
256
+ ### `db.addEdge(collection, edge)`
257
+
258
+ ```typescript
259
+ await db.addEdge('social', {
260
+ id: 1, source: 100, target: 200,
261
+ label: 'FOLLOWS',
262
+ properties: { since: '2024-01-01' }
263
+ });
264
+ ```
265
+
266
+ ### `db.getEdges(collection, options?)`
267
+
268
+ ```typescript
269
+ const edges = await db.getEdges('social', { label: 'FOLLOWS' });
270
+ ```
271
+
272
+ ### `db.traverseGraph(collection, request)`
273
+
274
+ ```typescript
275
+ const result = await db.traverseGraph('social', {
276
+ source: 100, strategy: 'bfs', maxDepth: 3
277
+ });
278
+ ```
279
+
280
+ ### `db.getNodeDegree(collection, nodeId)`
281
+
282
+ ```typescript
283
+ const degree = await db.getNodeDegree('social', 100);
284
+ ```
285
+
286
+ ## VelesQL v2.0 Queries (v1.4.0+)
287
+
288
+ Execute advanced SQL-like queries with aggregation, joins, and set operations.
289
+
290
+ ### Aggregation with GROUP BY / HAVING
291
+
292
+ ```typescript
293
+ // Group by with aggregates
294
+ const result = await db.query('products', `
295
+ SELECT category, COUNT(*), AVG(price)
296
+ FROM products
297
+ GROUP BY category
298
+ HAVING COUNT(*) > 5 AND AVG(price) > 50
299
+ `);
300
+
301
+ // Access results
302
+ for (const row of result.results) {
303
+ console.log(row.payload.category, row.payload.count);
304
+ }
305
+ ```
306
+
307
+ ### ORDER BY with similarity()
308
+
309
+ ```typescript
310
+ // Order by semantic similarity
311
+ const result = await db.query('docs', `
312
+ SELECT * FROM docs
313
+ ORDER BY similarity(vector, $v) DESC
314
+ LIMIT 10
315
+ `, { v: queryVector });
316
+ ```
317
+
318
+ ### JOIN across collections
319
+
320
+ ```typescript
321
+ // Cross-collection join
322
+ const result = await db.query('orders', `
323
+ SELECT * FROM orders
324
+ JOIN customers AS c ON orders.customer_id = c.id
325
+ WHERE status = $status
326
+ `, { status: 'active' });
327
+ ```
328
+
329
+ ### Set Operations (UNION / INTERSECT / EXCEPT)
330
+
331
+ ```typescript
332
+ // Combine query results
333
+ const result = await db.query('users', `
334
+ SELECT * FROM active_users
335
+ UNION
336
+ SELECT * FROM archived_users
337
+ `);
338
+
339
+ // Find common elements
340
+ const result = await db.query('users', `
341
+ SELECT id FROM premium_users
342
+ INTERSECT
343
+ SELECT id FROM active_users
344
+ `);
345
+ ```
346
+
347
+ ### Hybrid Search with USING FUSION
348
+
349
+ ```typescript
350
+ // RRF fusion (default)
351
+ const result = await db.query('docs', `
352
+ SELECT * FROM docs
353
+ USING FUSION(strategy = 'rrf', k = 60)
354
+ LIMIT 20
355
+ `);
356
+
357
+ // Weighted fusion
358
+ const result = await db.query('docs', `
359
+ SELECT * FROM docs
360
+ USING FUSION(strategy = 'weighted', vector_weight = 0.7, graph_weight = 0.3)
361
+ LIMIT 20
362
+ `);
363
+ ```
364
+
365
+ ## VelesQL Query Builder (v1.2.0+)
366
+
367
+ Build type-safe VelesQL queries with the fluent builder API.
368
+
369
+ ```typescript
370
+ import { velesql } from '@wiscale/velesdb-sdk';
371
+
372
+ // Graph pattern query
373
+ const builder = velesql()
374
+ .match('d', 'Document')
375
+ .nearVector('$queryVector', queryVector)
376
+ .andWhere('d.category = $cat', { cat: 'tech' })
377
+ .limit(10);
378
+
379
+ const queryString = builder.toVelesQL();
380
+ const params = builder.getParams();
381
+ const results = await db.query('documents', queryString, params);
382
+
383
+ // Graph traversal with relationships
384
+ const graphQuery = velesql()
385
+ .match('p', 'Person')
386
+ .rel('KNOWS')
387
+ .to('f', 'Person')
388
+ .where('p.age > 25')
389
+ .return(['p.name', 'f.name'])
390
+ .toVelesQL();
391
+ ```
392
+
249
393
  ## Error Handling
250
394
 
251
395
  ```typescript