Weaviate Integration

Weaviate is an open-source vector database that supports multi-modal data and hybrid search capabilities. It combines vector search with traditional keyword search for comprehensive retrieval.
Weaviate excels at multi-modal applications where you need to search across text, images, and other data types with advanced filtering and GraphQL querying.

Why Weaviate?

Multi-Modal Support

Beyond Text
  • Text, image, and audio embeddings
  • Cross-modal search capabilities
  • Unified vector space
  • Rich media understanding

Hybrid Search

Best of Both Worlds
  • Vector similarity + keyword search
  • BM25 + semantic search
  • Configurable ranking algorithms
  • Advanced query capabilities

GraphQL API

Flexible Querying
  • Rich query language
  • Nested object support
  • Aggregations and analytics
  • Type-safe queries

Open Source

Full Control
  • Self-hosted deployment
  • Custom modifications
  • No vendor lock-in
  • Community support

Installation & Setup

1

Deploy Weaviate

Choose your deployment method:Docker (Development):
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
Docker Compose:
version: '3.8'
services:
  weaviate:
    image: semitechnologies/weaviate:latest
    ports:
      - "8080:8080"
    environment:
      QUERY_DEFAULTS_LIMIT: 25
      AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true'
      PERSISTENCE_DATA_PATH: '/var/lib/weaviate'
    volumes:
      - weaviate_data:/var/lib/weaviate
volumes:
  weaviate_data:
Weaviate Cloud: Sign up at console.weaviate.cloud
2

Install Dependencies

# Install Cognee with Weaviate support
pip install cognee
pip install weaviate-client
3

Configure Cognee

import os
import cognee

# Weaviate configuration
os.environ["VECTOR_DB_PROVIDER"] = "weaviate"
os.environ["VECTOR_DB_URL"] = "http://localhost:8080"

# For Weaviate Cloud
# os.environ["VECTOR_DB_URL"] = "https://your-cluster.weaviate.network"
# os.environ["WEAVIATE_API_KEY"] = "your-weaviate-api-key"

print("Weaviate configured successfully!")

Configuration Examples

import os
import cognee

# Local Weaviate instance
os.environ["VECTOR_DB_PROVIDER"] = "weaviate"
os.environ["VECTOR_DB_URL"] = "http://localhost:8080"

# Optional: Configure class name
os.environ["WEAVIATE_CLASS_NAME"] = "CogneeDocument"

# Test the setup
await cognee.add("Weaviate supports GraphQL queries and vector search.")
await cognee.cognify()

Multi-Modal Features

Cross-Modal Search
# Add text and image data
await cognee.add("A diagram showing neural network architecture.")
await cognee.add_image("path/to/neural_network_diagram.png")

# Cross-modal search
results = await cognee.search(
    "neural network visualization",
    query_type=SearchType.MULTI_MODAL,
    include_images=True
)

Performance Optimization

Index Tuning

Monitoring & Analytics

import cognee
import asyncio

async def get_weaviate_metrics():
    # Get comprehensive metrics
    metrics = await cognee.get_weaviate_metrics()
    
    print("=== Weaviate Performance Metrics ===")
    print(f"Total objects: {metrics['total_objects']:,}")
    print(f"Index size: {metrics['index_size_mb']:.1f} MB")
    print(f"Memory usage: {metrics['memory_usage_mb']:.1f} MB")
    print(f"Average query time: {metrics['avg_query_time_ms']:.1f} ms")
    print(f"Cache hit rate: {metrics['cache_hit_rate']:.1%}")
    
    print("\n=== Query Performance ===")
    print(f"Queries/second: {metrics['qps']:.1f}")
    print(f"P95 latency: {metrics['p95_latency_ms']:.1f} ms")
    print(f"Error rate: {metrics['error_rate']:.2%}")
    
    return metrics

asyncio.run(get_weaviate_metrics())

Troubleshooting

Cannot Connect
# Test Weaviate connection
import weaviate

try:
    client = weaviate.Client("http://localhost:8080")
    ready = client.is_ready()
    
    if ready:
        print("✅ Weaviate is ready")
        schema = client.schema.get()
        print(f"Schema classes: {len(schema['classes'])}")
    else:
        print("❌ Weaviate not ready")
        
except Exception as e:
    print(f"❌ Connection failed: {e}")

Next Steps