File size: 1,160 Bytes
a33f703
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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