Satyam0077 commited on
Commit
43bd5b2
·
verified ·
1 Parent(s): d9d31be

Update streamlit_app.py

Browse files
Files changed (1) hide show
  1. streamlit_app.py +19 -15
streamlit_app.py CHANGED
@@ -5,36 +5,40 @@ import numpy as np
5
  from sentence_transformers import SentenceTransformer
6
  from transformers import pipeline
7
 
8
- # Since quote_embeddings.pkl is in the same directory as this script
9
  EMBEDDING_PATH = "quote_embeddings.pkl"
10
 
11
- # Load saved quotes and embeddings
12
- with open(EMBEDDING_PATH, "rb") as f:
13
- quotes, embeddings = pickle.load(f)
 
 
14
 
15
- # Initialize embedder and FAISS index
16
- embedder = SentenceTransformer('all-MiniLM-L6-v2')
17
 
18
- embeddings = embeddings.astype('float32')
19
- index = faiss.IndexFlatIP(embeddings.shape[1])
20
- faiss.normalize_L2(embeddings)
21
- index.add(embeddings)
 
22
 
23
- # Initialize text generator pipeline
24
- generator = pipeline('text-generation', model='distilgpt2')
 
 
 
 
25
 
26
- # Define RAG search function
27
  def rag_search(query, top_k=3):
28
  q_emb = embedder.encode([query]).astype('float32')
29
  faiss.normalize_L2(q_emb)
30
  scores, indices = index.search(q_emb, top_k)
31
  context = "\n".join([f"{quotes[i]['quote']} — {quotes[i].get('author','Unknown')}" for i in indices[0]])
32
  prompt = f"Answer using these quotes:\n{context}\nQuestion: {query}\nAnswer:"
33
- outputs = generator(prompt, max_length=100, num_return_sequences=1)
34
  answer = outputs[0]['generated_text'].split('Answer:')[-1].strip()
35
  return answer
36
 
37
- # Streamlit UI
38
  st.title("🧠 RAG Quote-Based Q&A App")
39
  user_query = st.text_input("💬 Ask something related to quotes:")
40
 
 
5
  from sentence_transformers import SentenceTransformer
6
  from transformers import pipeline
7
 
 
8
  EMBEDDING_PATH = "quote_embeddings.pkl"
9
 
10
+ @st.cache_resource(show_spinner=False)
11
+ def load_data_and_models():
12
+ # Load quotes and embeddings
13
+ with open(EMBEDDING_PATH, "rb") as f:
14
+ quotes, embeddings = pickle.load(f)
15
 
16
+ # Initialize embedder
17
+ embedder = SentenceTransformer('all-MiniLM-L6-v2')
18
 
19
+ # Prepare FAISS index
20
+ embeddings_np = embeddings.astype('float32')
21
+ index = faiss.IndexFlatIP(embeddings_np.shape[1])
22
+ faiss.normalize_L2(embeddings_np)
23
+ index.add(embeddings_np)
24
 
25
+ # Initialize text generation pipeline with smaller max length for speed
26
+ generator = pipeline('text-generation', model='distilgpt2')
27
+
28
+ return quotes, index, embedder, generator
29
+
30
+ quotes, index, embedder, generator = load_data_and_models()
31
 
 
32
  def rag_search(query, top_k=3):
33
  q_emb = embedder.encode([query]).astype('float32')
34
  faiss.normalize_L2(q_emb)
35
  scores, indices = index.search(q_emb, top_k)
36
  context = "\n".join([f"{quotes[i]['quote']} — {quotes[i].get('author','Unknown')}" for i in indices[0]])
37
  prompt = f"Answer using these quotes:\n{context}\nQuestion: {query}\nAnswer:"
38
+ outputs = generator(prompt, max_length=80, num_return_sequences=1, do_sample=False)
39
  answer = outputs[0]['generated_text'].split('Answer:')[-1].strip()
40
  return answer
41
 
 
42
  st.title("🧠 RAG Quote-Based Q&A App")
43
  user_query = st.text_input("💬 Ask something related to quotes:")
44