brainy/docs/examples
David Snelling 5e0c02e363 chore: Update repository references from soulcraft-research to soulcraftlabs
- Updated GitHub URLs to github.com/soulcraftlabs/brainy
- Updated git remote origin URL
- Updated all documentation references
2025-08-10 16:42:02 -07:00
..
README.md chore: Update repository references from soulcraft-research to soulcraftlabs 2025-08-10 16:42:02 -07:00

Examples

Practical code examples and tutorials showing how to use Brainy in real-world applications.

🚀 Quick Examples

Zero-Configuration Setup

import { createAutoBrainy } from '@soulcraft/brainy'

// Everything auto-configured!
const brainy = createAutoBrainy()

// Add and search in 3 lines
await brainy.addText('1', 'Machine learning is fascinating')
await brainy.addText('2', 'Deep learning models are powerful')
const results = await brainy.searchText('AI technology', 5)

📚 Example Categories

🎯 Basic Usage

Simple examples to get you started.

  • First vector database
  • Adding and searching data
  • Text-based semantic search
  • Basic configuration

🏗️ Advanced Patterns

Complex use cases and integration patterns.

  • Batch operations and optimization
  • Custom embedding functions
  • Advanced search patterns
  • Performance monitoring

🔌 Integrations

Third-party service integrations.

  • Express.js API server
  • Next.js applications
  • AWS Lambda functions
  • Docker deployments

Performance Examples

Optimization and scaling examples.

  • Large dataset handling
  • Memory optimization
  • S3 storage strategies
  • Performance benchmarking

🌐 Real-World Applications

Complete application examples.

  • Document search system
  • Recommendation engine
  • Knowledge base
  • Chatbot with semantic search

🎯 Use Case Examples

Document Search System

import { createAutoBrainy } from '@soulcraft/brainy'

class DocumentSearchSystem {
  private brainy = createAutoBrainy({ bucketName: 'documents' })
  
  async addDocument(id: string, title: string, content: string) {
    await this.brainy.addText(id, `${title} ${content}`, {
      title,
      content,
      addedAt: new Date().toISOString()
    })
  }
  
  async searchDocuments(query: string, limit = 10) {
    return this.brainy.searchText(query, limit)
  }
}

Recommendation Engine

import { createAutoBrainy } from '@soulcraft/brainy'

class RecommendationEngine {
  private brainy = createQuickBrainy('medium', { bucketName: 'recommendations' })
  
  async addUserPreferences(userId: string, preferences: number[]) {
    await this.brainy.addVector({
      id: userId,
      vector: preferences,
      metadata: { type: 'user', lastUpdated: Date.now() }
    })
  }
  
  async getRecommendations(userId: string) {
    const user = await this.brainy.get(userId)
    if (!user) return []
    
    const similar = await this.brainy.search(user.vector, 10)
    return similar.filter(([id]) => id !== userId)
  }
}

API Server

import express from 'express'
import { createAutoBrainy } from '@soulcraft/brainy'

const app = express()
const brainy = createAutoBrainy({
  bucketName: process.env.S3_BUCKET_NAME
})

app.use(express.json())

// Add vector endpoint
app.post('/vectors', async (req, res) => {
  try {
    const { id, vector, metadata } = req.body
    await brainy.addVector({ id, vector, metadata })
    res.json({ success: true, id })
  } catch (error) {
    res.status(400).json({ error: error.message })
  }
})

// Search endpoint
app.get('/search', async (req, res) => {
  try {
    const { query, limit = 10 } = req.query
    const results = await brainy.searchText(query, parseInt(limit))
    res.json({ results })
  } catch (error) {
    res.status(400).json({ error: error.message })
  }
})

// Performance metrics endpoint
app.get('/metrics', async (req, res) => {
  const metrics = brainy.getPerformanceMetrics()
  res.json(metrics)
})

app.listen(3000, () => {
  console.log('Vector search API running on port 3000')
})

🛠️ Framework Integration Examples

Next.js Application

// pages/api/search.ts
import { NextApiRequest, NextApiResponse } from 'next'
import { createAutoBrainy } from '@soulcraft/brainy'

let brainy: any = null

async function getBrainy() {
  if (!brainy) {
    brainy = createAutoBrainy({
      bucketName: process.env.S3_BUCKET_NAME
    })
  }
  return brainy
}

export default async function handler(
  req: NextApiRequest,
  res: NextApiResponse
) {
  if (req.method === 'POST') {
    const { query } = req.body
    const brainy = await getBrainy()
    const results = await brainy.searchText(query, 10)
    res.json({ results })
  } else {
    res.setHeader('Allow', ['POST'])
    res.status(405).end(`Method ${req.method} Not Allowed`)
  }
}

AWS Lambda Function

import { APIGatewayProxyHandler } from 'aws-lambda'
import { createAutoBrainy } from '@soulcraft/brainy'

// Initialize outside handler for connection reuse
const brainy = createAutoBrainy({
  bucketName: process.env.S3_BUCKET_NAME
})

