langchain 为MultiVectorRetriever类添加"similarity_score_threshold"选项,

l7wslrjt  于 5个月前  发布在  其他
关注(0)|答案(2)|浏览(55)

提案

@baptiste-pasquier 提出的新功能如下:

已检查

  • 我搜索了现有的想法,没有找到类似的一个
  • 我添加了一个非常描述性的标题
  • 我清楚地描述了这个功能请求及其动机

功能请求

MultiVectorRetriever 中添加一个过滤掉相似度分数低于 score_threshold 的文档的功能。

动机

VectorStoreRetriever 基类有一个 "similarity_score_threshold" 选项用于 search_type,它通过调用 .similarity_search_with_relevance_scores() 方法而不是 .similarity_search() 来添加过滤掉任何相似度分数低于 score_threshold 的文档的功能。
这个功能在 MultiVectorRetriever 类中尚未实现。

建议(如果适用)

_get_relevant_documents 方法中,替换 langchain/libs/langchain/langchain/retrievers/multi_vector.py 文件中的以下内容:

|  | ifself.search_type==SearchType.mmr: |
|  | sub_docs=self.vectorstore.max_marginal_relevance_search( |
|  | query, **self.search_kwargs |
|  | ) |
|  | else: |
|  | sub_docs=self.vectorstore.similarity_search(query, **self.search_kwargs) |

用以下内容替换:


# 在 `VectorStoreRetriever` 基类中:

# langchain/libs/core/langchain_core/vectorstores.py 文件中的以下内容:

if self.search_type == "similarity":
    docs = self.vectorstore.similarity_search(query, **self.search_kwargs)
elif self.search_type == "similarity_score_threshold":
    docs_and_similarities = (
        self.vectorstore.similarity_search_with_relevance_scores(query, **self.search_kwargs)
    )
    docs = [doc for doc, _ in docs_and_similarities]
elif self.search_type == "mmr":
    docs = self.vectorstore.max_marginal_relevance_search(query, **self.search_kwargs)
else:
    raise ValueError(f"{self.search_type} of search_type not allowed.")
mgdq6dx1

mgdq6dx11#

将新的枚举值添加到MultiVectorRetriever.SearchType中。

waxmsbnn

waxmsbnn2#

提交PR:#23539 以解决此问题

相关问题