|
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 |
|
|
|
|