File size: 1,314 Bytes
a33f703
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75e3182
 
 
 
 
 
 
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
39
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"<|system|>\nYou are a intelligent chatbot and expertise in {chunks[0].page_content}.</s>\n<|user|>\n{query}.\n<|assistant|>"
    # 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