检查其他资源
- 为这个问题添加了一个非常描述性的标题。
- 使用集成搜索在LangChain文档中进行了搜索。
- 使用GitHub搜索查找类似的问题,但没有找到。
- 我确信这是LangChain中的一个bug,而不是我的代码。
- 通过更新到LangChain的最新稳定版本(或特定集成包)无法解决此bug。
示例代码
from langchain_community.cross_encoders import HuggingFaceCrossEncoder
re_rank_model_name = "amberoad/bert-multilingual-passage-reranking-msmarco"
model_kwargs = {
'device': device,
'trust_remote_code':True,
}
re_rank_model = HuggingFaceCrossEncoder(model_name=re_rank_model_name,
model_kwargs = model_kwargs,
)
from langchain.retrievers.document_compressors import CrossEncoderReranker
compressor = CrossEncoderReranker(model=re_rank_model, top_n=3)
compression_retriever = ContextualCompressionRetriever(
base_compressor=compressor, base_retriever=retriever,
)
错误信息和堆栈跟踪(如果适用)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
File */lib/python3.10/site-packages/langchain_core/retrievers.py:194, in BaseRetriever.invoke(self, input, config, **kwargs)
175 """Invoke the retriever to get relevant documents.
176
177 Main entry point for synchronous retriever invocations.
(...)
191 retriever.invoke("query")
192 """
193 config = ensure_config(config)
--> 194 return self.get_relevant_documents(
195 input,
196 callbacks=config.get("callbacks"),
197 tags=config.get("tags"),
198 metadata=config.get("metadata"),
199 run_name=config.get("run_name"),
200 **kwargs,
201 )
File *lib/python3.10/site-packages/langchain_core/_api/deprecation.py:148, in deprecated.<locals>.deprecate.<locals>.warning_emitting_wrapper(*args, **kwargs)
146 warned = True
147 emit_warning()
...
47 docs_with_scores = list(zip(documents, scores))
---> 48 result = sorted(docs_with_scores, key=operator.itemgetter(1), reverse=True)
49 return [doc for doc, _ in result[: self.top_n]]
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
描述
排序时分数传递不正确。分类器为查询和文档之间的不相似性和相似性返回logits。您需要添加一个异常,如果模型产生两个分数,则取中间值,否则保持原样。
这是一个bug吗?
系统信息
系统信息
操作系统:Linux
操作系统版本:#172 -Ubuntu SMP Fri Jul 7 16:10:02 UTC 2023
Python版本:3.10.14(main,Apr 6 2024,18:45:05) [GCC 9.4.0]
软件包信息
langchain_core:0.2.3
langchain:0.2.1
langchain_community:0.2.1
langsmith:0.1.69
langchain_chroma:0.1.1
langchain_openai:0.1.8
langchain_text_splitters:0.2.0
langchainhub:0.1.17
3条答案
按热度按时间wfveoks01#
一些模型,例如
amberoad/bert-multilingual-passage-reranking-msmarco
,提供成对的分数:<不相关的分数,相关的分数>。然而,当前的HuggingFaceCrossEncoder
没有考虑到这对分数。为了解决这个问题,我创建了一个拉取请求,修改编码器只考虑相关的分数。请参考这条评论以获取更多详细信息。
tzcvj98z2#
感谢修复。
7z5jn7bk3#
请保持这个问题打开,直到PR被合并。