Megumin-chat / README.md
Junhoee's picture
Update README.md
1670941 verified

A newer version of the Gradio SDK is available: 6.11.0

Upgrade
metadata
title: Megumin RAG Chat
emoji: ๐Ÿ’ฅ
colorFrom: red
colorTo: yellow
sdk: gradio
sdk_version: 6.10.0
app_file: app.py
pinned: false

Megumin RAG Chat

๋ฉ”๊ตฌ๋ฐ๊ณผ ์ง์ ‘ ๋Œ€ํ™”ํ•˜๋Š” ์ฒดํ—˜ํ˜• ์บ๋ฆญํ„ฐ ์ฑ—๋ด‡์ž…๋‹ˆ๋‹ค.
๋ฉ”๊ตฌ๋ฐ์˜ ๋งํˆฌ์™€ ๊ฐ์ •์„ , ๊ทธ๋ฆฌ๊ณ  ์ฝ”๋…ธ์Šค๋ฐ” ์„ค์ • ์ •๋ณด๋ฅผ ํ•จ๊ป˜ ์ฐธ๊ณ ํ•ด ๋‹ต๋ณ€ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ”๋กœ ์จ๋ณด๊ธฐ

์ด๋Ÿฐ ์งˆ๋ฌธ์œผ๋กœ ์‹œ์ž‘ํ•ด๋ณด์„ธ์š”.

  • ๋ฉ”๊ตฌ๋ฐ, ์นด์ฆˆ๋งˆ ์”จ๋ฅผ ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ?
  • ํญ๋ ฌ๋งˆ๋ฒ•์„ ๊ฐ€๋ฅด์ณ ์ค€ ์‚ฌ๋žŒ์€ ๋ˆ„๊ตฌ์ธ๊ฐ€์š”?
  • ์•„์ฟ ์•„์˜ ์„ธ์ดํฌ๋ฆฌ๋“œ ๋ธŒ๋ ˆ์ดํฌ ์ŠคํŽ ์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.
  • ํ™๋งˆ์กฑ๋‹ค์šด ์ž๊ธฐ์†Œ๊ฐœ๋ฅผ ํ•œ ๋ฒˆ ๋“ค๋ ค์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์ฒซ ์ ‘์† ์‹œ ๋ฉ”๊ตฌ๋ฐ์ด ๋จผ์ € ์ธ์‚ฟ๋ง์„ ๊ฑด๋„ค๊ณ , ๋‹ต๋ณ€์€ ADK SSE ์ŠคํŠธ๋ฆฌ๋ฐ์œผ๋กœ ์ ์ง„์ ์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์ด Space์˜ ํŠน์ง•

  • ๋ฉ”๊ตฌ๋ฐ ํŽ˜๋ฅด์†Œ๋‚˜ ๊ธฐ๋ฐ˜ ๋Œ€ํ™”
  • ์„ค์ • RAG + ์Šคํƒ€์ผ RAG ๋™์‹œ ์‚ฌ์šฉ
  • question ์ธ๋ฑ์Šค์™€ question+answer ์ธ๋ฑ์Šค๋ฅผ ํ•จ๊ป˜ ์กฐํšŒํ•˜๋Š” FAISS ๊ฒ€์ƒ‰
  • ์ฒซ ์งˆ๋ฌธ ์‹œ lazy init
  • ์„œ๋น„์Šค ์ค€๋น„ ์ค‘..., ๋‹ต๋ณ€ ์ƒ์„ฑ ์ค‘... ์ƒํƒœ ํ‘œ์‹œ
  • ๊ทœ์น™ ๊ธฐ๋ฐ˜ ์ž‘์€ ์ƒํƒœ ๋ฐฐ์ง€
  • ssr_mode=False๋กœ ์ดˆ๊ธฐ ๋ Œ๋” ๋ถ€๋‹ด ์™„ํ™”
  • ๋ชจ๋ฐ”์ผ์—์„œ๋Š” ์ œ๋ชฉ, ์ตœ์†Œ ์„ค๋ช…, ์ด๋ฏธ์ง€, ์ฑ„ํŒ…์ฐฝ๋งŒ ๋ณด์ด๋Š” ๋‹จ์ˆœํ™” ๋ ˆ์ด์•„์›ƒ

์‹คํ–‰

python app_gradio.py

๋ฉ”์‹ ์ €ํ˜• UI:

python app_gradio_messenger.py

