import langchain from langchain import HuggingFaceHub from langchain.embeddings import HuggingFaceHubEmbeddings from langchain.document_loaders import PyPDFLoader from langchain.vectorstores import FAISS from langchain.chains import ConversationalRetrievalChain from langchain.chains.question_answering import load_qa_chain def llm_conv(filename): document_loader = PyPDFLoader(filename) chunks = document_loader.load_and_split() embeddings = HuggingFaceHubEmbeddings() db = FAISS.from_documents(chunks, embeddings) return db, chunks def similarity(filename, repo_id, model_kwargs, query): db, chunks = llm_conv(filename) docs = db.similarity_search(query) chain = load_qa_chain( HuggingFaceHub( repo_id=repo_id, model_kwargs=model_kwargs ), chain_type="stuff" ) question = f""" Answer the question based on the context, if you don't know then output "Out of Context". Context: \n {chunks[0].page_content} \n Question: \n {query} \n Answer: """ result = chain.run( input_documents=docs, question=question ) return result