Spaces:
Sleeping
Sleeping
from langchain.vectorstores import VectorStore | |
from langchain.schema.retriever import BaseRetriever | |
from langchain_core.documents import Document | |
from typing import List | |
from langchain.callbacks.manager import CallbackManagerForRetrieverRun | |
from langchain_core.documents import Document | |
from langchain_core.runnables import chain | |
class CustomRetriever(BaseRetriever): | |
vectorstore:VectorStore | |
thold:float | |
def _get_relevant_documents( | |
self, query: str, *, run_manager: CallbackManagerForRetrieverRun | |
) -> List[Document]: | |
docs, scores = zip(*self.vectorstore.similarity_search_with_relevance_scores(query, callbacks=run_manager.get_child()))#get_relevant_documents(query, callbacks=run_manager.get_child()) | |
result=[] | |
for doc, score in zip(docs, scores): | |
if score>self.thold: | |
doc.metadata["score"] = score | |
result.append(doc) | |
if len(result)==0: | |
result.append(Document(metadata={}, page_content='No data')) | |
return result |