Update app.py
Browse files
app.py
CHANGED
@@ -11,39 +11,42 @@ from sklearn.metrics.pairwise import cosine_similarity
|
|
11 |
|
12 |
# ------------------ بارگذاری چانکها و امبدینگها ------------------
|
13 |
|
|
|
14 |
@st.cache_resource
|
15 |
-
def
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
|
|
|
|
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:
|