File size: 8,736 Bytes
46ed60d ee4186b 46ed60d ee4186b 46ed60d ee4186b 46ed60d ee4186b 46ed60d ee4186b 81b85b6 ee4186b 46ed60d |
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 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 |
---
base_model: unsloth/gemma-2-2b-it
tags:
- text-generation-inference
- transformers
- gemma2
- trl
license: creativeml-openrail-m
language:
- ko
---
# QCR + GEN for Conversational RAG Chatbot
## κ°μ
μ΄ λͺ¨λΈμ **QCR**(Query Context Rewriter)κ³Ό **GEN**(Generator) κΈ°λ₯μ λμμ μννλ νλμ LoRA μ΄λν° λͺ¨λΈμ
λλ€. κ²μ κΈ°λ° μ±λ΄μ΄λ RAG(Retrieval-Augmented Generation) μμ€ν
μμ νμ©ν μ μλλ‘ μ€κ³λμμ΅λλ€.
- **QCR κΈ°λ₯**: μ¬μ©μμ μ
λ ₯μ λΆμνμ¬ κ²μμ νμν 쿼리λ₯Ό μμ±νκ±°λ, νμνμ§ μμ κ²½μ° λΉ λ¬Έμμ΄μ λ°νν©λλ€.
- **GEN κΈ°λ₯**: κ²μλ λ¬Έμ μ²ν¬(λλ 컨ν
μ€νΈ)λ₯Ό νμ©νμ¬ μμ°μ€λ¬μ΄ λ΅λ³μ μμ±ν©λλ€.
μ΄ λͺ¨λΈμ 4bit μμνλ λ²μ μ μ§μνμ§ μμ΅λλ€.
## λ°μ΄ν°μ
λ° νμ΅ νΉμ§
- **10κ° μ£Όμ ν ν½**(κ°μ‘±/μ£Όκ±°, μ€ν¬μΈ , μΌν, λ―Έμ©/κ±΄κ° λ±)μ λν λ°μ΄ν°λ₯Ό μ¦κ°νμ¬ μ μ.
- **μ½ 18,000κ°μ QCR + GEN μν** ν¬ν¨.
- **QCR λ°μ΄ν°**
- μΌλ° λν(μΈμ¬, λλ΄ λ±)λ **λΉ λ¬Έμμ΄**(`""`)μ λ°ννμ¬ κ²μμ μλ΅νκ³ μ¦μ λ΅λ³ κ°λ₯.
- **GEN λ°μ΄ν°**
- κ²μλ λ¬Έμ μ²ν¬(μ΅λ 5κ°, κ° 512 ν ν° μ΄ν)λ₯Ό νμ©νμ¬ λ΅λ³ μμ±.
- **6κ°μ§ λ€μν λ°μ΄ν° ꡬμ±**:
1. κ΄λ ¨ μ λ³΄κ° μλ λ΅λ³
2. κ΄λ ¨ μ λ³΄κ° μλ λ΅λ³
3. κ΄λ ¨μ±μ΄ νΌμ¬λ μν©
4. κ²μ μ²ν¬κ° μ ν μλ κ²½μ° λ±
μ΄λ¬ν λ°μ΄ν° ꡬμ±μ ν΅ν΄ **λ μμ°μ€λ¬μ΄ λν**λ₯Ό ꡬνν μ μλλ‘ νμ΅λμμ΅λλ€.
## λͺ¨λΈ μ¬μ© λ°©μ
1. **QCRμ ν΅ν΄ κ²μ 쿼리 μμ±** β κ²μ μμ§μ ν΅ν΄ λ¬Έμ κ²μ β **GENμΌλ‘ λ΅λ³ μμ±**
2. λΆνμν κ²μ λ°©μ§(QCRμ΄ λΉ λ¬Έμμ΄ λ°ν) β μΈμ¬, μ‘λ΄ λ±μ μ§μ μλ΅ κ°λ₯.
3. 4bit μμν λͺ¨λΈ μ¬μ© κ°λ₯ β λ©λͺ¨λ¦¬ μ κ° λ° κ³ μ μΆλ‘ κ°λ₯.
## ν둬ννΈ ν
νλ¦Ώ
### Query Context Rewriter (QCR)
```
# Query Rewriter
### Instruction:
λ€μμ λν κΈ°λ‘(Context)μ μ¬μ©μμ μ§λ¬Έ(Input)μ
λλ€.
μ¬μ©μμ μ§λ¬Έμ λ΅μ μ 곡νκΈ° μν΄ νμν λ¨μΌ λ¬Έμμ΄ κ²μ 쿼리λ₯Ό μμ±νμΈμ.
κ²μμ΄ νμνμ§ μκ±°λ μΏΌλ¦¬κ° λΆνμν κ²½μ°(μΈμ¬, μ‘λ΄ λ±)μλ λΉ λ¬Έμμ΄μ λ°ννμΈμ.
μ΅μ’
μΆλ ₯ νμμ {'search': '<κ²μ 쿼리>'}μ
λλ€.
### Conversation:
{λν λ§₯λ½}
### Input:
{μ¬μ©μ μ§λ¬Έ}
### Response:
{'search': '{μμ±λ κ²μ 쿼리 λλ λΉ λ¬Έμμ΄}'}
```
### Generator (GEN)
```
# Generator
### Instruction:
λΉμ μ μΈλΆκ²μμ μ΄μ©νμ¬ μ¬μ©μμκ² λμμ μ£Όλ μΈκ³΅μ§λ₯ μ‘°μμ
λλ€.
- Contextλ μΈλΆκ²μμ ν΅ν΄ λ°νλ μ¬μ©μ μμ²κ³Ό κ΄λ ¨λ μ 보λ€μ
λλ€.
- Contextλ₯Ό νμ©ν λ λ¬Έμ₯ λμ μ¬μ©ν λ¬Έμ μ‘°κ°μ [Index]λ₯Ό λΆμ΄κ³ μμ°μ€λ¬μ΄ λ΅λ³μ μμ±νμΈμ. (e.g. [1])
- Contextμ μ λ³΄κ° μ¬μ©μ μμ²κ³Ό κ΄λ ¨μ΄ μκ±°λ λμμ΄ μλ μ μμ΅λλ€. κ΄λ ¨μλ μ λ³΄λ§ νμ©νκ³ , μλ μ 보λ₯Ό μ λ μ§μ΄λ΄μ§ λ§μΈμ.
- λλλ‘μ΄λ©΄ μΌλ° μ§μμΌλ‘ λ΅λ³νμ§ λ§κ³ , μ΅λν Contextλ₯Ό ν΅ν΄ λ΅λ³μ νλ €κ³ νμΈμ.
- Contextμ μμ κ²½μ°μλ μ΄ μ μ μΈκΈνλ©° μ¬μ£νκ³ λ€λ₯Έ μ£Όμ λ μ§λ¬Έμ μΆμ²ν΄μ£ΌμΈμ.
- μ¬μ©μ μμ²μ μλ§λ μμ°μ€λ¬μ΄ λνλ₯Ό νμΈμ.
- νμ μ‘΄λλ§λ‘ λ΅λ³νμΈμ.
### Conversation:
{λν λ§₯λ½}
### Context:
{κ²μλ λ¬Έμ μ²ν¬}
### Input:
{μ¬μ©μ μ§λ¬Έ}
### Response:
{λͺ¨λΈμ΄ μμ±ν μλ΅}
```
# μμ λν μν
## 1. κ²μμ΄ νμ μλ κ²½μ°
### μμ 1: μΈμ¬ λ° μΌλ°μ μΈ λν
```
User> μλ
? λ λꡬλ?
[QCR λ¨κ³] κ²μ 쿼리 μμ±...
{'search': ''} β κ²μ λΆνμλ‘ νλ¨.
[λ΅λ³ μμ± μ€]...
Assistant> μλ
νμΈμ! μ λ μΈλΆκ²μμ ν΅ν΄ λ€μν μ 보λ₯Ό νμ©νμ¬ μ¬μ©μλκ» λμμ μ£Όλ μΈκ³΅μ§λ₯ μ‘°μμ
λλ€. μ΄λ€ μ£Όμ λ μ§λ¬Έμ΄λ νΈνκ² λ§μν΄ μ£ΌμΈμ. μ€λ νλ£¨κ° μ΄λ μ
¨λμ?
```
## 2. κ²μμ΄ νμν κ²½μ°
### μμ 2: μν μΆμ² μμ²
```
User> λ·νλ¦μ€μμ λ³Όλ§ν μν μΆμ²ν΄μ€.
[QCR λ¨κ³] κ²μ 쿼리 μμ±...
{'search': 'λ·νλ¦μ€ μΆμ² μν λͺ©λ‘'} β κ²μ νμ.
[κ²μλ λ¬Έμ νμ© ν λ΅λ³ μμ±]
Assistant> λ·νλ¦μ€μμ μΈκΈ° μλ μν λͺ©λ‘μ λ€μκ³Ό κ°μ΅λλ€.
1. 'λΈλ λ―Έλ¬: λ°΄λμ€λ΄μΉ'
2. 'λ 룩 μ
'
3. 'μ΅μ€νΈλμ
'
λ κΆκΈν μ μ΄ μμΌμλ©΄ λ§μν΄μ£ΌμΈμ!
```
### μμ 3: νΉμ μ 보 μμ² (μ€ν¬μΈ κ·μΉ)
```
User> 볡μ±μ λ£°μ΄ μ΄λ»κ² λλμ?
[QCR λ¨κ³] κ²μ 쿼리 μμ±...
{'search': 'λ³΅μ± λ£° μ€λͺ
'} β κ²μ νμ.
[κ²μλ λ¬Έμ νμ© ν λ΅λ³ μμ±]
Assistant> λ³΅μ± κ²½κΈ°μ κΈ°λ³Έ λ£°μ λ€μκ³Ό κ°μ΅λλ€.
- κ° λΌμ΄λλ 3λΆ μ§νλλ©°, 1λΆμ ν΄μμ΄ μ£Όμ΄μ§λλ€.
- κΈλ¬λΈ μ°©μ©μ νμμ΄λ©°, λ€μ΄λ μ μλ 10μ΄ μμ μΌμ΄λμΌ ν©λλ€.
- μ£Όμ ν격 κΈ°μ λ‘λ μ€νΈλ μ΄νΈ, ν
, μ΄νΌμ»· λ±μ΄ μμ΅λλ€.
λ κΆκΈν μ¬νμ΄ μμΌμλ©΄ μ§λ¬Έν΄μ£ΌμΈμ!
```
## 3. κ³Όκ±° λν κΈ°λ° μ§λ¬Έ
### μμ 4: λ¬Έλ§₯μ μ μ§ν μ§λ¬Έ
```
User> λ·νλ¦μ€ μν μΆμ²ν΄μ€.
[QCR λ¨κ³] κ²μ 쿼리 μμ±...
{'search': 'λ·νλ¦μ€ μΆμ² μν λͺ©λ‘'} β κ²μ νμ.
[κ²μλ λ¬Έμ νμ© ν λ΅λ³ μμ±]
Assistant> λ·νλ¦μ€μμ μΈκΈ° μλ μν λͺ©λ‘μ λ€μκ³Ό κ°μ΅λλ€.
1. 'λΈλ λ―Έλ¬: λ°΄λμ€λ΄μΉ'
2. 'λ 룩 μ
'
3. 'μ΅μ€νΈλμ
'
User> μ€μ§μ΄ κ²μμ μ΄λ?
[QCR λ¨κ³] κ²μ 쿼리 μμ±...
{'search': 'μ€μ§μ΄ κ²μ μ 보'} β κ²μ νμ.
[κ²μλ λ¬Έμ νμ© ν λ΅λ³ μμ±]
Assistant> 'μ€μ§μ΄ κ²μ'μ λ·νλ¦μ€μμ λ°©μλ μΈκΈ° μλ°μ΄λ² λλΌλ§λ‘, 456μ΅ μμ μκΈμ 건 μμ‘΄ κ²μμ λ€λ£Ήλλ€. κ²μμλ '무κΆνκ½μ΄ νΌμμ΅λλ€', 'λ¬κ³ λ λ½κΈ°' λ±μ νκ΅ μ ν΅ λμ΄κ° ν¬ν¨λμ΄ μμ΅λλ€. μμ¦ 2 μ μμ΄ νμ λμμΌλ©°, 2024λ
λ°©μ μμ μ
λλ€. λ μμΈν μ λ³΄κ° νμνμλ©΄ μλ €μ£ΌμΈμ!
```
## 4. κ°μμ€λ¬μ΄ ν ν½ λ³κ²½
### μμ 5: κ²μ μ€κ°μ μ£Όμ μ ν
```
User> λ·νλ¦μ€μμ λ³Όλ§ν μν μΆμ²ν΄μ€.
[QCR λ¨κ³] κ²μ 쿼리 μμ±...
{'search': 'λ·νλ¦μ€ μΆμ² μν λͺ©λ‘'} β κ²μ νμ.
User> κ·Όλ° λ μ¬λ§ κ·μΉμ μ΄λ»κ² λΌ?
[QCR λ¨κ³] κ²μ 쿼리 μμ±...
{'search': 'λ μ¬λ§ κ·μΉ μ€λͺ
'} β κ²μ νμ.
[κ²μλ λ¬Έμ νμ© ν λ΅λ³ μμ±]
Assistant> λ μ¬λ§μ λμ§κΈ°, μ°λ¬λ¨λ¦¬κΈ°, κΊΎκΈ° λ±μ κΈ°μ μ μ΄μ©νμ¬ μλλ₯Ό μ μνλ μ€ν¬μΈ μ
λλ€. κ²½κΈ° λ°©μμ μ¬λ¦Όν½ μ€νμΌμΈ 'κ·Έλ μ½λ‘λ§ν'κ³Ό 'μμ ν'μΌλ‘ λλ©λλ€. νΉμ κ·μΉμ΄ κΆκΈνμλ€λ©΄ μΆκ°λ‘ μ§λ¬Έν΄μ£ΌμΈμ!
```
μ΄λ¬ν μμλ€μ μ°Έκ³ νμ¬ κ²μ κΈ°λ° λͺ¨λΈμ ν¨κ³Όμ μΌλ‘ νμ©ν μ μμ΅λλ€.
## ν
μ€νΈ λ
ΈνΈλΆ (Colab)
κ°λ¨ν μ½λλ₯Ό μ€νν΄λ³΄λ €λ©΄ [test_run.ipynb](https://colab.research.google.com/github/Austin9/gemma-2-9b-it-Ko-RAG/blob/main/test_run.ipynb) νμΌμ Google Colabμμ λ°λ‘ μ΄μ΄λ³΄μΈμ.
- **λ°νμ μ ν**μμ GPUλ₯Ό **T4**λ‘ μ ννμΈμ.
- μ μ½λ© νμΌμ 9b λͺ¨λΈ μΆλ‘ νμΌμ΄κΈ° λλ¬Έμ, λͺ¨λΈ λ‘λ©μ 9b -> 2bλ‘ λ³κ²½νκ³ load_in_4bit λ³μλ₯Ό Falseλ‘ λ³κ²½ ν μ¬μ©ν΄μΌν©λλ€.
- μ΄ν, **μ
μ μμλλ‘ μ€ν**νλ©° νμν λΌμ΄λΈλ¬λ¦¬λ₯Ό μ€μΉνκ³ λͺ¨λΈ λ° FAISS μΈλ±μ€λ₯Ό λ‘λν©λλ€.
- μμ±λ RAG κΈ°λ° μ±λ΄ μμ μ½λλ₯Ό 체νν μ μμ΅λλ€.
## μ£Όμμ¬ν
- κ²μ μμ§κ³Ό ν¨κ» μ¬μ©ν κ²½μ° **QCRμ λ¨Όμ μ€ννμ¬ κ²μ 쿼리λ₯Ό μμ±**ν ν, κ²μλ λ¬Έμ μ²ν¬λ₯Ό λ°νμΌλ‘ **GENμ μ€ν**ν΄μΌ ν©λλ€.
- κ²μλ μ²ν¬λ μ΅λ **512 ν ν°** κΈΈμ΄μ΄λ©°, νμ΅ κ³Όμ μμ **μ΅λ 5κ°μ μ²ν¬**λ₯Ό λ°μνμμΌλ―λ‘ μ΄μ λ§μΆ° νμ©νλ κ²μ΄ μ€μν©λλ€.
- QCRμ **ν둬ννΈ νμμ λ°λμ μ§μΌμΌ** κ²μ 쿼리 μμ±μ΄ μ¬λ°λ₯΄κ² μ΄λ£¨μ΄μ§λλ€.
- GENμ λ΅λ³μμλ κ²μλ λ¬Έμ μΆμ²(Index)λ₯Ό μ νν κΈ°μ¬ν΄μΌ νλ©°, κ΄λ ¨μ±μ΄ μμΌλ©΄ μλλλ‘ μλ΄ν΄μΌ ν©λλ€.
- μ 2b λͺ¨λΈ κ°μ κ²½μ°λ 9b λͺ¨λΈμ λΉνμ¬ μΈμ΄μ , λ
Όλ¦¬μ μΈ‘λ©΄μμ μ¦μ ν 루μλ€μ΄μ
μ 체νν μ μμ΅λλ€.
μ΄ λͺ¨λΈμ ν΅ν΄ λ³΄λ€ **ν¨μ¨μ μΈ κ²μ + μ νν λ΅λ³**μ μ 곡νλ AI μμ€ν
μ ꡬμΆν μ μμ΅λλ€.
|