File size: 1,941 Bytes
a2cccdb
8dfaca9
 
 
 
 
 
 
a2cccdb
8dfaca9
3d39149
8dfaca9
 
 
 
 
9bf72c1
8dfaca9
 
3d39149
8dfaca9
3d39149
 
8dfaca9
3d39149
9bf72c1
3d39149
5b0f27d
3d39149
 
 
 
8dfaca9
5b0f27d
8dfaca9
3d39149
8dfaca9
3d39149
8dfaca9
 
3d39149
8dfaca9
5b0f27d
 
3d39149
8dfaca9
3d39149
5b0f27d
8dfaca9
a2cccdb
8dfaca9
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
40
41
42
43
44
45
46
47
48
49
50
51
import streamlit as st
from langchain_community.document_loaders.pdf import PyPDFDirectoryLoader
from langchain.text_splitter import CharacterTextSplitter
from langchain_community.embeddings import HuggingFaceInstructEmbeddings
from langchain_community.vectorstores import FAISS
from langchain.chains import ConversationalRetrievalChain
from langchain_community.llms import HuggingFaceHub
from langchain.memory import ConversationBufferMemory

def make_vectorstore(embeddings):
    
    loader = PyPDFDirectoryLoader("data")   
    documents = loader.load()
    text_splitter = CharacterTextSplitter(chunk_size=1400, chunk_overlap=0)
    texts = text_splitter.split_documents(documents)
    docsearch = FAISS.from_documents(texts, embeddings)
    
    return docsearch

def get_qa(vectorstore, llmb):

    qa = RetrievalQA.from_chain_type(
        llm=llmb,
        chain_type="stuff", 
        retriever=vectorstore.as_retriever())
    
    return qa

def get_response(qa, query):
    
    response = qa.run(query)
    
    return response

def main():
    
    st.title("BetterZila RAG Enabled LLM")
    llm = HuggingFaceHub(repo_id="google/flan-t5-xxl", model_kwargs={"temperature":0.5, "max_length":512}, huggingfacehub_api_token = st.secrets["hf_token"])
    embeddings = HuggingFaceInstructEmbeddings(model_name="google/t5-v1_1-xl", model_kwargs = {'device': 'cpu'})
    vectorstore = make_vectorstore(embeddings)
    qa = get_qa(vectorstore, llm)
    queries = ["Can you give me an example from history where the enemy was crushed totally from the book?", "What's the point of making myself less accessible?", "Can you tell me the story of Queen Elizabeth I from this 48 laws of power book?"]
    for query in queries:
        st.subheader(f"Query: {query}")
        response = get_response(qa, query)
        st.write(query)
        st.write(response)
    st.success("Responses generated!")
    
if __name__ == "__main__":
    main()