我希望能够在使用 SelfQueryRetriever 时获得检索到的文档的相似度分数,如下所示。
我制作了一个自查询检索器,如下所示:
retriever = SelfQueryRetriever.from_llm(
llm = llm,
vectorstore = vectorstore,
document_contents = document_content_description,
metadata_field_info = metadata_field_info,
enable_limit=True,
search_type = "similarity_score_threshold",
search_kwargs={"score_threshold": 0.80, "k": 5},
verbose=True
)
检索器能够按预期检索文档,但我想以某种方式显示检索到的文档的相似度分数。这可以做到吗?如何做到?检索器返回带有 page_content 和元数据键的文档。
参考:如何添加分数 您可以做的是子类
SelfQueryRetriever
并确保分数与文档一起返回。这可以使用 similarity_search_with_score
方法 来完成
from langchain.retrievers.self_query.base import SelfQueryRetriever
from typing import Any, Dict
from typing import Any, Dict
class CustomSelfQueryRetriever(SelfQueryRetriever):
def _get_docs_with_query(
self, query: str, search_kwargs: Dict[str, Any]
) -> List[Document]:
"""Get docs, adding score information."""
docs, scores = zip(
*self.vectorstore.similarity_search_with_score(query, **search_kwargs)
)
for doc, score in zip(docs, scores):
doc.metadata["score"] = score
return docs
retriever = CustomSelfQueryRetriever.from_llm(
llm,
vectorstore,
document_content_description,
metadata_field_info,
)
result = retriever.invoke("Your query)
现在您
Document
元数据包含一个名为 score
的键