zylon-ai / private-gpt

Interact with your documents using the power of GPT, 100% privately, no data leaks

Home Page:https://privategpt.dev

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Connectivity to QDrant Cloud Issue

QuantumNtangled opened this issue · comments

commented

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

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"

commented

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.

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!!!

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

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.