galbendavids commited on
Commit
fb8e5c3
·
1 Parent(s): 79b2b9c

הוספת תיעוד מפורט לגישה החדשה SQL-based

Browse files
Files changed (1) hide show
  1. SQL_APPROACH_README.md +172 -0
SQL_APPROACH_README.md ADDED
@@ -0,0 +1,172 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SQL-Based Approach - מדריך
2
+
3
+ ## סקירה כללית
4
+
5
+ גישה חדשה לניתוח משובי משתמשים המבוססת על SQL queries שנוצרות אוטומטית על ידי LLM.
6
+
7
+ ## ארכיטקטורה
8
+
9
+ ### 1. ניתוח שאילתת המשתמש
10
+ - המשתמש שואל שאלה בעברית או באנגלית
11
+ - השאלה נשלחת ל-LLM לניתוח
12
+
13
+ ### 2. יצירת שאילתות SQL (1-5 שאילתות)
14
+ **מיקום:** `app/sql_service.py` - `_generate_sql_queries()`
15
+
16
+ המערכת משתמשת ב-LLM (Gemini או OpenAI) כדי ליצור 1-5 שאילתות SQL שיעזרו לענות על השאלה.
17
+
18
+ **הפרומפט כולל:**
19
+ - מידע על מבנה הטבלה (ID, ServiceName, Level, Text)
20
+ - סטטיסטיקות כלליות
21
+ - כללי SQLite
22
+ - הוראות ליצירת שאילתות תקפות
23
+
24
+ **דוגמאות לשאילתות שנוצרות:**
25
+ ```sql
26
+ SELECT ServiceName, COUNT(*) as count, AVG(Level) as avg_level
27
+ FROM feedback
28
+ GROUP BY ServiceName
29
+ ORDER BY count DESC
30
+ LIMIT 10;
31
+
32
+ SELECT Level, COUNT(*) as count
33
+ FROM feedback
34
+ WHERE Level < 3
35
+ GROUP BY Level;
36
+ ```
37
+
38
+ ### 3. הרצת השאילתות
39
+ **מיקום:** `app/sql_service.py` - `_execute_sql_queries()`
40
+
41
+ - יוצר SQLite in-memory database
42
+ - טוען את ה-DataFrame לטבלה `feedback`
43
+ - מריץ כל שאילתה ומחזיר תוצאות או שגיאות
44
+
45
+ ### 4. יצירת תשובה מסכמת
46
+ **מיקום:** `app/sql_service.py` - `_synthesize_answer()`
47
+
48
+ המערכת משתמשת ב-LLM (בתפקיד אנליסט עסקי במשרד הפנים) כדי ליצור תשובה מסכמת.
49
+
50
+ **הפרומפט כולל:**
51
+ - שאלת המשתמש
52
+ - השאילתות שבוצעו
53
+ - התוצאות של כל שאילתה
54
+ - הוראות לכתיבת תשובה מפורטת ומקצועית
55
+
56
+ **דרישות לתשובה:**
57
+ - 5-7 פסקאות, 400-600 מילים
58
+ - מספרים מדויקים מהתוצאות
59
+ - תובנות עסקיות והמלצות מעשיות
60
+ - מבנה ברור: פתיחה, ניתוח, תובנות, סיכום
61
+
62
+ ### 5. יצירת ויזואליזציות (אופציונלי)
63
+ **מיקום:** `app/sql_service.py` - `_generate_visualizations()`
64
+
65
+ המערכת מנתחת את תוצאות השאילתות ויוצרת מפרטי ויזואליזציות:
66
+
67
+ **סוגי גרפיקות נתמכים:**
68
+ - **Bar Chart** - לנתונים קטגוריאליים עם ערכים מספריים
69
+ - **Line Chart** - לנתוני זמן או מגמות
70
+ - **Scatter Plot** - לשני משתנים מספריים
71
+ - **Histogram** - להפצת ערכים מספריים
72
+
73
+ **Frontend:** משתמש ב-Chart.js להצגת הגרפיקות
74
+
75
+ ## שימוש
76
+
77
+ ### דרך API
78
+
79
+ ```bash
80
+ POST /query-sql
81
+ Content-Type: application/json
82
+
83
+ {
84
+ "query": "איך המשתמשים מרגישים כלפי השירות?",
85
+ "top_k": 5
86
+ }
87
+ ```
88
+
89
+ **תגובה:**
90
+ ```json
91
+ {
92
+ "query": "איך המשתמשים מרגישים כלפי השירות?",
93
+ "summary": "תשובה מסכמת מפורטת...",
94
+ "sql_queries": [
95
+ "SELECT Level, COUNT(*) FROM feedback GROUP BY Level",
96
+ "..."
97
+ ],
98
+ "query_results": [
99
+ {
100
+ "query": "SELECT ...",
101
+ "result": [...],
102
+ "error": null,
103
+ "row_count": 10
104
+ }
105
+ ],
106
+ "visualizations": [
107
+ {
108
+ "type": "bar",
109
+ "title": "תוצאה של שאילתה 1",
110
+ "x": "Level",
111
+ "y": "count",
112
+ "data": [...]
113
+ }
114
+ ]
115
+ }
116
+ ```
117
+
118
+ ### דרך Frontend
119
+
120
+ 1. פתח את הדפדפן: `http://127.0.0.1:8000`
121
+ 2. בחר "SQL-based (מומלץ - חדש)"
122
+ 3. הזן שאלה
123
+ 4. לחץ על "שאל"
124
+ 5. התוצאות יוצגו עם:
125
+ - תשובה מסכמת
126
+ - שאילתות SQL שבוצעו (אם מסומן "הצג דוגמאות מהנתונים")
127
+ - תוצאות השאילתות
128
+ - גרפיקות אוטומטיות
129
+
130
+ ## יתרונות הגישה החדשה
131
+
132
+ 1. **דיוק גבוה** - שאילתות SQL מדויקות יותר מ-RAG
133
+ 2. **שקיפות** - המשתמש רואה בדיוק אילו שאילתות בוצעו
134
+ 3. **גמישות** - יכול לענות על שאלות מורכבות עם מספר שאילתות
135
+ 4. **ויזואליזציות** - גרפיקות אוטומטיות של התוצאות
136
+ 5. **מהירות** - שאילתות SQL מהירות יותר מ-RAG
137
+
138
+ ## השוואה לגישה הישנה (RAG)
139
+
140
+ | תכונה | RAG | SQL-based |
141
+ |------|-----|-----------|
142
+ | דיוק | בינוני | גבוה |
143
+ | שקיפות | נמוכה | גבוהה |
144
+ | מהירות | איטית יותר | מהירה יותר |
145
+ | גמישות | מוגבלת | גבוהה |
146
+ | ויזואליזציות | לא | כן |
147
+
148
+ ## הגדרות LLM
149
+
150
+ ### יצירת שאילתות SQL
151
+ - **Temperature:** 0.3 (נמוך לדיוק)
152
+ - **Model:** Gemini 1.5 Flash או GPT-4o-mini
153
+
154
+ ### יצירת תשובה מסכמת
155
+ - **Temperature:** 0.8 (גבוה ליצירתיות)
156
+ - **Top_p:** 0.95
157
+ - **Max tokens:** 4000 (Gemini) / 3000 (OpenAI)
158
+
159
+ ## קבצים רלוונטי��ם
160
+
161
+ - `app/sql_service.py` - הלוגיקה הראשית
162
+ - `app/api.py` - endpoint `/query-sql`
163
+ - `app/static/app.js` - תמיכה frontend בגרפיקות
164
+ - `app/static/index.html` - ממשק משתמש
165
+
166
+ ## הערות טכניות
167
+
168
+ - המערכת משתמשת ב-SQLite in-memory database
169
+ - הנתונים נטענים פעם אחת בתחילת הפעלה
170
+ - השאילתות רצות על DataFrame דרך SQLite
171
+ - הגרפיקות נוצרות אוטומטית על בסיס מבנה התוצאות
172
+