From bf402f902ef3e9344d20b5a5c2ad5b795fc2ccf7 Mon Sep 17 00:00:00 2001 From: Valentin <75266614+v4lentin1879@users.noreply.github.com> Date: Mon, 1 Jul 2024 18:33:45 +0200 Subject: [PATCH] community: Fix LanceDB similarity search bug (#23591) **Description:** LanceDB didn't allow querying the database using similarity score thresholds because the metrics value was missing. This PR simply fixes that bug. **Issue:** not applicable **Dependencies:** none **Twitter handle:** not available --------- Co-authored-by: ccurme --- .../vectorstores/lancedb.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/libs/community/langchain_community/vectorstores/lancedb.py b/libs/community/langchain_community/vectorstores/lancedb.py index 9d329df5ad5..d790fa169cc 100644 --- a/libs/community/langchain_community/vectorstores/lancedb.py +++ b/libs/community/langchain_community/vectorstores/lancedb.py @@ -372,11 +372,19 @@ class LanceDB(VectorStore): prefilter = kwargs.get("prefilter", False) query_type = kwargs.get("query_type", "vector") - lance_query = ( - tbl.search(query=query, vector_column_name=self._vector_key) - .limit(k) - .where(filter, prefilter=prefilter) - ) + if metrics := kwargs.get("metrics"): + lance_query = ( + tbl.search(query=query, vector_column_name=self._vector_key) + .limit(k) + .metric(metrics) + .where(filter, prefilter=prefilter) + ) + else: + lance_query = ( + tbl.search(query=query, vector_column_name=self._vector_key) + .limit(k) + .where(filter, prefilter=prefilter) + ) if query_type == "hybrid" and self._reranker is not None: lance_query.rerank(reranker=self._reranker)