Skip to content

Latest commit

 

History

History
155 lines (119 loc) · 2.62 KB

advanced-features.md

File metadata and controls

155 lines (119 loc) · 2.62 KB

Advanced Features

Vector Relationships

Extract relationships between vectors based on distance:

const relationships = await db.extractRelationships(0.3, {
  metric: 'cosine',
  includeMetadata: true
});

Community Detection

Find clusters of related vectors:

const communities = await db.extractCommunities(0.5, {
  metric: 'euclidean',
  includeMetadata: true
});

Custom Search Methods

Hybrid Search

const results = await db.search(queryVector, {
  k: 10,
  method: 'hybrid',
  weights: {
    text: 0.7,
    semantic: 0.3
  }
});

Batch Search

const queries = [
  { vector: [...], k: 5 },
  { vector: [...], k: 10 }
];

const results = await db.batchSearch(queries, {
  maxBatchSize: 100,
  maxWorkers: 4
});

Advanced Filtering

const filter = [
  { field: 'category', operator: '$in', value: ['article', 'blog'] },
  { field: 'rating', operator: '$gte', value: 4.5 },
  { field: 'tags', operator: '$regex', value: '^tech.*' }
];

const results = await db.search(queryVector, {
  k: 10,
  filters: filter
});

Index Management

Manual Index Building

await db.buildIndexes({
  method: 'hnsw',
  efConstruction: 200,
  M: 16
});

Index Statistics

const stats = await db.getStats();
console.log(stats.indices);

Monitoring & Performance

Enable Monitoring

const db = new Database({
  monitoring: {
    enable: true,
    interval: 60000,
    logToConsole: true
  }
});

Performance Metrics

db.on('metrics', (snapshot) => {
  console.log('Search QPS:', snapshot.metrics.search.queriesPerMinute);
  console.log('Cache Hit Rate:', snapshot.metrics.cache.hitRate);
});

Data Persistence

Auto-save Configuration

const db = new Database({
  persistence: {
    saveIntervalMs: 300000, // Save every 5 minutes
    dbPath: './database',
    useCompression: true
  }
});

Manual Save/Load

// Save current state
await db.save();

// Load from saved state
await db.load('./database/backup.db');

Event Handling

// Monitor vector additions
db.on('vector:add', (data) => {
  console.log(`Added vector ${data.id} with ${data.dimensions} dimensions`);
});

// Monitor search operations
db.on('search:complete', (data) => {
  console.log(`Search completed in ${data.duration}ms`);
});

Best Practices

  1. Use bulk operations for better performance
  2. Enable monitoring in production
  3. Configure auto-save for data safety
  4. Use appropriate partition sizes
  5. Optimize index parameters for your use case