Skip to content

WeaviateVectorDB fails to connect with Weaviate v4 client - missing grpc_port parameter #118

@CREVIOS

Description

@CREVIOS

The WeaviateVectorDB class fails to initialize when connecting to a Weaviate instance, throwing a TypeError about missing grpc_port parameter in ConnectionParams.from_url().

Environment

  • dsRAG version: Latest (cloned from main branch)
  • Python version: 3.13
  • Weaviate server version: 1.27.0 (Docker)
  • Weaviate Python client version: 4.x (latest)
  • Operating System: macOS

Error Message

TypeError: ConnectionParams.from_url() missing 1 required positional argument: 'grpc_port'

Full Stack Trace

Traceback (most recent call last):
  File "/path/to/main.py", line 191, in startup_event
    initialize_knowledge_base()
  File "/path/to/main.py", line 116, in initialize_knowledge_base
    vector_db = WeaviateVectorDB(
        http_host=WEAVIATE_HOST,
        http_port=WEAVIATE_HTTP_PORT,
        http_secure=False,
        grpc_host=WEAVIATE_HOST,
        grpc_port=WEAVIATE_GRPC_PORT,
        grpc_secure=False,
        kb_id=KB_ID
    )
  File "/path/to/venv/lib/python3.13/site-packages/dsrag/database/vector/weaviate_db.py", line 72, in __init__
    connection_params = weaviate.connect.ConnectionParams.from_url(
        url=f"{'https' if http_secure else 'http'}://{http_host}:{http_port}"
    )
TypeError: ConnectionParams.from_url() missing 1 required positional argument: 'grpc_port'

Steps to Reproduce

  1. Set up Weaviate using Docker with the following docker-compose.yml:
services:
  unicornhunter-weaviate:
    command:
      - --host
      - 0.0.0.0
      - --port
      - "8080"
      - --scheme
      - http
    image: cr.weaviate.io/semitechnologies/weaviate:1.27.0
    ports:
      - 8080:8080
      - 50051:50051
    environment:
      OPENAI_APIKEY: ${OPENAI_APIKEY}
      COHERE_APIKEY: ${COHERE_APIKEY}
      AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: "true"
      ENABLE_MODULES: "text2vec-openai,reranker-cohere"
  1. Try to initialize WeaviateVectorDB:
from dsrag.database.vector import WeaviateVectorDB

vector_db = WeaviateVectorDB(
    kb_id="test_kb",
    http_host="localhost",
    http_port=8080,
    http_secure=False,
    grpc_host="localhost",
    grpc_port=50051,
    grpc_secure=False
)
  1. Error occurs during initialization

Root Cause

The issue is in /dsrag/database/vector/weaviate_db.py at line 72. The code uses:

connection_params = weaviate.connect.ConnectionParams.from_url(
    url=f"{'https' if http_secure else 'http'}://{http_host}:{http_port}"
)

However, in Weaviate Python client v4, the ConnectionParams.from_url() method now requires a grpc_port parameter as a required positional argument, but the dsRAG code is not providing it.

https://weaviate.io/developers/weaviate/client-libraries/python

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions