File size: 14,054 Bytes
c8c6034
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2a4f012
c8c6034
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
# Clare AI + Weaviate ๆŠ€ๆœฏๆžถๆž„ๆ–‡ๆกฃ

## ๐Ÿ“‹ ็›ฎๅฝ•
1. [็ณป็ปŸๆฆ‚่ฟฐ](#็ณป็ปŸๆฆ‚่ฟฐ)
2. [ๆžถๆž„ๅ›พ](#ๆžถๆž„ๅ›พ)
3. [ๆŠ€ๆœฏๆ ˆ](#ๆŠ€ๆœฏๆ ˆ)
4. [ๆ ธๅฟƒ็ป„ไปถ](#ๆ ธๅฟƒ็ป„ไปถ)
5. [ๆ•ฐๆฎๆต](#ๆ•ฐๆฎๆต)
6. [้ƒจ็ฝฒๆžถๆž„](#้ƒจ็ฝฒๆžถๆž„)
7. [ๅ…ณ้”ฎๆŠ€ๆœฏๅ†ณ็ญ–](#ๅ…ณ้”ฎๆŠ€ๆœฏๅ†ณ็ญ–)

---

## ๐ŸŽฏ ็ณป็ปŸๆฆ‚่ฟฐ

**Clare AI** ๆ˜ฏไธ€ไธชๅŸบไบŽ RAG (Retrieval-Augmented Generation) ็š„ๆ™บ่ƒฝๆ•™ๅญฆๅŠฉๆ‰‹๏ผŒ้€š่ฟ‡ **Weaviate Cloud** ๅ‘้‡ๆ•ฐๆฎๅบ“ๆไพ›่ฏพ็จ‹็Ÿฅ่ฏ†ๆฃ€็ดข่ƒฝๅŠ›ใ€‚

### ๆ ธๅฟƒๅŠŸ่ƒฝ
- **ๅคšๆจกๅผๆ•™ๅญฆ**๏ผšๆฆ‚ๅฟต่งฃ้‡Šใ€่‹ๆ ผๆ‹‰ๅบ•ๅผ่พ…ๅฏผใ€่€ƒ่ฏ•ๅ‡†ๅค‡ใ€ไฝœไธšๅŠฉๆ‰‹ใ€ๅฟซ้€Ÿๆ€ป็ป“
- **็Ÿฅ่ฏ†ๆฃ€็ดข**๏ผšไปŽ 151+ ไธช่ฏพ็จ‹ๆ–‡ๆกฃ๏ผˆPDFใ€DOCXใ€ไปฃ็ ็ญ‰๏ผ‰ไธญๆฃ€็ดข็›ธๅ…ณๅ†…ๅฎน
- **ไผš่ฏ่ฎฐๅฟ†**๏ผš่ทŸ่ธชๅญฆ็”Ÿๅผฑ้กนใ€่ฎค็Ÿฅ็Šถๆ€ใ€ๅญฆไน ่ฟ›ๅบฆ
- **ๅคš่ฏญ่จ€ๆ”ฏๆŒ**๏ผšไธญ่‹ฑๆ–‡ๅŒ่ฏญๅฏน่ฏ

---

## ๐Ÿ—๏ธ ๆžถๆž„ๅ›พ

```
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    Hugging Face Space                        โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚           ClareVoice (Gradio App)                   โ”‚   โ”‚
โ”‚  โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚   โ”‚
โ”‚  โ”‚  โ”‚  Frontend: Gradio UI                          โ”‚  โ”‚   โ”‚
โ”‚  โ”‚  โ”‚  - Chat Interface                              โ”‚  โ”‚   โ”‚
โ”‚  โ”‚  โ”‚  - File Upload                                 โ”‚  โ”‚   โ”‚
โ”‚  โ”‚  โ”‚  - Session Management                          โ”‚  โ”‚   โ”‚
โ”‚  โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚   โ”‚
โ”‚  โ”‚                                                      โ”‚   โ”‚
โ”‚  โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚   โ”‚
โ”‚  โ”‚  โ”‚  Core Logic (clare_core.py)                    โ”‚  โ”‚   โ”‚
โ”‚  โ”‚  โ”‚  - LLM: GPT-4.1-mini (OpenAI)                  โ”‚  โ”‚   โ”‚
โ”‚  โ”‚  โ”‚  - Prompt Engineering                          โ”‚  โ”‚   โ”‚
โ”‚  โ”‚  โ”‚  - Session Memory                              โ”‚  โ”‚   โ”‚
โ”‚  โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚   โ”‚
โ”‚  โ”‚                                                      โ”‚   โ”‚
โ”‚  โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚   โ”‚
โ”‚  โ”‚  โ”‚  RAG Engine (rag_engine.py)                    โ”‚  โ”‚   โ”‚
โ”‚  โ”‚  โ”‚  - Local FAISS (ไธŠไผ ๆ–‡ไปถ)                       โ”‚  โ”‚   โ”‚
โ”‚  โ”‚  โ”‚  - PDF/DOCX Parsing                            โ”‚  โ”‚   โ”‚
โ”‚  โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ”‚                          โ”‚                                  โ”‚
โ”‚                          โ”‚ HTTPS + API Key                  โ”‚
โ”‚                          โ–ผ                                  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                          โ”‚
                          โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚              Weaviate Cloud (GCP)                          โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚  Collection: GenAICourses                             โ”‚   โ”‚
โ”‚  โ”‚  - 151+ ๆ–‡ๆกฃๅ— (chunks)                               โ”‚   โ”‚
โ”‚  โ”‚  - Vector Embeddings (384-dim)                       โ”‚   โ”‚
โ”‚  โ”‚  - Metadata (source_file, section)                   โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                          โ–ฒ
                          โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚         Index Builder (ๆœฌๅœฐ/CI)                              โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚  build_weaviate_index.py                             โ”‚   โ”‚
โ”‚  โ”‚  - ่ฏปๅ– GENAI COURSES/ ็›ฎๅฝ•                           โ”‚   โ”‚
โ”‚  โ”‚  - Embedding: sentence-transformers/all-MiniLM-L6-v2 โ”‚   โ”‚
โ”‚  โ”‚  - ไธŠไผ ๅˆฐ Weaviate Cloud                             โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
```

---

## ๐Ÿ› ๏ธ ๆŠ€ๆœฏๆ ˆ

### ๅ‰็ซฏๅฑ‚
- **Gradio 6.0+**: Web UI ๆก†ๆžถ๏ผŒๆ”ฏๆŒๅฎžๆ—ถๅฏน่ฏใ€ๆ–‡ไปถไธŠไผ 
- **Python 3.11**: ่ฟ่กŒ็Žฏๅขƒ

### ๅŽ็ซฏๅฑ‚
- **OpenAI GPT-4.1-mini**: ไธป่ฆ LLM๏ผŒ็”จไบŽ็”Ÿๆˆๅ›ž็ญ”
- **LangChain**: LLM ็ผ–ๆŽ’ๆก†ๆžถ
- **LlamaIndex**: ๅ‘้‡ๆฃ€็ดขๆก†ๆžถ

### ๅ‘้‡ๆ•ฐๆฎๅบ“
- **Weaviate Cloud**: ๆ‰˜็ฎกๅ‘้‡ๆ•ฐๆฎๅบ“๏ผˆGCP๏ผ‰
  - Collection: `GenAICourses`
  - Embedding Model: `sentence-transformers/all-MiniLM-L6-v2` (384็ปด)
  - ๆ–‡ๆกฃ็ฑปๅž‹: PDF, DOCX, TXT, PY, IPYNB

### Embedding ๆจกๅž‹
- **ๅปบ็ดขๅผ•**: `sentence-transformers/all-MiniLM-L6-v2` (ๅ…่ดน๏ผŒๆœฌๅœฐ่ฟ่กŒ)
- **ๆŸฅ่ฏข**: ไธŽๅปบ็ดขๅผ•ไฝฟ็”จ็›ธๅŒๆจกๅž‹๏ผˆไฟ่ฏๅ‘้‡็ฉบ้—ดไธ€่‡ด๏ผ‰

### ๆ–‡ๆกฃ่งฃๆž
- **unstructured.io**: PDF ่งฃๆž๏ผˆไผ˜ๅ…ˆ๏ผ‰
- **pypdf**: PDF ่งฃๆž๏ผˆ้™็บงๆ–นๆกˆ๏ผ‰
- **python-docx**: DOCX ่งฃๆž

---

## ๐Ÿ”ง ๆ ธๅฟƒ็ป„ไปถ

### 1. ClareVoice App (`app.py`)

**่Œ่ดฃ**: ไธปๅบ”็”จๅ…ฅๅฃ๏ผŒๅค„็†็”จๆˆทไบคไบ’

**ๅ…ณ้”ฎๅŠŸ่ƒฝ**:
- Gradio UI ๆธฒๆŸ“
- ็”จๆˆทไผš่ฏ็ฎก็†
- ่ฐƒ็”จ RAG ๆฃ€็ดขๅ’Œ LLM ็”Ÿๆˆ
- Weaviate ็›ด่ฟžๆฃ€็ดข

**ๅ…ณ้”ฎไปฃ็ **:
```python
# Weaviate ๆฃ€็ดข๏ผˆไผ˜ๅ…ˆ๏ผ‰
if USE_WEAVIATE_DIRECT:
    course_chunks = _retrieve_from_weaviate(message)
    
# ๆœฌๅœฐ FAISS๏ผˆไธŠไผ ๆ–‡ไปถ๏ผ‰
rag_context_text = retrieve_relevant_chunks(message, rag_chunks)
```

### 2. RAG Engine (`rag_engine.py`)

**่Œ่ดฃ**: ๆœฌๅœฐๆ–‡ไปถๅ‘้‡ๅŒ–ๅ’Œๆฃ€็ดข

**ๅŠŸ่ƒฝ**:
- ่งฃๆžไธŠไผ ็š„ PDF/DOCX
- ๆž„ๅปบ FAISS ็ดขๅผ•๏ผˆๅ†…ๅญ˜๏ผ‰
- ๅ‘้‡็›ธไผผๅบฆๆฃ€็ดข

### 3. Clare Core (`clare_core.py`)

**่Œ่ดฃ**: LLM ่ฐƒ็”จๅ’Œ Prompt ๆž„ๅปบ

**ๅŠŸ่ƒฝ**:
- ๆž„ๅปบๅคš่ฝฎๅฏน่ฏไธŠไธ‹ๆ–‡
- ๆ•ดๅˆ RAG ๆฃ€็ดข็ป“ๆžœ
- ็ฎก็†ไผš่ฏ่ฎฐๅฟ†๏ผˆๅผฑ้กนใ€่ฎค็Ÿฅ็Šถๆ€๏ผ‰
- ็”Ÿๆˆๆ•™ๅญฆๅ›ž็ญ”

### 4. Weaviate ๆฃ€็ดข (`app.py` โ†’ `_retrieve_from_weaviate`)

**่Œ่ดฃ**: ไปŽ Weaviate Cloud ๆฃ€็ดข่ฏพ็จ‹็Ÿฅ่ฏ†

**ๆต็จ‹**:
1. ๅŠ ่ฝฝ embedding ๆจกๅž‹๏ผˆ็ผ“ๅญ˜๏ผ‰
2. ่ฟžๆŽฅ Weaviate Cloud
3. ๅฐ†็”จๆˆท้—ฎ้ข˜็ผ–็ ไธบๅ‘้‡
4. ๅ‘้‡็›ธไผผๅบฆๆœ็ดข๏ผˆtop_k=5๏ผ‰
5. ่ฟ”ๅ›ž็›ธๅ…ณๆ–‡ๆกฃๅ—

**ๅ…ณ้”ฎ็‰นๆ€ง**:
- **่ถ…ๆ—ถไฟๆŠค**: 45็ง’่ถ…ๆ—ถ๏ผŒ้ฟๅ…้˜ปๅกž
- **ๆจกๅž‹้ข„็ƒญ**: ๅฏๅŠจๆ—ถๅŽๅฐๅŠ ่ฝฝ๏ผŒ้ฟๅ…้ฆ–ๆฌกๆŸฅ่ฏขๆ…ข
- **้”™่ฏฏ้™็บง**: ๅคฑ่ดฅๆ—ถ้™้ป˜่ฟ”ๅ›ž็ฉบ๏ผŒไธๅฝฑๅ“ไธปๆต็จ‹

---

## ๐Ÿ“Š ๆ•ฐๆฎๆต

### ็”จๆˆทๆ้—ฎๆต็จ‹

```
1. ็”จๆˆท่พ“ๅ…ฅ้—ฎ้ข˜
   โ”‚
   โ–ผ
2. ๆฃ€ๆต‹ๆ˜ฏๅฆไธบๅญฆๆœฏๆŸฅ่ฏข (is_academic_query)
   โ”‚
   โ”œโ”€ ๆ˜ฏ โ†’ ่งฆๅ‘ RAG ๆฃ€็ดข
   โ”‚   โ”‚
   โ”‚   โ”œโ”€ Weaviate ๆฃ€็ดข (ไผ˜ๅ…ˆ)
   โ”‚   โ”‚   โ””โ”€ ่ฟ”ๅ›ž่ฏพ็จ‹ๆ–‡ๆกฃๅ—
   โ”‚   โ”‚
   โ”‚   โ””โ”€ ๆœฌๅœฐ FAISS ๆฃ€็ดข (ไธŠไผ ๆ–‡ไปถ)
   โ”‚       โ””โ”€ ่ฟ”ๅ›žๆ–‡ๆกฃๅ—
   โ”‚
   โ””โ”€ ๅฆ โ†’ ่ทณ่ฟ‡ RAG
   โ”‚
   โ–ผ
3. ๆž„ๅปบ Prompt
   โ”œโ”€ System Prompt (Clare ่บซไปฝ)
   โ”œโ”€ Session Memory (ๅผฑ้กนใ€่ฎค็Ÿฅ็Šถๆ€)
   โ”œโ”€ RAG Context (ๆฃ€็ดขๅˆฐ็š„ๆ–‡ๆกฃ)
   โ””โ”€ User Message
   โ”‚
   โ–ผ
4. ่ฐƒ็”จ OpenAI API (GPT-4.1-mini)
   โ”‚
   โ–ผ
5. ่ฟ”ๅ›žๅ›ž็ญ” + ๆ›ดๆ–ฐไผš่ฏๅކๅฒ
```

### ็ดขๅผ•ๆž„ๅปบๆต็จ‹

```
1. ๆœฌๅœฐ่ฟ่กŒ build_weaviate_index.py
   โ”‚
   โ–ผ
2. ่ฏปๅ– GENAI COURSES/ ็›ฎๅฝ•
   โ”œโ”€ ๆ”ฏๆŒๆ ผๅผ: .md, .pdf, .txt, .py, .ipynb, .docx
   โ””โ”€ ้€’ๅฝ’ๆ‰ซๆๆ‰€ๆœ‰ๅญ็›ฎๅฝ•
   โ”‚
   โ–ผ
3. ๆ–‡ๆกฃๅˆ†ๅ— (LlamaIndex SimpleDirectoryReader)
   โ””โ”€ ่‡ชๅŠจๅˆ†ๅ—๏ผŒไฟ็•™ๅ…ƒๆ•ฐๆฎ
   โ”‚
   โ–ผ
4. Embedding ็ผ–็ 
   โ””โ”€ sentence-transformers/all-MiniLM-L6-v2
   โ”‚
   โ–ผ
5. ไธŠไผ ๅˆฐ Weaviate Cloud
   โ”œโ”€ Collection: GenAICourses
   โ”œโ”€ ๅ‘้‡ + ๅ…ƒๆ•ฐๆฎ (source_file, section)
   โ””โ”€ ้ชŒ่ฏ object count
```

---

## ๐Ÿš€ ้ƒจ็ฝฒๆžถๆž„

### Hugging Face Space (ClareVoice)

**้ƒจ็ฝฒๆ–นๅผ**: Docker Space

**Dockerfile ๅ…ณ้”ฎ้…็ฝฎ**:
```dockerfile
FROM python:3.11-slim
# ๅฎ‰่ฃ…็ณป็ปŸไพ่ต– (libxcb for unstructured)
RUN apt-get update && apt-get install -y libxcb1 libxcb-xinerama0
# ๅผบๅˆถๅ‡็บง huggingface_hub>=1.3.0
RUN pip install --upgrade "huggingface_hub>=1.3.0,<2.0"
# ๅฎ‰่ฃ…ไพ่ต–
RUN pip install -r requirements.txt
```

**็Žฏๅขƒๅ˜้‡ (Secrets)**:
- `OPENAI_API_KEY`: OpenAI API ๅฏ†้’ฅ
- `WEAVIATE_URL`: Weaviate Cloud REST ๅœฐๅ€
- `WEAVIATE_API_KEY`: Weaviate API Key
- `WEAVIATE_COLLECTION`: ้›†ๅˆๅ๏ผˆ้ป˜่ฎค `GenAICourses`๏ผ‰

**ๅฏๅŠจๆต็จ‹**:
1. ๅŠ ่ฝฝ็Žฏๅขƒๅ˜้‡
2. ๅŽๅฐ้ข„็ƒญ Weaviate embedding ๆจกๅž‹
3. ๅฏๅŠจ Gradio ๆœๅŠก๏ผˆ็ซฏๅฃ 7860๏ผ‰

### Weaviate Cloud

**ๆ‰˜็ฎก**: Google Cloud Platform (GCP)

**้…็ฝฎ**:
- Cluster URL: `https://riiqvgc7tuum6cgwhik9ra.c0.us-west3.gcp.weaviate.cloud`
- Authentication: API Key
- Collection Schema: ่‡ชๅŠจๅˆ›ๅปบ๏ผˆLlamaIndex ็ฎก็†๏ผ‰

**ๆ•ฐๆฎ่ง„ๆจก**:
- ๆ–‡ๆกฃๆ•ฐ้‡: 151+ ๆ–‡ไปถ
- ๆ–‡ๆกฃๅ—ๆ•ฐ: ~917 objects
- ๅ‘้‡็ปดๅบฆ: 384 (all-MiniLM-L6-v2)

---

## ๐Ÿ’ก ๅ…ณ้”ฎๆŠ€ๆœฏๅ†ณ็ญ–

### 1. ไธบไป€ไนˆ้€‰ๆ‹ฉ Weaviate Cloud๏ผŸ

**ไผ˜ๅŠฟ**:
- โœ… **ๆ‰˜็ฎกๆœๅŠก**: ๆ— ้œ€่‡ชๅปบๆ•ฐๆฎๅบ“๏ผŒ้™ไฝŽ่ฟ็ปดๆˆๆœฌ
- โœ… **้ซ˜ๆ€ง่ƒฝ**: ๅ‘้‡ๆฃ€็ดขๅปถ่ฟŸ <100ms
- โœ… **ๅฏๆ‰ฉๅฑ•**: ๆ”ฏๆŒๅคง่ง„ๆจกๆ–‡ๆกฃๅบ“
- โœ… **API ็ฎ€ๅ•**: RESTful API๏ผŒๆ˜“ไบŽ้›†ๆˆ

**ๅฏนๆฏ”ๅ…ถไป–ๆ–นๆกˆ**:
- โŒ **ๆœฌๅœฐ FAISS**: ๅ†…ๅญ˜้™ๅˆถ๏ผŒๆ— ๆณ•ๆŒไน…ๅŒ–
- โŒ **Pinecone**: ๆˆๆœฌ่พƒ้ซ˜
- โŒ **่‡ชๅปบ Weaviate**: ้œ€่ฆๆœๅŠกๅ™จๅ’Œ่ฟ็ปด

### 2. ไธบไป€ไนˆไฝฟ็”จ sentence-transformers ่€Œ้ž OpenAI Embeddings๏ผŸ

**ๅŽŸๅ› **:
- โœ… **ๆˆๆœฌ**: ๅ…่ดน๏ผŒๆ—  API ่ฐƒ็”จ่ดน็”จ
- โœ… **ไธ€่‡ดๆ€ง**: ๅปบ็ดขๅผ•ๅ’ŒๆŸฅ่ฏขไฝฟ็”จๅŒไธ€ๆจกๅž‹๏ผŒไฟ่ฏๅ‘้‡็ฉบ้—ดไธ€่‡ด
- โœ… **็ฆป็บฟ่ƒฝๅŠ›**: ๆœฌๅœฐ่ฟ่กŒ๏ผŒไธไพ่ต–ๅค–้ƒจ API

**ๆƒ่กก**:
- โš ๏ธ **ๆ€ง่ƒฝ**: OpenAI `text-embedding-3-small` (1536็ปด) ๅฏ่ƒฝๆ›ดๅ‡†็กฎ
- โš ๏ธ **ๅปถ่ฟŸ**: ้ฆ–ๆฌกๅŠ ่ฝฝๆจกๅž‹้œ€่ฆ 10-30 ็ง’๏ผˆๅทฒ้€š่ฟ‡้ข„็ƒญ่งฃๅ†ณ๏ผ‰

### 3. ไธบไป€ไนˆ้‡‡็”จ Docker Space ่€Œ้ž Gradio SDK๏ผŸ

**ๅŽŸๅ› **:
- โœ… **ไพ่ต–ๆŽงๅˆถ**: ๅฏไปฅๅผบๅˆถๅ‡็บง็‰นๅฎšๅŒ…๏ผˆๅฆ‚ `huggingface_hub`๏ผ‰
- โœ… **็ณป็ปŸๅบ“**: ๅฏไปฅๅฎ‰่ฃ… `libxcb` ็ญ‰็ณป็ปŸไพ่ต–
- โœ… **็ตๆดปๆ€ง**: ๅฎŒๅ…จๆŽงๅˆถๆž„ๅปบ่ฟ‡็จ‹

### 4. ๅŒๆฃ€็ดข็ญ–็•ฅ๏ผˆWeaviate + FAISS๏ผ‰

**่ฎพ่ฎก**:
- **Weaviate**: ่ฏพ็จ‹็Ÿฅ่ฏ†ๅบ“๏ผˆ151+ ๆ–‡ๆกฃ๏ผŒๆŒไน…ๅŒ–๏ผ‰
- **FAISS**: ็”จๆˆทไธŠไผ ๆ–‡ไปถ๏ผˆไธดๆ—ถ๏ผŒๅ†…ๅญ˜๏ผ‰

**ไผ˜ๅŠฟ**:
- โœ… ่ฏพ็จ‹็Ÿฅ่ฏ†็จณๅฎšๅฏ็”จ
- โœ… ็”จๆˆทๆ–‡ไปถ็ตๆดปๅค„็†
- โœ… ้™็บงๆ–นๆกˆ๏ผšWeaviate ๅคฑ่ดฅๆ—ถไปๆœ‰ FAISS

---

## ๐Ÿ“ˆ ๆ€ง่ƒฝๆŒ‡ๆ ‡

### ๆฃ€็ดขๆ€ง่ƒฝ
- **Weaviate ๆฃ€็ดข**: ~500-1000ms๏ผˆๅซ็ฝ‘็ปœๅปถ่ฟŸ๏ผ‰
- **FAISS ๆฃ€็ดข**: ~10-50ms๏ผˆๅ†…ๅญ˜ๆฃ€็ดข๏ผ‰
- **Embedding ็ผ–็ **: ~100-300ms๏ผˆ้ฆ–ๆฌก้œ€ๅŠ ่ฝฝๆจกๅž‹๏ผ‰

### LLM ๅ“ๅบ”
- **GPT-4.1-mini**: ~2-5็ง’๏ผˆๅ–ๅ†ณไบŽๅ›ž็ญ”้•ฟๅบฆ๏ผ‰

### ็ณป็ปŸ่ต„ๆบ
- **ๅ†…ๅญ˜**: ~2-4GB๏ผˆๅซ embedding ๆจกๅž‹๏ผ‰
- **CPU**: ไธญ็ญ‰่ดŸ่ฝฝ๏ผˆembedding ่ฎก็ฎ—๏ผ‰

---

## ๐Ÿ”’ ๅฎ‰ๅ…จไธŽ้š็ง

### API ๅฏ†้’ฅ็ฎก็†
- โœ… ไฝฟ็”จ Hugging Face Secrets๏ผˆๅŠ ๅฏ†ๅญ˜ๅ‚จ๏ผ‰
- โœ… ไธๅœจไปฃ็ ไธญ็กฌ็ผ–็ ๅฏ†้’ฅ

### ๆ•ฐๆฎ้š็ง
- โœ… ็”จๆˆทไผš่ฏๆ•ฐๆฎไธๆŒไน…ๅŒ–๏ผˆไป…ๅ†…ๅญ˜๏ผ‰
- โœ… Weaviate ไป…ๅญ˜ๅ‚จ่ฏพ็จ‹ๆ–‡ๆกฃ๏ผˆๅ…ฌๅผ€ๅ†…ๅฎน๏ผ‰
- โœ… ็”จๆˆทไธŠไผ ๆ–‡ไปถไป…็”จไบŽๅฝ“ๅ‰ไผš่ฏ

---

## ๐Ÿ› ๅทฒ็Ÿฅ้—ฎ้ข˜ไธŽ่งฃๅ†ณๆ–นๆกˆ

### 1. huggingface_hub ็‰ˆๆœฌๅ†ฒ็ช
**้—ฎ้ข˜**: HF Space ้ข„่ฃ…ๆ—ง็‰ˆ (0.36.2)๏ผŒ`transformers` ้œ€่ฆ >=1.3.0

**่งฃๅ†ณ**: 
- Dockerfile ไธญๅผบๅˆถๅ‡็บง
- App ๅฏๅŠจๆ—ถ monkey-patch `is_offline_mode`

### 2. Gradio 6.0 API ๅ˜ๆ›ด
**้—ฎ้ข˜**: `Chatbot` ไธๅ†ๆ”ฏๆŒ `type="tuples"`๏ผŒๆ”นไธบ `messages` ๆ ผๅผ

**่งฃๅ†ณ**: ๆทปๅŠ ๆ ผๅผ่ฝฌๆขๅ‡ฝๆ•ฐ `_tuples_to_messages` / `_messages_to_tuples`

### 3. Embedding ๆจกๅž‹้ฆ–ๆฌกๅŠ ่ฝฝๆ…ข
**้—ฎ้ข˜**: ้ฆ–ๆฌกๆฃ€็ดข้œ€่ฆ 10-30 ็ง’ๅŠ ่ฝฝๆจกๅž‹

**่งฃๅ†ณ**: ๅฏๅŠจๆ—ถๅŽๅฐ้ข„็ƒญ๏ผˆ`_warmup_weaviate_embed`๏ผ‰

---

## ๐Ÿ“ ๆ€ป็ป“

Clare AI ้‡‡็”จ **RAG + LLM** ๆžถๆž„๏ผŒ้€š่ฟ‡ **Weaviate Cloud** ๆไพ›็จณๅฎš็š„่ฏพ็จ‹็Ÿฅ่ฏ†ๆฃ€็ดข่ƒฝๅŠ›ใ€‚็ณป็ปŸ่ฎพ่ฎกๆณจ้‡๏ผš

1. **ๅฏ้ ๆ€ง**: ๅคš้‡้™็บงๆ–นๆกˆ๏ผŒ็กฎไฟๆœๅŠกๅฏ็”จ
2. **ๆ€ง่ƒฝ**: ๆจกๅž‹้ข„็ƒญใ€่ถ…ๆ—ถไฟๆŠคใ€็ผ“ๅญ˜ๆœบๅˆถ
3. **ๅฏๆ‰ฉๅฑ•**: ๆ‰˜็ฎกๆœๅŠก๏ผŒๆ˜“ไบŽๆ‰ฉๅฑ•ๆ–‡ๆกฃๅบ“
4. **ๆˆๆœฌ**: ไฝฟ็”จๅ…่ดน embedding ๆจกๅž‹๏ผŒ้™ไฝŽ่ฟ่ฅๆˆๆœฌ

---

**ๆ–‡ๆกฃ็‰ˆๆœฌ**: v1.0  
**ๆœ€ๅŽๆ›ดๆ–ฐ**: 2026-02-11  
**็ปดๆŠค่€…**: Clare AI Team