From d19c10016650923c17edb9e8d90ea2637f6700ba Mon Sep 17 00:00:00 2001 From: Dhruv Gorasiya <80987415+DhruvGorasiya@users.noreply.github.com> Date: Thu, 16 Oct 2025 21:06:50 -0400 Subject: [PATCH] fix: logical error in Weaviate distance calculation (#27019) Co-authored-by: crazywoola <427733928@qq.com> Co-authored-by: crazywoola <100913391+crazywoola@users.noreply.github.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- api/core/rag/datasource/vdb/weaviate/weaviate_vector.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/api/core/rag/datasource/vdb/weaviate/weaviate_vector.py b/api/core/rag/datasource/vdb/weaviate/weaviate_vector.py index 15207add18..d2d8fcf964 100644 --- a/api/core/rag/datasource/vdb/weaviate/weaviate_vector.py +++ b/api/core/rag/datasource/vdb/weaviate/weaviate_vector.py @@ -347,7 +347,10 @@ class WeaviateVector(BaseVector): for obj in res.objects: properties = dict(obj.properties or {}) text = properties.pop(Field.TEXT_KEY.value, "") - distance = (obj.metadata.distance if obj.metadata else None) or 1.0 + if obj.metadata and obj.metadata.distance is not None: + distance = obj.metadata.distance + else: + distance = 1.0 score = 1.0 - distance if score > score_threshold: