File size: 1,349 Bytes
bd22efc
 
 
 
 
 
 
 
401605a
e577c1e
6fb6bdd
21a4b65
8976c33
6fb6bdd
e4a31f9
bd22efc
 
 
 
 
 
 
e577c1e
 
 
 
 
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
from langchain.document_loaders import PyPDFDirectoryLoader
from langchain.vectorstores import Chroma
from langchain.embeddings.huggingface import HuggingFaceEmbeddings
from langchain import HuggingFaceHub
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.chains.question_answering import load_qa_chain
import streamlit as st
from langchain.chains import RetrievalQA
import os 
query = st.text_input("Ask a question: ")
@st.cache_resource
def llm():
    return HuggingFaceHub(repo_id="google/flan-t5-small", model_kwargs={"temperature":0,"max_length":200}, huggingfacehub_api_token=os.getenv("API_TOKEN")) # type: ignore
@st.cache_resource
def qa(query):
    pdf_folder_path = "./PDFfiles"
    loader = PyPDFDirectoryLoader(pdf_folder_path)
    docs = loader.load()
    text_splitter = RecursiveCharacterTextSplitter (chunk_size=1000, chunk_overlap=200)
    texts = text_splitter.split_documents(docs)
    embeddings = HuggingFaceEmbeddings()
    vectordb = Chroma.from_documents(documents=texts,embedding=embeddings)
    qa = RetrievalQA.from_chain_type(llm=llm(), chain_type="stuff",retriever=vectordb.as_retriever(search_type="mmr", search_kwargs={'fetch_k': 30}), return_source_documents=True)
    result = qa({"query": query})
    st.write(result["result"])
    st.write(result["source_documents"][0])
qa(query)