private-gpt icon indicating copy to clipboard operation
private-gpt copied to clipboard

Connectivity to QDrant Cloud Issue

Open QuantumNtangled opened this issue 1 year ago • 5 comments

When running private GPT using Ollama profile and set up for QDrant cloud, it cannot resolve the cloud REST address.

settings.yaml

vectorstore: database: qdrant

nodestore: database: postgres

qdrant: url: "myinstance1.us-east4-0.gcp.cloud.qdrant.io:6333" api_key: "yB5H0osupersecret" collection_name: "make_this_parameterizable_per_api_call" #Added because i was getting a parameter error without it

I get the following error:

20:38:20.924 [INFO ] private_gpt.settings.settings_loader - Starting application with profiles=['default', 'ollama'] 20:38:28.380 [INFO ] private_gpt.components.llm.llm_component - Initializing the LLM in mode=ollama Traceback (most recent call last): File "C:\Romanzo\env1\Lib\site-packages\injector_init_.py", line 798, in get return self._context[key] ~~~~~~~~~~~~~^^^^^ KeyError: <class 'private_gpt.ui.ui.PrivateGptUi'>

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "C:\Romanzo\env1\Lib\site-packages\injector_init_.py", line 798, in get return self._context[key] ~~~~~~~~~~~~~^^^^^ KeyError: <class 'private_gpt.server.ingest.ingest_service.IngestService'>

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "C:\Romanzo\env1\Lib\site-packages\injector_init_.py", line 798, in get return self._context[key] ~~~~~~~~~~~~~^^^^^ KeyError: <class 'private_gpt.components.vector_store.vector_store_component.VectorStoreComponent'>

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "C:\Romanzo\env1\Lib\site-packages\httpcore_exceptions.py", line 10, in map_exceptions yield File "C:\Romanzo\env1\Lib\site-packages\httpcore_backends\sync.py", line 206, in connect_tcp sock = socket.create_connection( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\gabek\AppData\Local\Programs\Python\Python311\Lib\socket.py", line 826, in create_connection for res in getaddrinfo(host, port, 0, SOCK_STREAM): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\gabek\AppData\Local\Programs\Python\Python311\Lib\socket.py", line 961, in getaddrinfo for res in _socket.getaddrinfo(host, port, family, type, proto, flags): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ socket.gaierror: [Errno 11001] getaddrinfo failed

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File "C:\Romanzo\env1\Lib\site-packages\httpx_transports\default.py", line 66, in map_httpcore_exceptions yield File "C:\Romanzo\env1\Lib\site-packages\httpx_transports\default.py", line 228, in handle_request resp = self._pool.handle_request(req) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\httpcore_sync\connection_pool.py", line 268, in handle_request raise exc File "C:\Romanzo\env1\Lib\site-packages\httpcore_sync\connection_pool.py", line 251, in handle_request response = connection.handle_request(request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\httpcore_sync\connection.py", line 99, in handle_request raise exc File "C:\Romanzo\env1\Lib\site-packages\httpcore_sync\connection.py", line 76, in handle_request stream = self._connect(request) ^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\httpcore_sync\connection.py", line 124, in _connect stream = self._network_backend.connect_tcp(**kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\httpcore_backends\sync.py", line 205, in connect_tcp with map_exceptions(exc_map): File "C:\Users\gabek\AppData\Local\Programs\Python\Python311\Lib\contextlib.py", line 155, in exit self.gen.throw(typ, value, traceback) File "C:\Romanzo\env1\Lib\site-packages\httpcore_exceptions.py", line 14, in map_exceptions raise to_exc(exc) from exc httpcore.ConnectError: [Errno 11001] getaddrinfo failed

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File "C:\Romanzo\env1\Lib\site-packages\qdrant_client\http\api_client.py", line 101, in send_inner response = self._client.send(request) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\httpx_client.py", line 901, in send response = self._send_handling_auth( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\httpx_client.py", line 929, in _send_handling_auth response = self._send_handling_redirects( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\httpx_client.py", line 966, in _send_handling_redirects response = self._send_single_request(request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\httpx_client.py", line 1002, in _send_single_request response = transport.handle_request(request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\httpx_transports\default.py", line 227, in handle_request with map_httpcore_exceptions(): File "C:\Users\gabek\AppData\Local\Programs\Python\Python311\Lib\contextlib.py", line 155, in exit self.gen.throw(typ, value, traceback) File "C:\Romanzo\env1\Lib\site-packages\httpx_transports\default.py", line 83, in map_httpcore_exceptions raise mapped_exc(message) from exc httpx.ConnectError: [Errno 11001] getaddrinfo failed

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "", line 198, in run_module_as_main File "", line 88, in run_code File "C:\Romanzo\private_gpt_main.py", line 5, in from private_gpt.main import app File "C:\Romanzo\private_gpt\main.py", line 6, in app = create_app(global_injector) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\private_gpt\launcher.py", line 63, in create_app ui = root_injector.get(PrivateGptUi) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\injector_init.py", line 91, in wrapper return function(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\injector_init_.py", line 974, in get provider_instance = scope_instance.get(interface, binding.provider) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\injector_init_.py", line 91, in wrapper return function(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\injector_init_.py", line 800, in get instance = self.get_instance(key, provider, self.injector) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\injector_init.py", line 811, in get_instance return provider.get(injector) ^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\injector_init.py", line 264, in get return injector.create_object(self.cls) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\injector_init.py", line 998, in create_object self.call_with_injection(init, self_=instance, kwargs=additional_kwargs) File "C:\Romanzo\env1\Lib\site-packages\injector_init_.py", line 1031, in call_with_injection dependencies = self.args_to_inject( ^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\injector_init_.py", line 91, in wrapper return function(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\injector_init_.py", line 1079, in args_to_inject instance: Any = self.get(interface) ^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\injector_init_.py", line 91, in wrapper return function(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\injector_init_.py", line 974, in get provider_instance = scope_instance.get(interface, binding.provider) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\injector_init_.py", line 91, in wrapper return function(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\injector_init_.py", line 800, in get instance = self.get_instance(key, provider, self.injector) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\injector_init.py", line 811, in get_instance return provider.get(injector) ^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\injector_init.py", line 264, in get return injector.create_object(self.cls) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\injector_init.py", line 998, in create_object self.call_with_injection(init, self_=instance, kwargs=additional_kwargs) File "C:\Romanzo\env1\Lib\site-packages\injector_init_.py", line 1031, in call_with_injection dependencies = self.args_to_inject( ^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\injector_init_.py", line 91, in wrapper return function(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\injector_init_.py", line 1079, in args_to_inject instance: Any = self.get(interface) ^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\injector_init_.py", line 91, in wrapper return function(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\injector_init_.py", line 974, in get provider_instance = scope_instance.get(interface, binding.provider) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\injector_init_.py", line 91, in wrapper return function(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\injector_init_.py", line 800, in get instance = self.get_instance(key, provider, self.injector) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\injector_init.py", line 811, in get_instance return provider.get(injector) ^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\injector_init.py", line 264, in get return injector.create_object(self.cls) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\injector_init.py", line 998, in create_object self.call_with_injection(init, self_=instance, kwargs=additional_kwargs) File "C:\Romanzo\env1\Lib\site-packages\injector_init_.py", line 1040, in call_with_injection return callable(*full_args, **dependencies) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\private_gpt\components\vector_store\vector_store_component.py", line 120, in init QdrantVectorStore( File "C:\Romanzo\env1\Lib\site-packages\llama_index\vector_stores\qdrant\base.py", line 145, in init self._collection_initialized = self._collection_exists(collection_name) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\llama_index\vector_stores\qdrant\base.py", line 423, in _collection_exists self._client.get_collection(collection_name) File "C:\Romanzo\env1\Lib\site-packages\qdrant_client\qdrant_client.py", line 1532, in get_collection return self._client.get_collection(collection_name=collection_name, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\qdrant_client\qdrant_remote.py", line 1963, in get_collection result: Optional[types.CollectionInfo] = self.http.collections_api.get_collection( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\qdrant_client\http\api\collections_api.py", line 1262, in get_collection return self._build_for_get_collection( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\qdrant_client\http\api\collections_api.py", line 377, in build_for_get_collection return self.api_client.request( ^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\qdrant_client\http\api_client.py", line 74, in request return self.send(request, type) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\qdrant_client\http\api_client.py", line 91, in send response = self.middleware(request, self.send_inner) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\qdrant_client\http\api_client.py", line 200, in call return call_next(request) ^^^^^^^^^^^^^^^^^^ File "C:\Romanzo\env1\Lib\site-packages\qdrant_client\http\api_client.py", line 103, in send_inner raise ResponseHandlingException(e) qdrant_client.http.exceptions.ResponseHandlingException: [Errno 11001] getaddrinfo failed make: *** [Makefile:36: run] Error 1

I have played with multiple YAML configurations including separating the URL and the PORT and using HTTPS = True. Same result everytime. Thanks, Gabe

QuantumNtangled avatar Apr 24 '24 00:04 QuantumNtangled

instead of settings.yaml try putting those in settings-ollama.yaml

vectorstore: database: qdrant

nodestore: database: postgres

qdrant: url: "myinstance1.us-east4-0.gcp.cloud.qdrant.io:6333" api_key: "yB5H0osupersecret"

bhupendra441 avatar Apr 24 '24 03:04 bhupendra441

I am getting further moving it there. Getting a max new threads issue with the Qdrant Client: qdrant_client\http\api_client.py", line 96, in send raise ResponseHandlingException(e) qdrant_client.http.exceptions.ResponseHandlingException: 1 validation error for ParsingModel[InlineResponse2005] (for parse_as_type) obj.result.config.optimizer_config.max_optimization_threads Input should be a valid integer [type=int_type, input_value=None, input_type=NoneType] For further information visit https://errors.pydantic.dev/2.5/v/int_type make: *** [Makefile:36: run] Error 1

I am going to mess around with different configurations. I turned the thread checker to false in the settings.py file, with no resolution. Flipped it back and trying a few more things.

QuantumNtangled avatar Apr 24 '24 10:04 QuantumNtangled

I've just pulled the current code to build a fresh server and it breaks Qdrant external server integration.

qdrant_client.http.exceptions.ResponseHandlingException: 1 validation error for ParsingModel[InlineResponse2005] (for parse_as_type) obj.result.config.optimizer_config.max_optimization_threads Input should be a valid integer [type=int_type, input_value=None, input_type=NoneType] For further information visit https://errors.pydantic.dev/2.5/v/int_type make: *** [Makefile:36: run] Error 1

Any updates on this?.....Many thanks in advance!!!

apulache avatar May 03 '24 19:05 apulache

Same here 2 validation errors for ParsingModel[InlineResponse20015] (for parse_as_type) obj.result.0.order_value Extra inputs are not permitted [type=extra_forbidden, input_value=None, input_type=NoneType] For further information visit https://errors.pydantic.dev/2.5/v/extra_forbidden obj.result.1.order_value Extra inputs are not permitted [type=extra_forbidden, input_value=None, input_type=NoneType] For further information visit https://errors.pydantic.dev/2.5/v/extra_forbidden

mrepetto94 avatar Jun 11 '24 13:06 mrepetto94

First of all, can you pull new changes? We've updated Qdrant dependencies :) Talking about Qdrant cloud topic, I've used a couple days ago without bugs. It seems like you don't have connection to the cluster. Can you try to connect using raw QdrantClient like this doc example.

jaluma avatar Jul 10 '24 11:07 jaluma