| |
| 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 \ |
| |
| -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 |
|
|
| <Tabs group="weaviate-config"> |
|
|
| <Tab title="Go SDK"> |
|
|
| ```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) |
| } |
| ``` |
|
|
| </Tab> |
|
|
| <Tab title="config.json"> |
|
|
| **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 |
| } |
| } |
| } |
| } |
| ``` |
|
|
| </Tab> |
|
|
| </Tabs> |
|
|
| <Note> |
| gRPC host should include the port. If no port is specified, port 80 is used for insecured connections and port 443 for secured connections. |
| </Note> |
|
|
| ### 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 |
|
|
| <Info> |
| **Performance**: For production environments, consider using gRPC configuration for better performance and enable appropriate authentication mechanisms for your Weaviate deployment. |
| </Info> |
|
|
| <Warning> |
| **Authentication**: Always use API keys for Weaviate Cloud deployments and configure proper authentication for self-hosted instances in production. |
| </Warning> |
|
|
| 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). |
|
|