Fix bug in weaviate search method (#3521)

This commit is contained in:
Matan Cohen
2025-10-01 14:24:03 +05:30
committed by GitHub
parent cbf56477be
commit 517a266d74
+13 -9
View File
@@ -1,9 +1,9 @@
import logging import logging
import uuid import uuid
from typing import Dict, List, Mapping, Optional from typing import Dict, List, Mapping, Optional
from urllib.parse import urlparse
from pydantic import BaseModel from pydantic import BaseModel
from urllib.parse import urlparse
try: try:
import weaviate import weaviate
@@ -13,7 +13,7 @@ except ImportError:
) )
import weaviate.classes.config as wvcc import weaviate.classes.config as wvcc
from weaviate.classes.init import Auth, AdditionalConfig, Timeout from weaviate.classes.init import AdditionalConfig, Auth, Timeout
from weaviate.classes.query import Filter, MetadataQuery from weaviate.classes.query import Filter, MetadataQuery
from weaviate.util import get_valid_uuid from weaviate.util import get_valid_uuid
@@ -48,10 +48,10 @@ class Weaviate(VectorStoreBase):
auth_config (dict, optional): Authentication configuration for Weaviate. Defaults to None. auth_config (dict, optional): Authentication configuration for Weaviate. Defaults to None.
additional_headers (dict, optional): Additional headers for requests. Defaults to None. additional_headers (dict, optional): Additional headers for requests. Defaults to None.
""" """
if "localhost" in cluster_url: if "localhost" in cluster_url:
self.client = weaviate.connect_to_local(headers=additional_headers) self.client = weaviate.connect_to_local(headers=additional_headers)
elif auth_client_secret: elif auth_client_secret:
self.client = weaviate.connect_to_wcs( self.client = weaviate.connect_to_weaviate_cloud(
cluster_url=cluster_url, cluster_url=cluster_url,
auth_credentials=Auth.api_key(auth_client_secret), auth_credentials=Auth.api_key(auth_client_secret),
headers=additional_headers, headers=additional_headers,
@@ -76,7 +76,7 @@ class Weaviate(VectorStoreBase):
grpc_secure, grpc_secure,
headers=additional_headers, headers=additional_headers,
skip_init_checks=True, skip_init_checks=True,
additional_config=AdditionalConfig(timeout=Timeout(init=2.0)) additional_config=AdditionalConfig(timeout=Timeout(init=2.0)),
) )
self.collection_name = collection_name self.collection_name = collection_name
@@ -208,12 +208,16 @@ class Weaviate(VectorStoreBase):
del payload[id_field] del payload[id_field]
payload["id"] = str(obj.uuid).split("'")[0] # Include the id in the payload payload["id"] = str(obj.uuid).split("'")[0] # Include the id in the payload
if obj.metadata.distance is not None:
score = 1 - obj.metadata.distance # Convert distance to similarity score
elif obj.metadata.score is not None:
score = obj.metadata.score
else:
score = 1.0 # Default score if none provided
results.append( results.append(
OutputData( OutputData(
id=str(obj.uuid), id=str(obj.uuid),
score=1 score=score,
if obj.metadata.distance is None
else 1 - obj.metadata.distance, # Convert distance to score
payload=payload, payload=payload,
) )
) )