| .. | ||
| README.md | ||
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
🔗 Related Documentation
- Getting Started - Basic setup and first steps
- User Guides - Feature-specific documentation
- API Reference - Complete API documentation
- Optimization Guides - Performance tuning
🎯 Example Request Guidelines
Need a specific example? Open a GitHub Issue with:
- Use Case: What you're trying to build
- Environment: Browser, Node.js, serverless, etc.
- Scale: Expected dataset size and performance requirements
- 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!
- Fork the repository
- Add your example to the appropriate section
- Include clear comments and documentation
- Test your example thoroughly
- Submit a pull request
Ready to build something amazing with Brainy? Start with the Basic Usage examples! 🚀