提案
@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.")
2条答案
按热度按时间mgdq6dx11#
将新的枚举值添加到
MultiVectorRetriever.SearchType
中。waxmsbnn2#
提交PR:#23539 以解决此问题