Download qa_utils.py from engrtm/pdfQA: direct link, hf CLI and curl.
- Browser
- Download file 888 Bytes
-
https://huggingface.co/spaces/engrtm/pdfQA/resolve/main/qa_utils.py
- Command line
-
hf download hf://spaces/engrtm/pdfQA/qa_utils.py
-
curl -L -o qa_utils.py https://huggingface.co/spaces/engrtm/pdfQA/resolve/main/qa_utils.py
888 Bytes
| import os | |
| from langchain.text_splitter import RecursiveCharacterTextSplitter | |
| from langchain.vectorstores import FAISS | |
| from langchain.embeddings import OpenAIEmbeddings | |
| from langchain.chains.question_answering import load_qa_chain | |
| from langchain.llms import OpenAI | |
| # Set API key from environment | |
| os.environ["OPENAI_API_KEY"] = os.getenv("OPENAI_API_KEY") | |
| def split_text(text): | |
| splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200) | |
| return splitter.split_text(text) | |
| def create_vector_store(chunks): | |
| embeddings = OpenAIEmbeddings() | |
| vectorstore = FAISS.from_texts(chunks, embedding=embeddings) | |
| return vectorstore | |
| def answer_question(vectorstore, query): | |
| docs = vectorstore.similarity_search(query) | |
| llm = OpenAI(temperature=0) | |
| chain = load_qa_chain(llm, chain_type="stuff") | |
| return chain.run(input_documents=docs, question=query) | |