--- title: "Weaviate" description: "Weaviate vector database integration for semantic caching in Bifrost." icon: "database" --- ## Weaviate Weaviate is a production-ready vector database solution that provides advanced querying capabilities, gRPC support for high performance, and flexible schema management for production deployments. ### Key Features - **gRPC Support**: Enhanced performance with gRPC connections - **Advanced Filtering**: Complex query operations with multiple conditions - **Schema Management**: Flexible schema definition for different data types - **Cloud & Self-Hosted**: Support for both Weaviate Cloud and self-hosted deployments - **Scalable Storage**: Handle millions of vectors with efficient indexing ### Setup & Installation **Weaviate Cloud:** - Sign up at [cloud.weaviate.io](https://cloud.weaviate.io) - Create a new cluster - Get your API key and cluster URL **Local Weaviate:** ```bash # Using Docker docker run -d \ --name weaviate \ -p 8080:8080 \ -e QUERY_DEFAULTS_LIMIT=25 \ -e AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED='true' \ -e PERSISTENCE_DATA_PATH='/var/lib/weaviate' \ semitechnologies/weaviate:latest ``` ### Configuration Options ```go // Configure Weaviate vector store vectorConfig := &vectorstore.Config{ Enabled: true, Type: vectorstore.VectorStoreTypeWeaviate, Config: vectorstore.WeaviateConfig{ Scheme: "http", // "http" for local, "https" for cloud Host: "localhost:8080", // Your Weaviate host APIKey: "your-weaviate-api-key", // Required for Weaviate Cloud; optional for local/self-hosted // Enable gRPC for improved performance (optional) GrpcConfig: &vectorstore.WeaviateGrpcConfig{ Host: "localhost:50051", // gRPC port Secured: false, // true for TLS }, }, } // Create vector store store, err := vectorstore.NewVectorStore(context.Background(), vectorConfig, logger) if err != nil { log.Fatal("Failed to create vector store:", err) } ``` **Local Setup:** ```json { "vector_store": { "enabled": true, "type": "weaviate", "config": { "scheme": "http", "host": "localhost:8080" } } } ``` **Cloud Setup with gRPC:** ```json { "vector_store": { "enabled": true, "type": "weaviate", "config": { "scheme": "https", "host": "your-weaviate-host", "api_key": "your-weaviate-api-key", "grpc_config": { "host": "your-weaviate-grpc-host", "secured": true } } } } ``` gRPC host should include the port. If no port is specified, port 80 is used for insecured connections and port 443 for secured connections. ### Advanced Features **gRPC Performance Optimization:** Enable gRPC for better performance in production: ```go vectorConfig := &vectorstore.Config{ Type: vectorstore.VectorStoreTypeWeaviate, Config: vectorstore.WeaviateConfig{ Scheme: "https", Host: "your-weaviate-host", APIKey: "your-api-key", // Enable gRPC for better performance GrpcConfig: &vectorstore.WeaviateGrpcConfig{ Host: "your-weaviate-grpc-host:443", Secured: true, }, }, } ``` ### Production Considerations **Performance**: For production environments, consider using gRPC configuration for better performance and enable appropriate authentication mechanisms for your Weaviate deployment. **Authentication**: Always use API keys for Weaviate Cloud deployments and configure proper authentication for self-hosted instances in production. For the VectorStore interface API and usage examples, see [Vector Store Architecture](/architecture/framework/vector-store). For semantic caching setup, see [Semantic Caching](/features/semantic-caching).