This directory contains comprehensive examples demonstrating the various capabilities of the LanceDB Go SDK. Each example focuses on different aspects of using LanceDB in production applications.
Demonstrates: Fundamental database operations - Create, Read, Update, Delete
- Database connection and table creation
- Schema definition with multiple data types
- Inserting, querying, updating, and deleting records
- Basic error handling and resource management
go run basic_crud.goDemonstrates: Comprehensive vector similarity search capabilities
- Creating and storing vector embeddings
- Basic and advanced vector similarity search
- Different K values and search configurations
- Vector search with metadata filtering
- Performance benchmarking and optimization
go run vector_search.goDemonstrates: Combining vector search with traditional filtering
- E-commerce product catalog with vectors and metadata
- Vector search combined with SQL-like filters
- Multi-modal query patterns
- Recommendation system implementations
- Cross-category and similarity-based recommendations
go run hybrid_search.goDemonstrates: Creating and managing different types of indexes
- Vector indexes: IVF-PQ, IVF-Flat, HNSW-PQ for different use cases
- Scalar indexes: BTree for range queries, Bitmap for categorical data
- Full-text search indexes for text content
- Index performance comparison and optimization
- Best practices for index selection
go run index_management.goDemonstrates: Efficient bulk data operations
- Different batch insertion strategies and performance comparison
- Batch update and delete operations
- Memory-efficient processing of large datasets
- Concurrent batch operations with goroutines
- Error handling and recovery patterns for batch operations
go run batch_operations.goDemonstrates: Local and cloud storage configurations
- Local file system storage with optimization settings
- AWS S3 configuration with authentication methods
- MinIO object storage for local development
- Storage performance comparison and optimization
- Error handling and fallback strategies
go run storage_configuration.goDemonstrates: Production-ready cloud deployment patterns
- Production AWS S3 configurations with security best practices
- Multi-environment deployment strategies (dev/staging/prod)
- High-availability and disaster recovery patterns
- Security and compliance configurations
- Cost optimization strategies
- Monitoring and observability setup
- Deployment automation patterns
go run cloud_deployment.go- Go 1.21+ installed on your system
- LanceDB Go SDK dependencies (install with
go mod tidy) - Optional: AWS credentials for S3 examples
- Optional: MinIO server for object storage examples
- Clone the LanceDB repository:
git clone https://github.com/lancedb/lancedb-go.git
cd lancedb-go- Install dependencies:
go mod tidy- Build the Go SDK (if needed):
make buildEach example is self-contained and can be run independently:
# Basic CRUD operations
go run examples/basic_crud.go
# Vector search capabilities
go run examples/vector_search.go
# Hybrid search patterns
go run examples/hybrid_search.go
# Index management
go run examples/index_management.go
# Batch operations
go run examples/batch_operations.go
# Storage configuration
go run examples/storage_configuration.go
# Cloud deployment patterns
go run examples/cloud_deployment.goMost examples work out-of-the-box with local storage and don't require additional configuration.
For S3-related examples, you'll need AWS credentials configured:
-
IAM Role (Recommended for EC2/ECS):
- No additional configuration needed
- Examples will use the instance's IAM role
-
AWS Credentials File:
aws configure # Or set up ~/.aws/credentials -
Environment Variables:
export AWS_ACCESS_KEY_ID=your_access_key export AWS_SECRET_ACCESS_KEY=your_secret_key export AWS_REGION=us-east-1
For MinIO examples, start a local MinIO server:
# Using Docker
docker run -p 9000:9000 -p 9001:9001 \
-e "MINIO_ROOT_USER=minioadmin" \
-e "MINIO_ROOT_PASSWORD=minioadmin" \
quay.io/minio/minio server /data --console-address ":9001"
# Create test bucket via MinIO console at http://localhost:9001π Features:
β’ Database connection management
β’ Table schema creation with multiple data types
β’ Record insertion, querying, updating, deletion
β’ Error handling and resource cleanup
β’ Performance timing and metrics
π― Use Cases:
β’ Learning basic LanceDB operations
β’ Understanding schema design
β’ Building simple applications
π Features:
β’ Vector embedding generation and storage
β’ Similarity search with configurable parameters
β’ Performance benchmarking across different K values
β’ Metadata filtering combined with vector search
β’ Query optimization techniques
π― Use Cases:
β’ Semantic search applications
β’ Recommendation systems
β’ Content similarity matching
β’ AI/ML model integration
π Features:
β’ Product catalog with vectors and structured data
β’ Combined vector + metadata filtering
β’ E-commerce search scenarios
β’ Recommendation patterns
β’ Multi-modal query optimization
π― Use Cases:
β’ E-commerce product search
β’ Content discovery platforms
β’ Recommendation engines
β’ Advanced search applications
π Features:
β’ Vector indexes: IVF-PQ, IVF-Flat, HNSW-PQ
β’ Scalar indexes: BTree, Bitmap, Label List
β’ Full-text search indexes
β’ Performance comparison and analysis
β’ Index selection best practices
π― Use Cases:
β’ Query performance optimization
β’ Large-scale vector search
β’ Mixed workload optimization
β’ Production database tuning
π Features:
β’ Bulk insertion strategies and performance
β’ Memory-efficient large dataset processing
β’ Concurrent processing with goroutines
β’ Error handling and recovery patterns
β’ Resource management and optimization
π― Use Cases:
β’ Data migration and ETL
β’ Large-scale data ingestion
β’ Bulk data processing
β’ Performance-critical applications
π Features:
β’ Local storage optimization
β’ AWS S3 configuration patterns
β’ MinIO setup for development
β’ Storage performance comparison
β’ Error handling and fallback strategies
π― Use Cases:
β’ Development environment setup
β’ Cloud storage integration
β’ Storage optimization
β’ Multi-environment deployment
π Features:
β’ Production AWS configurations
β’ Multi-environment strategies
β’ Security and compliance setup
β’ Cost optimization techniques
β’ Monitoring and observability
β’ Deployment automation patterns
π― Use Cases:
β’ Production deployments
β’ Enterprise applications
β’ Compliance requirements
β’ Cost management
β’ Operational excellence
Many examples accept environment variables for customization:
# Custom database path
DATABASE_PATH="/tmp/my-lancedb" go run examples/basic_crud.go
# Custom AWS region
AWS_REGION="us-west-2" go run examples/storage_configuration.go
# Enable debug logging
DEBUG=true go run examples/vector_search.goUse the time command to measure example execution:
time go run examples/batch_operations.goEnable Go's built-in profiling for memory analysis:
go run -pprof examples/batch_operations.goRecommended order for learning:
- Start with
basic_crud.go- Learn fundamental operations - Try
vector_search.go- Understand vector operations - Explore
hybrid_search.go- See real-world patterns - Study
index_management.go- Optimize performance - Practice
batch_operations.go- Handle large datasets - Configure
storage_configuration.go- Set up storage - Deploy with
cloud_deployment.go- Go to production
Connection Errors:
Error: failed to connect to database
Solution: Check file permissions and disk space for local storage
AWS S3 Errors:
Error: failed to connect to S3
Solution: Verify AWS credentials and bucket permissions
MinIO Errors:
Error: connection refused
Solution: Ensure MinIO server is running on localhost:9000
Build Errors:
Error: undefined: lancedb
Solution: Run 'go mod tidy' and 'make build'
- Check the main README:
../README.md - Review error messages: Examples include detailed error handling
- Enable debug logging: Set
DEBUG=trueenvironment variable - Check dependencies: Run
go mod verify
To add new examples:
- Create a new
.gofile in this directory - Follow the existing code structure and documentation style
- Include comprehensive comments and error handling
- Add the example to this README with description
- Test thoroughly with different scenarios
All examples are provided under the same license as the LanceDB project.