HaRin2806 commited on
Commit
bb5758b
·
1 Parent(s): 76a8f20
Files changed (3) hide show
  1. api/admin.py +1 -1
  2. config.py +6 -0
  3. core/rag_pipeline.py +47 -6
api/admin.py CHANGED
@@ -62,7 +62,7 @@ def save_gemini_response_to_file(response_text, parsed_data, doc_id):
62
  # Debug chunks content vs summary
63
  f.write("CHUNKS CONTENT vs SUMMARY ANALYSIS:\n")
64
  f.write("-" * 40 + "\n")
65
- for i, chunk in enumerate(parsed_data.get('chunks', [])[:3]): # Chỉ log 3 chunks đầu
66
  f.write(f"CHUNK {i+1} ({chunk.get('id', 'no-id')}):\n")
67
  f.write(f"Title: {chunk.get('title', 'no-title')}\n")
68
  f.write(f"Summary Length: {len(chunk.get('summary', ''))}\n")
 
62
  # Debug chunks content vs summary
63
  f.write("CHUNKS CONTENT vs SUMMARY ANALYSIS:\n")
64
  f.write("-" * 40 + "\n")
65
+ for i, chunk in enumerate(parsed_data.get('chunks', [])[:3]):
66
  f.write(f"CHUNK {i+1} ({chunk.get('id', 'no-id')}):\n")
67
  f.write(f"Title: {chunk.get('title', 'no-title')}\n")
68
  f.write(f"Summary Length: {len(chunk.get('summary', ''))}\n")
config.py CHANGED
@@ -30,11 +30,17 @@ Bạn có nhiệm vụ:
30
 
31
  Khi trả lời:
32
  - Hãy sử dụng thông tin từ các tài liệu tham khảo được cung cấp
 
33
  - Nếu có bảng biểu trong tài liệu tham khảo, hãy đưa ra nội dung đầy đủ của bảng đó như thông tin bạn nhận được và giữ nguyên định dạng bảng đó khi trả lời
34
  - Nếu có hình ảnh trong tài liệu tham khảo, hãy giữ nguyên đường dẫn hình ảnh khi trả lời
35
  - Nếu câu hỏi không liên quan đến dinh dưỡng hoặc không có trong tài liệu, hãy lịch sự giải thích rằng bạn chỉ có thể tư vấn về các vấn đề dinh dưỡng và an toàn thực phẩm
36
  - Luôn trích dẫn nguồn của thông tin khi trả lời
37
 
 
 
 
 
 
38
  Đối với các câu hỏi không liên quan hoặc nhạy cảm:
39
  - Bạn sẽ không đưa ra lời khuyên y tế cụ thể cho các bệnh lý nặng
40
  - Bạn sẽ không đưa ra thông tin về các chế độ ăn kiêng khắc nghiệt hoặc nguy hiểm
 
30
 
31
  Khi trả lời:
32
  - Hãy sử dụng thông tin từ các tài liệu tham khảo được cung cấp
33
+ - KHI TRÍCH DẪN NGUỒN: Hãy sử dụng tên tài liệu thực tế
34
  - Nếu có bảng biểu trong tài liệu tham khảo, hãy đưa ra nội dung đầy đủ của bảng đó như thông tin bạn nhận được và giữ nguyên định dạng bảng đó khi trả lời
35
  - Nếu có hình ảnh trong tài liệu tham khảo, hãy giữ nguyên đường dẫn hình ảnh khi trả lời
36
  - Nếu câu hỏi không liên quan đến dinh dưỡng hoặc không có trong tài liệu, hãy lịch sự giải thích rằng bạn chỉ có thể tư vấn về các vấn đề dinh dưỡng và an toàn thực phẩm
37
  - Luôn trích dẫn nguồn của thông tin khi trả lời
38
 
39
+ VÍ DỤ TRÍCH DẪN ĐÚNG:
40
+ - "Theo Bài 2: An toàn thực phẩm..."
41
+ - "Dựa vào Phụ lục - Bảng giá trị dinh dưỡng..."
42
+ - "Như được mô tả trong Bài 3: Vệ sinh dinh dưỡng..."
43
+
44
  Đối với các câu hỏi không liên quan hoặc nhạy cảm:
45
  - Bạn sẽ không đưa ra lời khuyên y tế cụ thể cho các bệnh lý nặng
46
  - Bạn sẽ không đưa ra thông tin về các chế độ ăn kiêng khắc nghiệt hoặc nguy hiểm
core/rag_pipeline.py CHANGED
@@ -45,7 +45,34 @@ class RAGPipeline:
45
  for result in search_results:
