Spaces:
Sleeping
Sleeping
| 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`๋ก ์ด๊ธฐ ๋ ๋ ๋ถ๋ด ์ํ | |
| - ๋ชจ๋ฐ์ผ์์๋ ์ ๋ชฉ, ์ต์ ์ค๋ช , ์ด๋ฏธ์ง, ์ฑํ ์ฐฝ๋ง ๋ณด์ด๋ ๋จ์ํ ๋ ์ด์์ | |
| ## ์คํ | |
| ```bash | |
| python app_gradio.py | |
| ``` | |
| ๋ฉ์ ์ ํ UI: | |
| ```bash | |
| python app_gradio_messenger.py | |
| ``` | |
| Hugging Face Spaces ์ง์ ์ : | |
| ```bash | |
| python app.py | |
| ``` | |
| UI ์ ํ: | |
| ```bash | |
| 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` | |
| ## ๋ฌธ์ | |
| - [ADK ์ ๋ฆฌ](docs/Google-ADK.md) | |
| - [๋ฐ์ดํฐ ์์ง ๋ช ์ธ](docs/data-collection-spec.md) | |
| - [Agent ๊ตฌ์กฐ ๋ช ์ธ](docs/agent-architecture.md) | |