ramysaidagieb commited on
Commit
fcec14a
·
verified ·
1 Parent(s): 751232c

Update rag_pipeline.py

Browse files
Files changed (1) hide show
  1. rag_pipeline.py +9 -11
rag_pipeline.py CHANGED
@@ -5,16 +5,16 @@ from transformers import AutoTokenizer, AutoModelForCausalLM
5
  class RAGPipeline:
6
  def __init__(self, logger):
7
  self.logger = logger
8
- self.logger("[RAG] Initializing tokenizer and model...")
9
  self.tokenizer = AutoTokenizer.from_pretrained("aubmindlab/aragpt2-mega", trust_remote_code=True)
10
  self.generator = AutoModelForCausalLM.from_pretrained("aubmindlab/aragpt2-mega", trust_remote_code=True)
11
  self.chunk_embeddings = []
12
  self.index = []
13
- self.logger("[RAG] Initialization done.")
14
 
15
  def build_index(self, chunks):
16
  start = time.time()
17
- self.logger(f"[RAG] Building index for {len(chunks)} chunks...")
18
  self.chunk_embeddings = []
19
  self.index = []
20
 
@@ -23,28 +23,26 @@ class RAGPipeline:
23
  self.chunk_embeddings.append(embedding)
24
  self.index.append(chunk)
25
  if (i+1) % 10 == 0 or (i+1) == len(chunks):
26
- self.logger(f"[RAG] Processed {i+1}/{len(chunks)} chunks.")
27
 
28
  self.chunk_embeddings = np.array(self.chunk_embeddings)
29
  dim = self.chunk_embeddings.shape[1] if len(self.chunk_embeddings) > 0 else 0
30
  elapsed = time.time() - start
31
- self.logger(f"[RAG] Index built with dimension {dim} in {elapsed:.2f}s.")
32
- return "Index built successfully."
33
 
34
  def _dummy_embedding(self, text):
35
  return np.random.rand(768)
36
 
37
  def generate_answer(self, question, top_k=3):
38
  start = time.time()
39
- self.logger(f"[RAG] Generating answer for question:\n{question}")
40
 
41
  if len(self.index) == 0:
42
- self.logger("[RAG] Warning: index is empty, please build index first.")
43
  return "لم يتم بناء الفهرس بعد.", []
44
 
45
- # بحث مبسط لأقرب النصوص (dummy - عشوائي)
46
  passages = self.index[:top_k]
47
-
48
  prompt = question + "\n\nالمراجع:\n" + "\n".join(passages)
49
 
50
  inputs = self.tokenizer(prompt, return_tensors="pt")
@@ -52,5 +50,5 @@ class RAGPipeline:
52
  response = self.tokenizer.decode(output[0], skip_special_tokens=True)
53
 
54
  elapsed = time.time() - start
55
- self.logger(f"[RAG] Answer generated in {elapsed:.2f}s.")
56
  return response, passages
 
5
  class RAGPipeline:
6
  def __init__(self, logger):
7
  self.logger = logger
8
+ self.logger("[RAG] جاري تحميل النموذج والمحول...")
9
  self.tokenizer = AutoTokenizer.from_pretrained("aubmindlab/aragpt2-mega", trust_remote_code=True)
10
  self.generator = AutoModelForCausalLM.from_pretrained("aubmindlab/aragpt2-mega", trust_remote_code=True)
11
  self.chunk_embeddings = []
12
  self.index = []
13
+ self.logger("[RAG] تم التحميل بنجاح.")
14
 
15
  def build_index(self, chunks):
16
  start = time.time()
17
+ self.logger(f"[RAG] بناء الفهرس لـ {len(chunks)} مقاطع...")
18
  self.chunk_embeddings = []
19
  self.index = []
20
 
 
23
  self.chunk_embeddings.append(embedding)
24
  self.index.append(chunk)
25
  if (i+1) % 10 == 0 or (i+1) == len(chunks):
26
+ self.logger(f"[RAG] تم معالجة {i+1}/{len(chunks)} مقاطع.")
27
 
28
  self.chunk_embeddings = np.array(self.chunk_embeddings)
29
  dim = self.chunk_embeddings.shape[1] if len(self.chunk_embeddings) > 0 else 0
30
  elapsed = time.time() - start
31
+ self.logger(f"[RAG] تم بناء الفهرس بأبعاد {dim} في {elapsed:.2f} ثانية.")
32
+ return "تم بناء الفهرس بنجاح."
33
 
34
  def _dummy_embedding(self, text):
35
  return np.random.rand(768)
36
 
37
  def generate_answer(self, question, top_k=3):
38
  start = time.time()
39
+ self.logger(f"[RAG] توليد إجابة للسؤال: {question}")
40
 
41
  if len(self.index) == 0:
42
+ self.logger("[RAG] تحذير: الفهرس فارغ، الرجاء بناء الفهرس أولاً.")
43
  return "لم يتم بناء الفهرس بعد.", []
44
 
 
45
  passages = self.index[:top_k]
 
46
  prompt = question + "\n\nالمراجع:\n" + "\n".join(passages)
47
 
48
  inputs = self.tokenizer(prompt, return_tensors="pt")
 
50
  response = self.tokenizer.decode(output[0], skip_special_tokens=True)
51
 
52
  elapsed = time.time() - start
53
+ self.logger(f"[RAG] تم توليد الإجابة في {elapsed:.2f} ثانية.")
54
  return response, passages