vensonaa commited on
Commit
d2fa584
·
verified ·
1 Parent(s): 5799ec4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +76 -76
app.py CHANGED
@@ -1,76 +1,76 @@
1
- import streamlit as st
2
- import os
3
- from langchain_nvidia_ai_endpoints import NVIDIAEmbeddings, ChatNVIDIA
4
- from langchain_community.document_loaders import WebBaseLoader
5
- from langchain.embeddings import OllamaEmbeddings
6
- from langchain.text_splitter import RecursiveCharacterTextSplitter
7
- from langchain.chains.combine_documents import create_stuff_documents_chain
8
- from langchain_core.prompts import ChatPromptTemplate
9
- from langchain_core.output_parsers import StrOutputParser
10
- from langchain.chains import create_retrieval_chain
11
- from langchain_community.vectorstores import FAISS
12
- from langchain_community.document_loaders import PyPDFDirectoryLoader
13
- import time
14
-
15
- from dotenv import load_dotenv
16
- load_dotenv()
17
-
18
- ## load the Groq API key
19
- os.environ['NVIDIA_API_KEY']=os.getenv("NVIDIA_API_KEY")
20
-
21
- def vector_embedding():
22
-
23
- if "vectors" not in st.session_state:
24
-
25
- st.session_state.embeddings=NVIDIAEmbeddings()
26
- st.session_state.loader=PyPDFDirectoryLoader("./us_census") ## Data Ingestion
27
- st.session_state.docs=st.session_state.loader.load() ## Document Loading
28
- st.session_state.text_splitter=RecursiveCharacterTextSplitter(chunk_size=700,chunk_overlap=50) ## Chunk Creation
29
- st.session_state.final_documents=st.session_state.text_splitter.split_documents(st.session_state.docs[:30]) #splitting
30
- print("hEllo")
31
- st.session_state.vectors=FAISS.from_documents(st.session_state.final_documents,st.session_state.embeddings) #vector OpenAI embeddings
32
-
33
-
34
- st.title("Nvidia NIM Demo")
35
- llm = ChatNVIDIA(model="meta/llama3-70b-instruct")
36
-
37
-
38
- prompt=ChatPromptTemplate.from_template(
39
- """
40
- Answer the questions based on the provided context only.
41
- Please provide the most accurate response based on the question
42
- <context>
43
- {context}
44
- <context>
45
- Questions:{input}
46
-
47
- """
48
- )
49
-
50
-
51
- prompt1=st.text_input("Enter Your Question From Doduments")
52
-
53
-
54
- if st.button("Documents Embedding"):
55
- vector_embedding()
56
- st.write("Vector Store DB Is Ready")
57
-
58
- import time
59
-
60
-
61
-
62
- if prompt1:
63
- document_chain=create_stuff_documents_chain(llm,prompt)
64
- retriever=st.session_state.vectors.as_retriever()
65
- retrieval_chain=create_retrieval_chain(retriever,document_chain)
66
- start=time.process_time()
67
- response=retrieval_chain.invoke({'input':prompt1})
68
- print("Response time :",time.process_time()-start)
69
- st.write(response['answer'])
70
-
71
- # With a streamlit expander
72
- with st.expander("Document Similarity Search"):
73
- # Find the relevant chunks
74
- for i, doc in enumerate(response["context"]):
75
- st.write(doc.page_content)
76
- st.write("--------------------------------")
 
1
+ import streamlit as st
2
+ import os
3
+ from langchain_nvidia_ai_endpoints import NVIDIAEmbeddings, ChatNVIDIA
4
+ from langchain_community.document_loaders import WebBaseLoader
5
+ from langchain.embeddings import OllamaEmbeddings
6
+ from langchain.text_splitter import RecursiveCharacterTextSplitter
7
+ from langchain.chains.combine_documents import create_stuff_documents_chain
8
+ from langchain_core.prompts import ChatPromptTemplate
9
+ from langchain_core.output_parsers import StrOutputParser
10
+ from langchain.chains import create_retrieval_chain
11
+ from langchain_community.vectorstores import FAISS
12
+ from langchain_community.document_loaders import PyPDFDirectoryLoader
13
+ import time
14
+
15
+ from dotenv import load_dotenv
16
+ load_dotenv()
17
+
18
+ ## load the Groq API key
19
+ os.environ['NVIDIA_API_KEY']=os.getenv("NVIDIA_API_KEY")
20
+
21
+ def vector_embedding():
22
+
23
+ if "vectors" not in st.session_state:
24
+
25
+ st.session_state.embeddings=NVIDIAEmbeddings()
26
+ st.session_state.loader=PyPDFDirectoryLoader("./us_census") ## Data Ingestion
27
+ st.session_state.docs=st.session_state.loader.load() ## Document Loading
28
+ st.session_state.text_splitter=RecursiveCharacterTextSplitter(chunk_size=700,chunk_overlap=50) ## Chunk Creation
29
+ st.session_state.final_documents=st.session_state.text_splitter.split_documents(st.session_state.docs[:30]) #splitting
30
+ print("hEllo")
31
+ st.session_state.vectors=FAISS.from_documents(st.session_state.final_documents,st.session_state.embeddings) #vector OpenAI embeddings
32
+
33
+
34
+ st.title("Nvidia NIM Demo")
35
+ llm = ChatNVIDIA(model="meta/llama3-70b-instruct")
36
+
37
+
38
+ prompt=ChatPromptTemplate.from_template(
39
+ """
40
+ Answer the questions based on the provided context only.
41
+ Please provide the most accurate response based on the question
42
+ <context>
43
+ {context}
44
+ <context>
45
+ Questions:{input}
46
+
47
+ """
48
+ )
49
+
50
+
51
+ prompt1=st.text_input("Enter Your Question From Documents")
52
+
53
+
54
+ if st.button("Documents Embedding"):
55
+ vector_embedding()
56
+ st.write("Vector Store DB Is Ready")
57
+
58
+ import time
59
+
60
+
61
+
62
+ if prompt1:
63
+ document_chain=create_stuff_documents_chain(llm,prompt)
64
+ retriever=st.session_state.vectors.as_retriever()
65
+ retrieval_chain=create_retrieval_chain(retriever,document_chain)
66
+ start=time.process_time()
67
+ response=retrieval_chain.invoke({'input':prompt1})
68
+ print("Response time :",time.process_time()-start)
69
+ st.write(response['answer'])
70
+
71
+ # With a streamlit expander
72
+ with st.expander("Document Similarity Search"):
73
+ # Find the relevant chunks
74
+ for i, doc in enumerate(response["context"]):
75
+ st.write(doc.page_content)
76
+ st.write("--------------------------------")