> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getbifrost.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Weaviate

> Weaviate vector database integration for semantic caching in Bifrost.

## 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 theme={null}
# 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

<Tabs group="weaviate-config">
  <Tab title="Go SDK">
    ```go theme={null}
    // 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 theme={null}
    {
      "vector_store": {
        "enabled": true,
        "type": "weaviate",
        "config": {
          "scheme": "http",
          "host": "localhost:8080"
        }
      }
    }
    ```

    **Cloud Setup with gRPC:**

    ```json theme={null}
    {
      "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 theme={null}
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).
