From 6a3ceaa3771a725046af3c02cf4c15a3e18ec54a Mon Sep 17 00:00:00 2001 From: Jiayao Yu Date: Sat, 3 Jun 2023 16:57:00 -0700 Subject: [PATCH] Support similarity_score_threshold retrieval with Chroma (#5655) Fixes https://github.com/hwchase17/langchain/issues/5067 Verified the following code now works correctly: ``` db = Chroma(persist_directory=index_directory(index_name), embedding_function=embeddings) retriever = db.as_retriever(search_type="similarity_score_threshold", search_kwargs={"score_threshold": 0.4}) docs = retriever.get_relevant_documents(query) ``` --- langchain/vectorstores/chroma.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/langchain/vectorstores/chroma.py b/langchain/vectorstores/chroma.py index 646a1508..b1927e41 100644 --- a/langchain/vectorstores/chroma.py +++ b/langchain/vectorstores/chroma.py @@ -232,6 +232,14 @@ class Chroma(VectorStore): return _results_to_docs_and_scores(results) + def _similarity_search_with_relevance_scores( + self, + query: str, + k: int = 4, + **kwargs: Any, + ) -> List[Tuple[Document, float]]: + return self.similarity_search_with_score(query, k) + def max_marginal_relevance_search_by_vector( self, embedding: List[float],