export const search: APIGatewayProxyHandler = async (event) => {
  try {
    const { query, limit = 10 } = JSON.parse(event.body || '{}')
    
    const results = await brainy.searchText(query, limit)
    
    return {
      statusCode: 200,
      headers: {
        'Content-Type': 'application/json',
        'Access-Control-Allow-Origin': '*'
      },
      body: JSON.stringify({ results })
    }
  } catch (error) {
    return {
      statusCode: 500,
      body: JSON.stringify({ error: error.message })
    }
  }
}

React Hook

import { useState, useEffect } from 'react'
import { createAutoBrainy } from '@soulcraft/brainy'

// Custom hook for vector search
export function useVectorSearch() {
  const [brainy, setBrainy] = useState(null)
  const [loading, setLoading] = useState(true)
  
  useEffect(() => {
    async function initBrainy() {
      const instance = createAutoBrainy()
      setBrainy(instance)
      setLoading(false)
    }
    initBrainy()
  }, [])
  
  const search = async (query: string, limit = 10) => {
    if (!brainy) return []
    return brainy.searchText(query, limit)
  }
  
  const addText = async (id: string, text: string) => {
    if (!brainy) return
    return brainy.addText(id, text)
  }
  
  return { search, addText, loading, brainy }
}

// Usage in component
function SearchComponent() {
  const { search, addText, loading } = useVectorSearch()
  const [results, setResults] = useState([])
  
  if (loading) return <div>Loading...</div>
  
  const handleSearch = async (query: string) => {
    const searchResults = await search(query)
    setResults(searchResults)
  }
  
  return (
    <div>
      <input 
        type="text" 
        onChange={(e) => handleSearch(e.target.value)}
        placeholder="Search..."
      />
      <ul>
        {results.map(([id, score]) => (
          <li key={id}>ID: {id}, Score: {score}</li>
        ))}
      </ul>
    </div>
  )
}

🎮 Interactive Examples

Browser Console Examples

Open browser dev tools and try these:

// Import Brainy in browser
import('https://unpkg.com/@soulcraft/brainy').then(async ({ createAutoBrainy }) => {
  const brainy = createAutoBrainy()
  
  // Add some test data
  await brainy.addText('1', 'JavaScript is a programming language')
  await brainy.addText('2', 'Python is great for data science')
  await brainy.addText('3', 'Machine learning uses algorithms')
  
  // Search semantically
  const results = await brainy.searchText('coding languages', 2)
  console.log('Search results:', results)
})

Node.js REPL Examples

npm install @soulcraft/brainy
node
const { createAutoBrainy } = require('@soulcraft/brainy')

const brainy = createAutoBrainy()

// Add vectors
brainy.addVector({ id: '1', vector: [0.1, 0.2, 0.3] })
brainy.addVector({ id: '2', vector: [0.4, 0.5, 0.6] })

// Search
brainy.search([0.1, 0.2, 0.3], 5).then(console.log)

📊 Performance Examples

Benchmarking

import { createAutoBrainy } from '@soulcraft/brainy'

async function benchmarkSearch() {
  const brainy = createAutoBrainy()
  
  // Add test data
  console.log('Adding 10,000 vectors...')
  const addStart = Date.now()
  
  for (let i = 0; i < 10000; i++) {
    await brainy.addVector({
      id: `vector-${i}`,
      vector: Array.from({ length: 512 }, () => Math.random())
    })
  }
  
  const addTime = Date.now() - addStart
  console.log(`Added 10k vectors in ${addTime}ms`)
  
  // Benchmark search
  console.log('Running search benchmark...')
  const searchStart = Date.now()
  
  for (let i = 0; i < 100; i++) {
    const query = Array.from({ length: 512 }, () => Math.random())
    await brainy.search(query, 10)
  }
  
  const searchTime = Date.now() - searchStart
  console.log(`100 searches completed in ${searchTime}ms`)
  console.log(`Average search time: ${searchTime / 100}ms`)
  
  // Get performance metrics
  const metrics = brainy.getPerformanceMetrics()
  console.log('Performance metrics:', metrics)
}

benchmarkSearch()

Memory Monitoring

import { createAutoBrainy } from '@soulcraft/brainy'

const brainy = createAutoBrainy()

// Monitor memory usage
setInterval(() => {
  const metrics = brainy.getPerformanceMetrics()
  const memoryMB = metrics.memoryUsage / 1024 / 1024
  
  console.log(`Memory usage: ${memoryMB.toFixed(1)}MB`)
  console.log(`Cache hit rate: ${(metrics.cacheHitRate * 100).toFixed(1)}%`)
  console.log(`Average search time: ${metrics.averageSearchTime.toFixed(1)}ms`)
}, 10000)  // Every 10 seconds

🎯 Example Request Guidelines

Need a specific example? Open a GitHub Issue with:

  1. Use Case: What you're trying to build
  2. Environment: Browser, Node.js, serverless, etc.
  3. Scale: Expected dataset size and performance requirements
  4. Integration: Frameworks or services you're using

We'll create examples based on community needs!

💡 Contributing Examples

Have a great Brainy example? We'd love to include it!

  1. Fork the repository
  2. Add your example to the appropriate section
  3. Include clear comments and documentation
  4. Test your example thoroughly
  5. Submit a pull request

Ready to build something amazing with Brainy? Start with the Basic Usage examples! 🚀