Nikhil0987 commited on
Commit
2b9a300
·
verified ·
1 Parent(s): 1fa5e9c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +76 -0
app.py CHANGED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ rom langchain.document_loaders import DirectoryLoader
2
+ from langchain.text_splitter import CharacterTextSplitter
3
+ import os
4
+ import pinecone
5
+ from langchain.vectorstores import Pinecone
6
+ from langchain.embeddings.openai import OpenAIEmbeddings
7
+ from langchain.chains import RetrievalQA
8
+ from langchain.chat_models import ChatOpenAI
9
+ import streamlit as st
10
+ from dotenv import load_dotenv
11
+
12
+ load_dotenv()
13
+
14
+
15
+ PINECONE_API_KEY = os.getenv('PINECONE_API_KEY')
16
+ PINECONE_ENV = os.getenv('PINECONE_ENV')
17
+ OPENAI_API_KEY = os.getenv('OPENAI_API_KEY')
18
+
19
+ os.environ['OPENAI_API_KEY'] = OPENAI_API_KEY
20
+
21
+
22
+ def doc_preprocessing():
23
+ loader = DirectoryLoader(
24
+ 'data/',
25
+ glob='**/*.pdf', # only the PDFs
26
+ show_progress=True
27
+ )
28
+ docs = loader.load()
29
+ text_splitter = CharacterTextSplitter(
30
+ chunk_size=1000,
31
+ chunk_overlap=0
32
+ )
33
+ docs_split = text_splitter.split_documents(docs)
34
+ return docs_split
35
+
36
+ @st.cache_resource
37
+ def embedding_db():
38
+ # we use the openAI embedding model
39
+ embeddings = OpenAIEmbeddings()
40
+ pinecone.init(
41
+ api_key=PINECONE_API_KEY,
42
+ environment=PINECONE_ENV
43
+ )
44
+ docs_split = doc_preprocessing()
45
+ doc_db = Pinecone.from_documents(
46
+ docs_split,
47
+ embeddings,
48
+ index_name='langchain-demo-indexes'
49
+ )
50
+ return doc_db
51
+
52
+ llm = ChatOpenAI()
53
+ doc_db = embedding_db()
54
+
55
+ def retrieval_answer(query):
56
+ qa = RetrievalQA.from_chain_type(
57
+ llm=llm,
58
+ chain_type='stuff',
59
+ retriever=doc_db.as_retriever(),
60
+ )
61
+ query = query
62
+ result = qa.run(query)
63
+ return result
64
+
65
+ def main():
66
+ st.title("Question and Answering App powered by LLM and Pinecone")
67
+
68
+ text_input = st.text_input("Ask your query...")
69
+ if st.button("Ask Query"):
70
+ if len(text_input)>0:
71
+ st.info("Your Query: " + text_input)
72
+ answer = retrieval_answer(text_input)
73
+ st.success(answer)
74
+
75
+ if __name__ == "__main__":
76
+ main()