RAG5_2_ChooseLLM / docs /project_plan.md
jeongsoo's picture
merge1
867f974
# Gradio RAG ์ฑ—๋ด‡ & LocalPCAgent ์ œ์–ด ์›น์•ฑ ํ†ตํ•ฉ ํ”„๋กœ์ ํŠธ ๊ณ„ํš
## 1. ํ”„๋กœ์ ํŠธ ๊ฐœ์š”
๋ณธ ํ”„๋กœ์ ํŠธ๋Š” ๊ธฐ์กด์— ๊ตฌํ˜„๋œ RAG ์ฑ—๋ด‡ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ LocalPCAgent ์ œ์–ด ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ•˜๋‚˜์˜ ํ†ตํ•ฉ๋œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ๊ฒฐํ•ฉํ•˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋‹จ์ผ ์›น ์ธํ„ฐํŽ˜์ด์Šค ๋‚ด์—์„œ RAG ์ฑ—๋ด‡๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉด์„œ ๋™์‹œ์— ์›๊ฒฉ PC์˜ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋Š” ๋“ฑ์˜ ์ œ์–ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
## 2. ํ”„๋กœ์ ํŠธ ํ˜„์žฌ ์ƒํƒœ
### ์™„๋ฃŒ๋œ ์ž‘์—…
- [x] ๋ฐฑ์—”๋“œ API ํ™•์ธ ๋ฐ ์ค€๋น„ (app_device_routes.py)
- [x] HTML/CSS UI ์š”์†Œ ์ถ”๊ฐ€ (ํ…œํ”Œ๋ฆฟ ์ˆ˜์ •, CSS ์ถ”๊ฐ€)
- [x] JavaScript ์ฝ”์–ด ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ชจ๋“ˆ ์ƒ์„ฑ (app-core.js)
- [x] ์žฅ์น˜ ์ œ์–ด UI ๋ชจ๋“ˆ ์ƒ์„ฑ (app-device.js)
- [x] ๋ฉ”์ธ JavaScript ์ฝ”๋“œ ์—…๋ฐ์ดํŠธ (app.js)
### ๊ตฌ์„ฑ ์š”์†Œ
- **Flask ๋ฐฑ์—”๋“œ**
- app_revised.py: ๋ฉ”์ธ Flask ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
- app_routes.py: RAG ์ฑ—๋ด‡ ๊ด€๋ จ API ๋ผ์šฐํŠธ
- app_device_routes.py: ์žฅ์น˜ ์ œ์–ด ๊ด€๋ จ API ๋ผ์šฐํŠธ
- init_retriever.py: RAG ๊ฒ€์ƒ‰๊ธฐ ์ดˆ๊ธฐํ™” ๊ด€๋ จ ์ฝ”๋“œ
- **์›น ํ”„๋ก ํŠธ์—”๋“œ**
- index.html: ๋ฉ”์ธ UI ํ…œํ”Œ๋ฆฟ (์ฑ„ํŒ…, ๋ฌธ์„œ ๊ด€๋ฆฌ, ์žฅ์น˜ ์ œ์–ด ํƒญ ํฌํ•จ)
- app-core.js: ๊ณตํ†ต ์œ ํ‹ธ๋ฆฌํ‹ฐ JavaScript ๋ชจ๋“ˆ
- app-device.js: ์žฅ์น˜ ์ œ์–ด ๊ด€๋ จ JavaScript ๋ชจ๋“ˆ
- app.js: ๋ฉ”์ธ JavaScript ์ฝ”๋“œ
- device-style.css: ์žฅ์น˜ ์ œ์–ด UI ๊ด€๋ จ ์Šคํƒ€์ผ
## 3. ๊ธฐ๋Šฅ ์„ค๋ช…
### RAG ์ฑ—๋ด‡ ๊ธฐ๋Šฅ
- ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ์งˆ์˜์‘๋‹ต
- ์Œ์„ฑ ์ธ์‹์„ ํ†ตํ•œ ์งˆ์˜์‘๋‹ต
- ๋ฌธ์„œ ์—…๋กœ๋“œ ๋ฐ ๊ด€๋ฆฌ
- ๋‹ค์–‘ํ•œ LLM ๋ชจ๋ธ ์„ ํƒ ๊ฐ€๋Šฅ (OpenAI, DeepSeek ๋“ฑ)
### LocalPCAgent ์ œ์–ด ๊ธฐ๋Šฅ
- ์›๊ฒฉ PC ์ƒํƒœ ํ™•์ธ
- ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ๊ทธ๋žจ ๋ชฉ๋ก ์กฐํšŒ
- ์›๊ฒฉ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰
## 4. ๊ธฐ์ˆ  ์Šคํƒ
### ๋ฐฑ์—”๋“œ
- Flask: ์›น ์„œ๋ฒ„ ๋ฐ API ์ œ๊ณต
- OpenAI/DeepSeek: LLM ๋ชจ๋ธ ํ†ต์‹ 
- VITO STT: ์Œ์„ฑ-ํ…์ŠคํŠธ ๋ณ€ํ™˜
- ์ž„๋ฒ ๋”ฉ/๊ฒ€์ƒ‰: RAG ๊ธฐ๋Šฅ ๊ตฌํ˜„
### ํ”„๋ก ํŠธ์—”๋“œ
- HTML/CSS/JavaScript: ๊ธฐ๋ณธ ์›น ์ธํ„ฐํŽ˜์ด์Šค
- Fetch API: ๋ฐฑ์—”๋“œ ํ†ต์‹ 
- MediaRecorder API: ์˜ค๋””์˜ค ๋…น์Œ
## 5. ํ†ตํ•ฉ ์•„ํ‚คํ…์ฒ˜
### ํ†ตํ•ฉ ๋ฐฉ์‹
์ด ํ”„๋กœ์ ํŠธ๋Š” "Flask ๋ฐฑ์—”๋“œ + HTML/JavaScript ํ”„๋ก ํŠธ์—”๋“œ" ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. RAG ์ฑ—๋ด‡๊ณผ ์žฅ์น˜ ์ œ์–ด ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ†ตํ•ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค:
1. **๋ฐฑ์—”๋“œ ํ†ตํ•ฉ**
- app_revised.py์—์„œ RAG ์ฑ—๋ด‡ ๋ผ์šฐํŠธ(app_routes.py)์™€ ์žฅ์น˜ ์ œ์–ด ๋ผ์šฐํŠธ(app_device_routes.py)๋ฅผ ๋ชจ๋‘ ๋“ฑ๋ก
- ์žฅ์น˜ ์ œ์–ด๋Š” ๋ฐฑ์—”๋“œ์—์„œ LocalPCAgent์™€ ํ†ต์‹  (ํ”„๋ก์‹œ ํŒจํ„ด)
2. **ํ”„๋ก ํŠธ์—”๋“œ ํ†ตํ•ฉ**
- ํƒญ ๊ธฐ๋ฐ˜ UI๋กœ ๊ธฐ๋Šฅ ๋ถ„๋ฆฌ (์ฑ„ํŒ…, ๋ฌธ์„œ ๊ด€๋ฆฌ, ์žฅ์น˜ ์ œ์–ด)
- ๋ชจ๋“ˆํ™”๋œ JavaScript ํŒŒ์ผ๋กœ ๊ฐ ๊ธฐ๋Šฅ ๊ตฌํ˜„
- ๊ณตํ†ต ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜๋Š” app-core.js์— ํ†ตํ•ฉ
### ๋ฐ์ดํ„ฐ ํ๋ฆ„
- ์‚ฌ์šฉ์ž -(์š”์ฒญ)-> ์›น UI -(API ํ˜ธ์ถœ)-> Flask ๋ฐฑ์—”๋“œ -(ํ”„๋ก์‹œ ์š”์ฒญ)-> LocalPCAgent/LLM
- LocalPCAgent/LLM -(์‘๋‹ต)-> Flask ๋ฐฑ์—”๋“œ -(JSON ์‘๋‹ต)-> ์›น UI -(ํ‘œ์‹œ)-> ์‚ฌ์šฉ์ž
## 6. ๋ณด์•ˆ ๊ณ ๋ ค์‚ฌํ•ญ
- ๋ชจ๋“  API์— `@login_required` ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ์ ์šฉํ•˜์—ฌ ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ
- ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง์ ‘ LocalPCAgent URL์— ์ ‘๊ทผํ•˜์ง€ ์•Š๊ณ  ํ•ญ์ƒ Flask ๋ฐฑ์—”๋“œ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผ
- DEVICE_SERVER_URL์€ ์„œ๋ฒ„ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ๋งŒ ๊ด€๋ฆฌ (ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ์— ๋…ธ์ถœ ์•ˆ ํ•จ)
## 7. ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•
### ๋กœ์ปฌ ํ…Œ์ŠคํŠธ
1. LocalPCAgent ์„œ๋ฒ„ ์‹คํ–‰ ๋ฐ ngrok URL ํ™•์ธ
2. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •: `DEVICE_SERVER_URL=<ngrok-url>`
3. Flask ์•ฑ ์‹คํ–‰: `python app.py`
4. ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ `http://localhost:7860` ์ ‘์†
5. ๋กœ๊ทธ์ธ ํ›„ '์žฅ์น˜ ์ œ์–ด' ํƒญ ํ…Œ์ŠคํŠธ
### ๋””๋ฒ„๊น…
- ๋ธŒ๋ผ์šฐ์ € ๊ฐœ๋ฐœ์ž ๋„๊ตฌ ์ฝ˜์†”: JavaScript ๋กœ๊ทธ ๋ฐ ์˜ค๋ฅ˜ ํ™•์ธ
- Flask ์„œ๋ฒ„ ๋กœ๊ทธ: API ์š”์ฒญ ๋ฐ ์‘๋‹ต ํ™•์ธ
- LocalPCAgent ์„œ๋ฒ„ ๋กœ๊ทธ: ์‹ค์ œ ์‹คํ–‰ ๊ฒฐ๊ณผ ํ™•์ธ
## 8. ํ–ฅํ›„ ๊ฐœ์„  ์‚ฌํ•ญ
- ์žฅ์น˜ ์ œ์–ด ๋กœ๊ทธ ์ €์žฅ ๋ฐ ์ด๋ ฅ ์กฐํšŒ ๊ธฐ๋Šฅ
- ์‹คํ–‰ ๊ฒฐ๊ณผ ์Šคํฌ๋ฆฐ์ƒท ์ž๋™ ์บก์ฒ˜ ๋ฐ ํ‘œ์‹œ
- ์‹คํ–‰ ํ”„๋กœ๊ทธ๋žจ ์Šค์ผ€์ค„๋ง (์˜ˆ์•ฝ ์‹คํ–‰)
- ๋” ์ƒ์„ธํ•œ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๋ฐ ๋ณต๊ตฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜
- ์žฅ์น˜ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ๊ณผ ์ฑ—๋ด‡์˜ ์—ฐ๋™ (์ฑ„ํŒ…์œผ๋กœ ์žฅ์น˜ ์ œ์–ด ๋ช…๋ น ๋‚ด๋ฆฌ๊ธฐ)