🧠 Zero-Configuration AI Database with Triple Intelligence™ https://soulcraft.com
Find a file
David Snelling a0ce5b0ca9 feat: enhance search functionality with includeVerbs and metadata embedding
Updated search methods to support `includeVerbs` for retrieving associated verbs in results. Enhanced edge creation to allow metadata embedding when no vector is provided. Improved query handling and vectorization logic for consistent processing.
2025-06-05 08:26:40 -07:00
.idea chore: update material theme configuration to include overrideColor option 2025-06-04 10:04:31 -07:00
docs chore: remove examples/externalPlugins.js and pluginLoader.ts, update imports to .js 2025-05-29 09:52:30 -07:00
examples feat: add examples for read-only mode, sequential pipeline, and configuration tests 2025-06-04 10:01:03 -07:00
src feat: enhance search functionality with includeVerbs and metadata embedding 2025-06-05 08:26:40 -07:00
.gitignore Initial commit of Brainy vector database v0.1.0 2025-05-23 10:55:20 -07:00
CONTRIBUTING.md chore: remove example files and release configuration 2025-05-27 13:58:49 -07:00
LICENSE Initial commit of Brainy vector database v0.1.0 2025-05-23 10:55:20 -07:00
package-lock.json 0.6.0 2025-06-04 10:04:34 -07:00
package.json 0.6.0 2025-06-04 10:04:34 -07:00
README.md docs: update README.md with detailed usage examples and refined feature descriptions 2025-06-05 08:26:12 -07:00
tsconfig.json chore: remove examples/externalPlugins.js and pluginLoader.ts, update imports to .js 2025-05-29 09:52:30 -07:00

Soulcraft Brainy

A combined Graph and Vector database that runs in browsers and Node.js environments. Brainy provides efficient vector search capabilities with persistent storage options.

What is Brainy?

Brainy is a lightweight database that combines:

  • Vector search (for similarity-based retrieval)
  • Graph relationships (for structured data connections)
  • Persistent storage (works across sessions)

It's designed to work seamlessly in both browser and server environments.

How It Works

Brainy combines three key technologies:

  1. Vector Embeddings: Converts data (text, images, etc.) into numerical vectors that capture semantic meaning
  2. HNSW Algorithm: Enables fast similarity search through a hierarchical graph structure
  3. Persistent Storage: Uses the best available storage option for your environment:
    • Browser: Origin Private File System (OPFS)
    • Node.js: File system
    • Server: S3-compatible storage (optional)
    • Fallback: In-memory storage

What Can You Use It For?

  • Semantic Search: Find content based on meaning, not just keywords
  • Recommendation Systems: Suggest similar items based on vector similarity
  • Knowledge Graphs: Build connected data structures with relationships
  • Data Organization: Automatically categorize and connect related information
  • AI Applications: Store and retrieve embeddings for machine learning models

Installation

npm install @soulcraft/brainy

Basic Usage

import {BrainyData} from '@soulcraft/brainy';

// Create and initialize the database
const db = new BrainyData();
await db.init();

// Add text data (automatically converted to vectors)
const catId = await db.add("Cats are independent pets", {type: 'animal'});
const dogId = await db.add("Dogs are loyal companions", {type: 'animal'});

// Search for similar content
const results = await db.searchText("feline pets", 2);
console.log(results);
// Returns items similar to "feline pets" with their similarity scores

// Add relationships between items
await db.addEdge(catId, dogId, {type: 'related_to'});

// Retrieve data
const cat = await db.get(catId);
console.log(cat);

// Update metadata
await db.updateMetadata(catId, {type: 'animal', size: 'small'});

// Delete data
await db.delete(dogId);

Key Features

  • Automatic Vectorization: Converts text and data to vector embeddings
  • Fast Similarity Search: Uses HNSW algorithm for efficient retrieval
  • Cross-Platform: Works in browsers, Node.js, and server environments
  • Persistent Storage: Multiple storage options (OPFS, filesystem, cloud)
  • Graph Capabilities: Create relationships between data points
  • TypeScript Support: Fully typed API with generics
  • Flexible Configuration: Customize distance functions, embedding models, and more

Advanced Usage

Custom Embedding

import {BrainyData, createSimpleEmbeddingFunction} from '@soulcraft/brainy';

// Use a custom embedding function (faster but less accurate)
const db = new BrainyData({
    embeddingFunction: createSimpleEmbeddingFunction()
});
await db.init();

// Directly embed text to vectors
const vector = await db.embed("Some text to convert to a vector");

Configuration Options

import {BrainyData, euclideanDistance} from '@soulcraft/brainy';

// Configure with custom options
const db = new BrainyData({
    // Use Euclidean distance instead of default cosine distance
    distanceFunction: euclideanDistance,

    // HNSW index configuration for search performance
    hnsw: {
        M: 16,              // Max connections per node
        efConstruction: 200, // Construction candidate list size
        efSearch: 50,       // Search candidate list size
    },

    // Storage configuration
    storage: {
        requestPersistentStorage: true,
        // Uncomment to use cloud storage:
        // s3Storage: {
        //   bucketName: 'your-bucket',
        //   accessKeyId: 'your-key',
        //   secretAccessKey: 'your-secret',
        //   region: 'us-east-1'
        // }
    }
});

API Reference

Core Methods

// Initialize the database
await db.init();

// Add data (automatically vectorized)
const id = await db.add(textOrVector, metadata);

// Search by vector or text
const results = await db.search(vectorOrText, numResults);
const textResults = await db.searchText("query text", numResults);

// Manage data
const item = await db.get(id);
await db.updateMetadata(id, newMetadata);
await db.delete(id);

// Graph relationships
await db.addEdge(sourceId, targetId, metadata);
const edges = await db.getAllEdges();

// Database management
await db.clear();
const size = db.size();
const status = await db.status();

Distance Functions

  • cosineDistance (default)
  • euclideanDistance
  • manhattanDistance
  • dotProductDistance

Embedding Options

  • Default: TensorFlow Universal Sentence Encoder (high quality)
  • Alternative: Simple character-based embedding (faster)

Extensions

Brainy includes an augmentation system for extending functionality:

  • Memory Augmentations: Different storage backends
  • Sense Augmentations: Process raw data
  • Cognition Augmentations: Reasoning and inference
  • Dialog Augmentations: Natural language processing
  • Perception Augmentations: Data interpretation and/or visualization
  • Activation Augmentations: Trigger actions

For detailed documentation on extensions, see the API docs.

Examples

The repository includes several examples:

  • Web demo: examples/demo.html
  • Basic usage: examples/basicUsage.js
  • Custom storage: examples/customStorage.js
  • Memory augmentations: examples/memoryAugmentationExample.js

Browser Compatibility

Works in all modern browsers:

  • Chrome 86+
  • Edge 86+
  • Opera 72+
  • Chrome for Android 86+

For browsers without OPFS support, falls back to in-memory storage.

Requirements

  • Node.js >= 18.0.0

License

MIT