{"id":81,"library":"weaviate-client","title":"Weaviate Python Client","description":"Official Python client for the Weaviate vector database. v4 is a complete rewrite from v3 — uses gRPC for data operations (significantly faster), strong typing, collection-centric API, and context manager connection lifecycle. v3 API (weaviate.Client class) removed from the v4 package as of late 2024. Compatible with Weaviate server >= 1.23.7. Supports local, cloud (Weaviate Cloud), and custom deployments.","status":"active","version":"4.20.0","language":"python","source_language":"en","source_url":"https://docs.weaviate.io/weaviate/client-libraries/python","tags":["weaviate","vector-database","grpc","rag","similarity-search","embeddings","self-hosted","cloud"],"install":[{"cmd":"pip install weaviate-client","lang":"bash","label":"Standard install"},{"cmd":"pip install 'weaviate-client[agents]'","lang":"bash","label":"With Weaviate Agents support (4.18+)"},{"cmd":"pip install 'weaviate-client>=3.26.7,<4.0.0'","lang":"bash","label":"Pin to v3 if migrating gradually (no new features)"}],"dependencies":[{"reason":"Required. gRPC is the default transport for data operations in v4. Port 50051 must be open to the Weaviate server.","package":"grpcio","optional":false},{"reason":"Required. REST API calls for control-plane operations. Must be >= 0.26.0 due to httpx 0.28 API change.","package":"httpx","optional":false}],"imports":[{"note":"weaviate.Client() is the v3 API, removed from weaviate-client >= 4.0. Raises AttributeError on current installs. v3 client still importable via weaviate-client>=3.26.7,<4.0.0.","wrong":"import weaviate\nclient = weaviate.Client('http://localhost:8080')","symbol":"connect_to_local / connect_to_weaviate_cloud / WeaviateClient","correct":"import weaviate\nclient = weaviate.connect_to_local()  # local\nclient = weaviate.connect_to_weaviate_cloud(cluster_url=..., auth_credentials=...)  # cloud"},{"note":"collections.get() is deprecated as of v4.18.0 and will be removed. Use collections.use() instead. Both currently work but get() emits a deprecation warning.","wrong":"collection = client.collections.get('MyCollection')","symbol":"collections.use (preferred) vs collections.get (deprecated)","correct":"collection = client.collections.use('MyCollection')"},{"note":"Configure.NamedVectors replaced by Configure.Vectors and Configure.MultiVectors in v4.16.0. Configure.Vectorizer.none() replaced by Configure.Vectors.self_provided().","wrong":"Configure.NamedVectors.text2vec_openai()","symbol":"Configure.Vectors (new) vs Configure.NamedVectors (removed)","correct":"from weaviate.classes.config import Configure\nConfigure.Vectors.text2vec_openai()"}],"quickstart":{"code":"import weaviate\nfrom weaviate.classes.init import Auth\n\n# Local Weaviate instance\nwith weaviate.connect_to_local() as client:\n    # Create or get collection\n    if not client.collections.exists('Documents'):\n        client.collections.create('Documents')\n\n    collection = client.collections.use('Documents')\n\n    # Insert object\n    uuid = collection.data.insert({'text': 'Hello world', 'source': 'test'})\n\n    # Query\n    results = collection.query.near_text(query='hello', limit=5)\n    for obj in results.objects:\n        print(obj.properties)","lang":"python","description":"v4 uses context manager (with ... as client) to manage connection lifecycle. collections.use() is the preferred method (collections.get() deprecated in 4.18)."},"warnings":[{"fix":"Migrate to v4 API: replace weaviate.Client() with weaviate.connect_to_local() / connect_to_weaviate_cloud() / connect_to_custom(). Full migration guide: docs.weaviate.io/weaviate/client-libraries/python/v3_v4_migration. Or pin: pip install 'weaviate-client>=3.26.7,<4.0.0' — but v3 receives no new features.","message":"weaviate.Client() (v3 API) removed from weaviate-client >= 4.0.0 as of late 2024. Raises AttributeError. Enormous volume of tutorials, LangChain/LlamaIndex integration docs, and LLM-generated code uses v3 patterns.","severity":"breaking","affected_versions":">= 4.0.0"},{"fix":"Upgrade Weaviate server first. Check compatibility matrix in the release notes. Client minor versions track server minor versions (e.g., client 4.9.x pairs with server 1.27.x).","message":"v4 client requires Weaviate server >= 1.23.7. v4.9+ aligns with Weaviate >= 1.27. Connecting v4 client to older servers raises gRPC errors or returns unexpected API responses.","severity":"breaking","affected_versions":">= 4.0.0"},{"fix":"Add port mapping 50051:50051 to docker-compose.yml. For connect_to_custom(), specify both http_host/http_port and grpc_host/grpc_port explicitly.","message":"gRPC port 50051 must be open to Weaviate server. v4 client uses gRPC for all data operations. Docker deployments that only expose port 8080 (HTTP) fail with WeaviateGRPCUnavailableError on any query/insert.","severity":"breaking","affected_versions":">= 4.0.0"},{"fix":"Replace Configure.NamedVectors.* with Configure.Vectors.* and Configure.MultiVectors.* for multi-vector configurations. Replace Configure.Vectorizer.none() with Configure.Vectors.self_provided().","message":"Configure.NamedVectors renamed to Configure.Vectors in v4.16.0. Configure.Vectorizer.none() renamed to Configure.Vectors.self_provided(). Code written against 4.15.x and earlier breaks on upgrade.","severity":"breaking","affected_versions":">= 4.16.0"},{"fix":"Switch to API key authentication: Auth.api_key('your-api-key') passed to auth_credentials in connect_to_weaviate_cloud().","message":"OIDC authentication for Weaviate Cloud deprecated in v4.16+, removed in early August 2025. Raises deprecation warning then AuthenticationFailedError.","severity":"breaking","affected_versions":">= 4.16.0"},{"fix":"Always use context manager pattern or call client.close() in a finally block. Do not instantiate WeaviateClient at module level without explicit lifecycle management.","message":"v4 client must be used as a context manager (with weaviate.connect_to_local() as client:) or client.close() must be called explicitly. Failing to close leaks gRPC connections and eventually causes channel exhaustion.","severity":"gotcha","affected_versions":">= 4.0.0"},{"fix":"Replace client.collections.get('Name') with client.collections.use('Name') in all new code.","message":"collections.get() is deprecated in 4.18.0 and will be removed. New code should use collections.use() which is an exact functional equivalent introduced as the preferred alias.","severity":"gotcha","affected_versions":">= 4.18.0"}],"env_vars":null,"last_verified":"2026-05-12T07:53:31.745Z","next_check":"2026-05-28T00:00:00.000Z","problems":[{"fix":"from weaviate import WeaviateClient","cause":"The `Client` class was the main entry point for `weaviate-client` v3. In v4, the main client class is `WeaviateClient` and its import path has changed.","error":"ModuleNotFoundError: No module named 'weaviate.Client'"},{"fix":"client.collections.get('CollectionName').data.insert(properties={...})","cause":"The `data_object` attribute for CRUD operations was used in the v3 client. In v4, data operations are performed through the `data` attribute of a specific `Collection` object.","error":"AttributeError: 'WeaviateClient' object has no attribute 'data_object'"},{"fix":"client.collections.get('CollectionName').query.fetch_objects()","cause":"The `query` attribute for GraphQL queries was used in the v3 client. In v4, querying is performed through the `query` attribute of a specific `Collection` object.","error":"AttributeError: 'WeaviateClient' object has no attribute 'query'"},{"fix":"from weaviate.auth import AuthApiKey\nclient = WeaviateClient(..., auth_client_secret=AuthApiKey('YOUR_API_KEY'))","cause":"The `WeaviateClient` constructor in v4 expects an `AuthCredentials` object (e.g., `AuthApiKey`) for authentication, not a raw string API key.","error":"TypeError: WeaviateClient.__init__ got an unexpected keyword argument 'auth_client_secret'"},{"fix":"Ensure the Weaviate server is running and accessible at the URL specified in `client.WeaviateClient(url='...', ...)`. Check network connectivity and firewall rules.","cause":"The Weaviate server is not running, is unreachable, or there is a network/firewall issue preventing the client from establishing a gRPC connection.","error":"GRPC connection error: 14 UNAVAILABLE: failed to connect to all addresses"}],"ecosystem":"pypi","meta_description":null,"install_score":95,"install_tag":"verified","quickstart_score":0,"quickstart_tag":"stale","pypi_latest":null,"install_checks":{"last_tested":"2026-05-12","tag":"verified","tag_description":"installs cleanly on critical runtimes, fast import, recently tested","results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.07,"mem_mb":15.5,"disk_size":"41.1M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"agents","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":3.77,"mem_mb":40.2,"disk_size":"92.6M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":3.28,"mem_mb":35.6,"disk_size":"79.6M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.78,"mem_mb":15.5,"disk_size":"41M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"agents","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.48,"mem_mb":35.3,"disk_size":"90M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.89,"mem_mb":30.7,"disk_size":"77M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.56,"mem_mb":17.4,"disk_size":"43.8M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"agents","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":5.2,"mem_mb":42.6,"disk_size":"99.4M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":4.55,"mem_mb":38.1,"disk_size":"85.1M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.26,"mem_mb":17.4,"disk_size":"44M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"agents","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":3.39,"mem_mb":37.9,"disk_size":"96M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.83,"mem_mb":33.3,"disk_size":"82M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.29,"mem_mb":17.1,"disk_size":"35.4M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"agents","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":4.39,"mem_mb":41.9,"disk_size":"90.1M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":3.88,"mem_mb":37.5,"disk_size":"76.1M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.32,"mem_mb":17.1,"disk_size":"36M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"agents","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":3.66,"mem_mb":37.3,"disk_size":"87M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":3.04,"mem_mb":32.9,"disk_size":"73M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.26,"mem_mb":18.1,"disk_size":"35.0M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"agents","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":4.14,"mem_mb":43.5,"disk_size":"89.8M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":3.66,"mem_mb":38.2,"disk_size":"75.7M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.28,"mem_mb":18.1,"disk_size":"35M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"agents","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":3.48,"mem_mb":38.7,"disk_size":"87M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":3,"mem_mb":33.4,"disk_size":"73M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1,"mem_mb":15.4,"disk_size":"41.2M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"agents","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":3.67,"mem_mb":39.4,"disk_size":"92.2M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":3.1,"mem_mb":35.6,"disk_size":"79.4M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.89,"mem_mb":15.4,"disk_size":"42M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"agents","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.71,"mem_mb":34.5,"disk_size":"89M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.21,"mem_mb":30.8,"disk_size":"76M"}]},"quickstart_checks":{"last_tested":"2026-05-12","tag":"stale","tag_description":"widespread failures or data too old to trust","results":[{"runtime":"python:3.10-alpine","exit_code":1},{"runtime":"python:3.10-slim","exit_code":1},{"runtime":"python:3.11-alpine","exit_code":1},{"runtime":"python:3.11-slim","exit_code":1},{"runtime":"python:3.12-alpine","exit_code":1},{"runtime":"python:3.12-slim","exit_code":1},{"runtime":"python:3.13-alpine","exit_code":1},{"runtime":"python:3.13-slim","exit_code":1},{"runtime":"python:3.9-alpine","exit_code":1},{"runtime":"python:3.9-slim","exit_code":1}]}}