panuthept commited on
Commit
0522181
1 Parent(s): 5ed90ba
Files changed (2) hide show
  1. app.py +61 -2
  2. requirements.txt +4 -0
app.py CHANGED
@@ -1,4 +1,63 @@
1
  import streamlit as st
 
 
 
 
2
 
3
- x = st.slider('Select a value')
4
- st.write(x, 'squared is', x * x)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import streamlit as st
2
+ from FlagEmbedding import BGEM3FlagModel
3
+ from FlagEmbedding import FlagReranker
4
+ import pandas as pd
5
+ import numpy as np
6
 
7
+ @st.cache_resource
8
+ def load_model():
9
+ return BGEM3FlagModel('BAAI/bge-m3',
10
+ use_fp16=True)
11
+ @st.cache_resource
12
+ def load_reranker():
13
+ return FlagReranker('BAAI/bge-reranker-v2-m3', use_fp16=True)
14
+
15
+ @st.cache_data
16
+ def load_df(path):
17
+ df = pd.read_csv(path)
18
+ return df
19
+ @st.cache_data
20
+ def load_embed(path):
21
+ embeddings_2 = np.load(path)
22
+ return embeddings_2
23
+
24
+ model = load_model()
25
+ reranker = load_reranker()
26
+
27
+ df = load_df('D:/AI_Builder/BookDataFrame.csv')
28
+ embeddings_2 = load_embed('D:/AI_Builder/BGE_embeddings_2.npy')
29
+
30
+ st.header(":books: Book Identifier")
31
+
32
+ k = 10
33
+ with st.form(key='my_form'):
34
+ sen1 = st.text_area("Book description:")
35
+ submit_button = st.form_submit_button(label='Submit')
36
+
37
+ if submit_button:
38
+ embeddings_1 = model.encode(sen1,
39
+ batch_size=12,
40
+ max_length=8192,
41
+ )['dense_vecs']
42
+ similarity = embeddings_1 @ embeddings_2.T
43
+
44
+ top_k_qs = []
45
+ topk = np.argsort(similarity)[-k:]
46
+
47
+ for t in topk:
48
+ pred_sum = df['Summary'].iloc[t]
49
+ pred_ques = sen1
50
+ pred = [pred_ques, pred_sum]
51
+ top_k_qs.append(pred)
52
+ rrscore = reranker.compute_score(top_k_qs, normalize=True)
53
+ rrscore_index = np.argsort(rrscore)
54
+
55
+ pred_book = []
56
+ for rr in rrscore_index:
57
+ pred_book.append(f"{df['Book Name'][topk[rr]]} by {df['Book Author'][topk[rr]]}")
58
+
59
+ finalpred = []
60
+ pred_book.reverse()
61
+ st.write("Here is your prediction")
62
+ for n, pred in enumerate(pred_book):
63
+ st.write(f"{n+1}: {pred}")
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ FlagEmbedding==1.2.10
2
+ numpy==1.26.4
3
+ pandas==2.2.2
4
+ streamlit==1.35.0