Spaces:
Sleeping
Sleeping
File size: 3,558 Bytes
6efb911 7245599 7e32ca3 7245599 6efb911 f32f861 6efb911 883c35f 7245599 23361a6 7245599 d66a427 7245599 d66a427 7245599 d66a427 7245599 7d395cb 23361a6 d66a427 23361a6 7e32ca3 23361a6 7245599 51285c9 7245599 7d395cb 883c35f 7245599 7d395cb 1670941 d66a427 7245599 d66a427 7245599 883c35f 7245599 d66a427 7245599 883c35f b27167a 883c35f b27167a 883c35f 7245599 883c35f 7245599 883c35f d66a427 51285c9 d66a427 51285c9 d66a427 883c35f 7e32ca3 | 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 | ---
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)
|