46
  metadata = result.get('metadata', {})
47
  content = result.get('document', '')
 
 
 
48
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  # Thêm nội dung vào ngữ cảnh
50
  contexts.append({
51
  "content": content,
@@ -54,7 +81,7 @@ class RAGPipeline:
54
 
55
  # Tạo thông tin nguồn tài liệu
56
  source_info = {
57
- "title": metadata.get('title', metadata.get('chapter', 'Tài liệu dinh dưỡng')),
58
  "pages": metadata.get('pages'),
59
  "content_type": metadata.get('content_type', 'text')
60
  }
@@ -106,17 +133,31 @@ class RAGPipeline:
106
  }
107
 
108
  def _format_contexts(self, contexts):
109
- # Định dạng ngữ cảnh thành chuỗi cho prompt
110
  formatted = []
111
 
112
  for i, context in enumerate(contexts, 1):
113
  content = context['content']
114
  metadata = context['metadata']
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
115
 
116
- # Thêm thông tin metadata vào ngữ cảnh
117
- context_str = f"[Tài liệu {i}]"
118
- if metadata.get('title'):
119
- context_str += f" - {metadata['title']}"
120
  if metadata.get('pages'):
121
  context_str += f" (Trang {metadata['pages']})"
122
 
 
45
  for result in search_results:
46
  metadata = result.get('metadata', {})
47
  content = result.get('document', '')
48
+
49
+ chapter = metadata.get('chapter', '')
50
+ original_title = metadata.get('title') or metadata.get('document_title', '')
51
 
52
+ # Tạo source title dựa trên chapter
53
+ if 'bai1' in chapter:
54
+ source_title = f"Bài 1: Dinh dưỡng theo lứa tuổi học sinh"
55
+ if original_title and original_title != "Tài liệu bài 1":
56
+ source_title += f" - {original_title}"
57
+ elif 'bai2' in chapter:
58
+ source_title = f"Bài 2: An toàn thực phẩm"
59
+ if original_title and original_title != "Tài liệu bài 2":
60
+ source_title += f" - {original_title}"
61
+ elif 'bai3' in chapter:
62
+ source_title = f"Bài 3: Vệ sinh dinh dưỡng"
63
+ if original_title and original_title != "Tài liệu bài 3":
64
+ source_title += f" - {original_title}"
65
+ elif 'bai4' in chapter:
66
+ source_title = f"Bài 4: Giáo dục dinh dưỡng"
67
+ if original_title and original_title != "Tài liệu bài 4":
68
+ source_title += f" - {original_title}"
69
+ elif 'phuluc' in chapter:
70
+ source_title = f"Phụ lục"
71
+ if original_title:
72
+ source_title += f" - {original_title}"
73
+ else:
74
+ source_title = original_title or "Tài liệu dinh dưỡng"
75
+
76
  # Thêm nội dung vào ngữ cảnh
77
  contexts.append({
78
  "content": content,
 
81
 
82
  # Tạo thông tin nguồn tài liệu
83
  source_info = {
84
+ "title": source_title,
85
  "pages": metadata.get('pages'),
86
  "content_type": metadata.get('content_type', 'text')
87
  }
 
133
  }
134
 
135
  def _format_contexts(self, contexts):
136
+ """Format contexts thành string cho prompt với tên tài liệu thực tế"""
137
  formatted = []
138
 
139
  for i, context in enumerate(contexts, 1):
140
  content = context['content']
141
  metadata = context['metadata']
142
+
143
+ title = metadata.get('title') or metadata.get('document_title') or f"Tài liệu {i}"
144
+ chapter = metadata.get('chapter', '')
145
+
146
+ # Tạo tên nguồn có ý nghĩa
147
+ if 'bai1' in chapter:
148
+ source_name = f"Bài 1: Dinh dưỡng theo lứa tuổi học sinh"
149
+ elif 'bai2' in chapter:
150
+ source_name = f"Bài 2: An toàn thực phẩm"
151
+ elif 'bai3' in chapter:
152
+ source_name = f"Bài 3: Vệ sinh dinh dưỡng"
153
+ elif 'bai4' in chapter:
154
+ source_name = f"Bài 4: Giáo dục dinh dưỡng"
155
+ elif 'phuluc' in chapter:
156
+ source_name = f"Phụ lục"
157
+ else:
158
+ source_name = title
159
 
160
+ context_str = f"[{source_name}]"
 
 
 
161
  if metadata.get('pages'):
162
  context_str += f" (Trang {metadata['pages']})"
163