# Examples Practical code examples and tutorials showing how to use Brainy in real-world applications. ## 🚀 Quick Examples ### Zero-Configuration Setup ```typescript 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](basic-usage.md) Simple examples to get you started. - First vector database - Adding and searching data - Text-based semantic search - Basic configuration ### 🏗️ [Advanced Patterns](advanced-patterns.md) Complex use cases and integration patterns. - Batch operations and optimization - Custom embedding functions - Advanced search patterns - Performance monitoring ### 🔌 [Integrations](integrations.md) Third-party service integrations. - Express.js API server - Next.js applications - AWS Lambda functions - Docker deployments ### ⚡ [Performance Examples](performance.md) Optimization and scaling examples. - Large dataset handling - Memory optimization - S3 storage strategies - Performance benchmarking ### 🌐 [Real-World Applications](real-world.md) Complete application examples. - Document search system - Recommendation engine - Knowledge base - Chatbot with semantic search ## 🎯 Use Case Examples ### Document Search System ```typescript 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 ```typescript 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 ```typescript 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 ```typescript // 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 ```typescript 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 ```typescript 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