M17idd commited on
Commit
8f34ab2
·
verified ·
1 Parent(s): ff5a162

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -32
app.py CHANGED
@@ -11,39 +11,42 @@ from sklearn.metrics.pairwise import cosine_similarity
11
 
12
  # ------------------ بارگذاری چانک‌ها و امبدینگ‌ها ------------------
13
 
 
14
  @st.cache_resource
15
- def load_chunks_and_embeddings():
16
- embeddings_file = 'embeddings.pkl'
17
-
18
- if os.path.exists(embeddings_file):
19
- st.success("✅ امبدینگ‌ها از فایل کش بارگذاری شد.")
20
- with open(embeddings_file, 'rb') as f:
21
- data = pickle.load(f)
22
- return data['chunk_texts'], data['chunk_embeddings'], data['embeddings_model']
23
-
24
- else:
25
- with st.spinner('📄 در حال پردازش PDF و ساخت امبدینگ‌ها...'):
26
- loader = PyPDFLoader('test1.pdf')
27
- pages = loader.load()
28
-
29
- splitter = RecursiveCharacterTextSplitter(chunk_size=300, chunk_overlap=0)
30
- chunks = splitter.split_documents(pages)
31
-
32
- embeddings_model = TogetherEmbeddings(
33
- api_key="0291f33aee03412a47fa5d8e562e515182dcc5d9aac5a7fb5eefdd1759005979"
34
- )
35
-
36
- chunk_texts = [chunk.page_content for chunk in chunks]
37
-
38
- # ساخت امبدینگ با progress bar
39
- progress = st.progress(0, text="در حال ساخت امبدینگ چانک‌ها...")
40
- chunk_embeddings = []
41
- batch_size = 50
42
- for i in range(0, len(chunk_texts), batch_size):
43
- batch_texts = chunk_texts[i:i+batch_size]
44
- batch_embeds = embeddings_model.embed_documents(batch_texts)
45
- chunk_embeddings.extend(batch_embeds)
46
- progress.progress((i + batch_size) / len(chunk_texts))
 
 
47
 
48
  # ذخیره در فایل کش
49
  with open(embeddings_file, 'wb') as f:
 
11
 
12
  # ------------------ بارگذاری چانک‌ها و امبدینگ‌ها ------------------
13
 
14
+ # --- کش کردن امبدینگ‌ها فقط بار اول ---
15
  @st.cache_resource
16
+ def get_embeddings_and_chunks():
17
+ # بارگذاری پی دی اف و اسپلیت چانک
18
+ pdf_loader = PyPDFLoader('test1.pdf')
19
+ pages = pdf_loader.load_and_split(RecursiveCharacterTextSplitter(chunk_size=300, chunk_overlap=0))
20
+ chunk_texts = [page.page_content for page in pages]
21
+
22
+ # ساخت امبدینگ برای کل چانک‌ها
23
+ embeddings = TogetherEmbeddings(
24
+ api_key="0291f33aee03412a47fa5d8e562e515182dcc5d9aac5a7fb5eefdd1759005979"
25
+ )
26
+
27
+ return chunk_texts, embeddings
28
+
29
+ # --- نمایش progress بیرون از کش ---
30
+ chunk_texts, embeddings = get_embeddings_and_chunks()
31
+
32
+ progress_bar = st.progress(0)
33
+
34
+ # حالا شروع به پردازش با آپدیت پروگرس بار
35
+ all_embeddings = []
36
+ batch_size = 5
37
+
38
+ for i in range(0, len(chunk_texts), batch_size):
39
+ batch = chunk_texts[i:i+batch_size]
40
+ embedded_batch = embeddings.embed_documents(batch)
41
+ all_embeddings.extend(embedded_batch)
42
+
43
+ # آپدیت پروگرس بار
44
+ progress_bar.progress(min((i + batch_size) / len(chunk_texts), 1.0))
45
+
46
+ st.success("✅ امبدینگ چانک‌ها با موفقیت ساخته شد!")
47
+
48
+ # حالا این all_embeddings رو داری، میتونی بندازی تو index
49
+
50
 
51
  # ذخیره در فایل کش
52
  with open(embeddings_file, 'wb') as f: