Fix bug in weaviate search method (#3521)
This commit is contained in:
@@ -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
|
||||||
|
|
||||||
@@ -51,7 +51,7 @@ class Weaviate(VectorStoreBase):
|
|||||||
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,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user