CoolFace
Apppublic

Alimustoofaa/PDF_QuestionAnswer

sourceHugging Faceopenrailupdated 3y agoView on Hugging Face
0likes
process.py46 linesDownload Raw Back to root
1import os2 3# Import langchain lib4from langchain.llms import OpenAI5from langchain.chains import RetrievalQA6from langchain.vectorstores import Chroma7from langchain.embeddings.openai import OpenAIEmbeddings8from langchain.text_splitter import CharacterTextSplitter9from langchain.document_loaders import UnstructuredPDFLoader10from langchain.chains.question_answering import load_qa_chain11 12def load_pdf(pdf_path):13	loader = UnstructuredPDFLoader(pdf_path)14	pages = loader.load()15	return pages16 17def update_openai_key(openai_key):18	os.environ['OPENAI_API_KEY'] = openai_key19 20def texts_splitter(pages):21	text_splitter = CharacterTextSplitter(chunk_size=3000, chunk_overlap=20)22	texts = text_splitter.split_documents(pages)23	return texts24 25def qa_langchain(docsearch):26	qa_chain = load_qa_chain(OpenAI(temperature=0), chain_type="stuff")27	qa = RetrievalQA(combine_documents_chain=qa_chain, retriever=docsearch.as_retriever())28	return qa29 30def main_process(pdf_path, question, openai_key):31	# Update OpenAI key32	update_openai_key(openai_key)33	# load PDF34	pages = load_pdf(pdf_path)35	# Text splitter36	texts = texts_splitter(pages)37 38	# define embeddings39	embeddings = OpenAIEmbeddings()40	# print(embeddings)41	docsearch = Chroma.from_documents(texts, embeddings)42 43	qa = qa_langchain(docsearch)44	answer = qa.run(question)45	return answer46