RAG5_2_ChooseLLM / docs /project_plan.md
jeongsoo's picture
merge1
867f974

A newer version of the Gradio SDK is available: 5.42.0

Upgrade

Gradio RAG ์ฑ—๋ด‡ & LocalPCAgent ์ œ์–ด ์›น์•ฑ ํ†ตํ•ฉ ํ”„๋กœ์ ํŠธ ๊ณ„ํš

1. ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

๋ณธ ํ”„๋กœ์ ํŠธ๋Š” ๊ธฐ์กด์— ๊ตฌํ˜„๋œ RAG ์ฑ—๋ด‡ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ LocalPCAgent ์ œ์–ด ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ•˜๋‚˜์˜ ํ†ตํ•ฉ๋œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ๊ฒฐํ•ฉํ•˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋‹จ์ผ ์›น ์ธํ„ฐํŽ˜์ด์Šค ๋‚ด์—์„œ RAG ์ฑ—๋ด‡๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉด์„œ ๋™์‹œ์— ์›๊ฒฉ PC์˜ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋Š” ๋“ฑ์˜ ์ œ์–ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

2. ํ”„๋กœ์ ํŠธ ํ˜„์žฌ ์ƒํƒœ

์™„๋ฃŒ๋œ ์ž‘์—…

  • ๋ฐฑ์—”๋“œ API ํ™•์ธ ๋ฐ ์ค€๋น„ (app_device_routes.py)
  • HTML/CSS UI ์š”์†Œ ์ถ”๊ฐ€ (ํ…œํ”Œ๋ฆฟ ์ˆ˜์ •, CSS ์ถ”๊ฐ€)
  • JavaScript ์ฝ”์–ด ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ชจ๋“ˆ ์ƒ์„ฑ (app-core.js)
  • ์žฅ์น˜ ์ œ์–ด UI ๋ชจ๋“ˆ ์ƒ์„ฑ (app-device.js)
  • ๋ฉ”์ธ 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. ํ–ฅํ›„ ๊ฐœ์„  ์‚ฌํ•ญ

  • ์žฅ์น˜ ์ œ์–ด ๋กœ๊ทธ ์ €์žฅ ๋ฐ ์ด๋ ฅ ์กฐํšŒ ๊ธฐ๋Šฅ
  • ์‹คํ–‰ ๊ฒฐ๊ณผ ์Šคํฌ๋ฆฐ์ƒท ์ž๋™ ์บก์ฒ˜ ๋ฐ ํ‘œ์‹œ
  • ์‹คํ–‰ ํ”„๋กœ๊ทธ๋žจ ์Šค์ผ€์ค„๋ง (์˜ˆ์•ฝ ์‹คํ–‰)
  • ๋” ์ƒ์„ธํ•œ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๋ฐ ๋ณต๊ตฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜
  • ์žฅ์น˜ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ๊ณผ ์ฑ—๋ด‡์˜ ์—ฐ๋™ (์ฑ„ํŒ…์œผ๋กœ ์žฅ์น˜ ์ œ์–ด ๋ช…๋ น ๋‚ด๋ฆฌ๊ธฐ)