Hugging Face Spaces ์ง„์ž…์ :

python app.py

UI ์„ ํƒ:

MEGUMIN_UI=messenger

๋ฉ”์‹ ์ € ๋ ˆ์ด์•„์›ƒ ๋ฉ”๋ชจ

app_gradio_messenger.py๋Š” ๋ฐ์Šคํฌํ†ฑ ํ™˜๊ฒฝ์—์„œ Gradio ๋ž˜ํผ๊ฐ€ ์„ธ๋กœ๋กœ ๋Š˜์–ด๋‚˜๋Š” ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์ • ๋†’์ด ๋ฉ”์‹ ์ € ๋ ˆ์ด์•„์›ƒ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ์ขŒ์ธก๊ณผ ์šฐ์ธก ์„นํ„ฐ๋Š” Gradio Column(scale=3)๊ณผ Column(scale=7)๋กœ 3:7 ๋น„์œจ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฉ”์‹ ์ € ํŒจ๋„ ๋†’์ด๋Š” ๋ทฐํฌํŠธ ์˜์กด flex ํ™•์žฅ์ด ์•„๋‹ˆ๋ผ CSS ๋ณ€์ˆ˜๋กœ ๊ณ ์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ์šฐ์ธก ์„นํ„ฐ๋Š” ์„ธ ๊ฐœ์˜ ๊ณ ์ • ์—ญํ• ์„ ๊ฐ–๋Š” 3ํ–‰ grid๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ์ƒ๋‹จ ํ—ค๋” = 96px, ์ž…๋ ฅ ์˜์—ญ = 176px, ๋ฉ”์‹œ์ง€ ํ‘œ์‹œ ์˜์—ญ = ๋‚˜๋จธ์ง€ ๋†’์ด
  • ๋ฉ”์‹ ์ € UI์—์„œ๋Š” gr.Blocks(fill_height=True)๋ฅผ ์˜๋„์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Gradio์˜ ์ž๋™ stretch ๋ž˜ํผ๊ฐ€ ๊ณ ์ • ๋†’์ด ๋™์ž‘์„ ๋‹ค์‹œ ๊นจ๋œจ๋ฆด ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
  • ํ”„๋กœํ•„ ์ด๋ฏธ์ง€๋Š” ์™ธ๋ถ€ URL ๋Œ€์‹  ํ”„๋กœ์ ํŠธ ๋‚ด๋ถ€ source_file ํด๋”์˜ ๋กœ์ปฌ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์šฐ์„ ์ˆœ์œ„๋Š” megumin_profile.png, megumin_profile.jpg, megumin_profile.jpeg, megumin_profile.webp์ด๋ฉฐ, ์—†์œผ๋ฉด ๊ฐ™์€ ํด๋”์˜ ์ฒซ ๋ฒˆ์งธ ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ SVG๋Š” ์ด๋ฏธ์ง€ ๋กœ๋“œ ์‹คํŒจ ์‹œ์—๋งŒ ๋ณด์ด๋ฉฐ, source_file ํด๋”๋Š” ๋ฉ”์‹ ์ € ๋‹จ๋… ์‹คํ–‰๊ณผ app.py ๊ฒฝ์œ  ์‹คํ–‰ ๋ชจ๋‘์—์„œ allowed_paths๋กœ ๋ช…์‹œ์ ์œผ๋กœ ์„œ๋น™ํ•ฉ๋‹ˆ๋‹ค.
  • ์ดํ›„ ๋ฉ”์‹ ์ € ๋ ˆ์ด์•„์›ƒ์„ ๋ณ€๊ฒฝํ•˜๋ฉด app_gradio_messenger.py์™€ docs/agent-architecture.md๋ฅผ ํ•จ๊ป˜ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

Hugging Face ๊ตฌ์„ฑ

์•ฑ repo:

  • app.py
  • app_gradio.py
  • megumin_agent/
  • scripts/
  • docs/
  • requirements.txt
  • README.md

dataset repo:

  • megumin_qa_dataset.json
  • megumin_questions.faiss
  • megumin_question_answer.faiss
  • megumin_questions_meta.json
  • namuwiki_qa.json
  • namuwiki_questions.faiss
  • namuwiki_question_answer.faiss
  • namuwiki_questions_meta.json

ํ•„์ˆ˜ Secret:

  • GOOGLE_API_KEY
  • HF_TOKEN

๋ฌธ์„œ