community[patch]: add support for similarity_score_threshold search in… (#20852)

See
https://github.com/langchain-ai/langchain/issues/20600#issuecomment-2075569338
for details.

@chrislrobert
This commit is contained in:
Massimiliano Pronesti 2024-04-24 21:14:33 +02:00 committed by GitHub
parent 87d31a3ec0
commit 8d1167b32f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -479,7 +479,7 @@ class AzureSearch(VectorStore):
def hybrid_search_with_score( def hybrid_search_with_score(
self, query: str, k: int = 4, filters: Optional[str] = None self, query: str, k: int = 4, filters: Optional[str] = None
) -> List[Tuple[Document, float]]: ) -> List[Tuple[Document, float]]:
"""Return docs most similar to query with an hybrid query. """Return docs most similar to query with a hybrid query.
Args: Args:
query: Text to look up documents similar to. query: Text to look up documents similar to.
@ -558,7 +558,7 @@ class AzureSearch(VectorStore):
def semantic_hybrid_search_with_score_and_rerank( def semantic_hybrid_search_with_score_and_rerank(
self, query: str, k: int = 4, filters: Optional[str] = None self, query: str, k: int = 4, filters: Optional[str] = None
) -> List[Tuple[Document, float, float]]: ) -> List[Tuple[Document, float, float]]:
"""Return docs most similar to query with an hybrid query. """Return docs most similar to query with a hybrid query.
Args: Args:
query: Text to look up documents similar to. query: Text to look up documents similar to.
@ -702,7 +702,12 @@ class AzureSearchVectorStoreRetriever(BaseRetriever):
if "search_type" in values: if "search_type" in values:
search_type = values["search_type"] search_type = values["search_type"]
if search_type not in ( if search_type not in (
allowed_search_types := ("similarity", "hybrid", "semantic_hybrid") allowed_search_types := (
"similarity",
"similarity_score_threshold",
"hybrid",
"semantic_hybrid",
)
): ):
raise ValueError( raise ValueError(
f"search_type of {search_type} not allowed. Valid values are: " f"search_type of {search_type} not allowed. Valid values are: "
@ -718,6 +723,13 @@ class AzureSearchVectorStoreRetriever(BaseRetriever):
) -> List[Document]: ) -> List[Document]:
if self.search_type == "similarity": if self.search_type == "similarity":
docs = self.vectorstore.vector_search(query, k=self.k, **kwargs) docs = self.vectorstore.vector_search(query, k=self.k, **kwargs)
elif self.search_type == "similarity_score_threshold":
docs = [
doc
for doc, _ in self.vectorstore.similarity_search_with_relevance_scores(
query, k=self.k, **kwargs
)
]
elif self.search_type == "hybrid": elif self.search_type == "hybrid":
docs = self.vectorstore.hybrid_search(query, k=self.k, **kwargs) docs = self.vectorstore.hybrid_search(query, k=self.k, **kwargs)
elif self.search_type == "semantic_hybrid": elif self.search_type == "semantic_hybrid":