mirror of
https://github.com/hwchase17/langchain.git
synced 2025-09-20 01:54:14 +00:00
Fix normalizing the cosine distance in Qdrant (#12934)
Qdrant was incorrectly calculating the cosine similarity and returning `0.0` for the best match, instead of `1.0`. Internally Qdrant returns a cosine score from `-1.0` (worst match) to `1.0` (best match), and the current formula reflects it.
This commit is contained in:
@@ -1837,6 +1837,11 @@ class Qdrant(VectorStore):
|
|||||||
)
|
)
|
||||||
return qdrant
|
return qdrant
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _cosine_relevance_score_fn(distance: float) -> float:
|
||||||
|
"""Normalize the distance to a score on a scale [0, 1]."""
|
||||||
|
return (distance + 1.0) / 2.0
|
||||||
|
|
||||||
def _select_relevance_score_fn(self) -> Callable[[float], float]:
|
def _select_relevance_score_fn(self) -> Callable[[float], float]:
|
||||||
"""
|
"""
|
||||||
The 'correct' relevance function
|
The 'correct' relevance function
|
||||||
|
Reference in New Issue
Block a user