Austin9 commited on
Commit
ee4186b
Β·
verified Β·
1 Parent(s): 0ebca69

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +179 -9
README.md CHANGED
@@ -3,20 +3,190 @@ base_model: unsloth/gemma-2-2b-it
3
  tags:
4
  - text-generation-inference
5
  - transformers
6
- - unsloth
7
  - gemma2
8
  - trl
9
- license: apache-2.0
10
  language:
11
- - en
12
  ---
13
 
14
- # Uploaded model
15
 
16
- - **Developed by:** Austin9
17
- - **License:** apache-2.0
18
- - **Finetuned from model :** unsloth/gemma-2-2b-it
19
 
20
- This gemma2 model was trained 2x faster with [Unsloth](https://github.com/unslothai/unsloth) and Huggingface's TRL library.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
 
22
- [<img src="https://raw.githubusercontent.com/unslothai/unsloth/main/images/unsloth%20made%20with%20love.png" width="200"/>](https://github.com/unslothai/unsloth)
 
3
  tags:
4
  - text-generation-inference
5
  - transformers
 
6
  - gemma2
7
  - trl
8
+ license: creativeml-openrail-m
9
  language:
10
+ - ko
11
  ---
12
 
13
+ # QCR + GEN for Conversational RAG Chatbot
14
 
15
+ ## κ°œμš”
 
 
16
 
17
+ 이 λͺ¨λΈμ€ **QCR**(Query Context Rewriter)κ³Ό **GEN**(Generator) κΈ°λŠ₯을 λ™μ‹œμ— μˆ˜ν–‰ν•˜λŠ” ν•˜λ‚˜μ˜ LoRA μ–΄λŒ‘ν„° λͺ¨λΈμž…λ‹ˆλ‹€. 검색 기반 μ±—λ΄‡μ΄λ‚˜ RAG(Retrieval-Augmented Generation) μ‹œμŠ€ν…œμ—μ„œ ν™œμš©ν•  수 μžˆλ„λ‘ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
18
+
19
+ - **QCR κΈ°λŠ₯**: μ‚¬μš©μžμ˜ μž…λ ₯을 λΆ„μ„ν•˜μ—¬ 검색에 ν•„μš”ν•œ 쿼리λ₯Ό μƒμ„±ν•˜κ±°λ‚˜, ν•„μš”ν•˜μ§€ μ•Šμ„ 경우 빈 λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•©λ‹ˆλ‹€.
20
+ - **GEN κΈ°λŠ₯**: κ²€μƒ‰λœ λ¬Έμ„œ 청크(λ˜λŠ” μ»¨ν…μŠ€νŠΈ)λ₯Ό ν™œμš©ν•˜μ—¬ μžμ—°μŠ€λŸ¬μš΄ 닡변을 μƒμ„±ν•©λ‹ˆλ‹€.
21
+
22
+ 이 λͺ¨λΈμ€ 4bit μ–‘μžν™”λœ 버전을 μ§€μ›ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
23
+
24
+ ## 데이터셋 및 ν•™μŠ΅ νŠΉμ§•
25
+
26
+ - **10개 μ£Όμš” ν† ν”½**(κ°€μ‘±/μ£Όκ±°, 슀포츠, μ‡Όν•‘, 미용/건강 λ“±)의 λŒ€ν™” 데이터λ₯Ό μ¦κ°•ν•˜μ—¬ μ œμž‘.
27
+ - **μ•½ 18,000개의 QCR + GEN μƒ˜ν”Œ** 포함.
28
+ - **QCR 데이터**
29
+ - 일반 λŒ€ν™”(인사, 농담 λ“±)λŠ” **빈 λ¬Έμžμ—΄**(`""`)을 λ°˜ν™˜ν•˜μ—¬ 검색을 μƒλž΅ν•˜κ³  μ¦‰μ‹œ λ‹΅λ³€ κ°€λŠ₯.
30
+ - **GEN 데이터**
31
+ - κ²€μƒ‰λœ λ¬Έμ„œ 청크(μ΅œλŒ€ 5개, 각 512 토큰 μ΄ν•˜)λ₯Ό ν™œμš©ν•˜μ—¬ λ‹΅λ³€ 생성.
32
+ - **6가지 λ‹€μ–‘ν•œ 데이터 ꡬ성**:
33
+ 1. κ΄€λ ¨ 정보가 μžˆλŠ” λ‹΅λ³€
34
+ 2. κ΄€λ ¨ 정보가 μ—†λŠ” λ‹΅λ³€
35
+ 3. 관련성이 혼재된 상황
36
+ 4. 검색 청크가 μ „ν˜€ μ—†λŠ” 경우 λ“±
37
+
38
+ μ΄λŸ¬ν•œ 데이터 ꡬ성을 톡해 **더 μžμ—°μŠ€λŸ¬μš΄ λŒ€ν™”**λ₯Ό κ΅¬ν˜„ν•  수 μžˆλ„λ‘ ν•™μŠ΅λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
39
+
40
+ ## λͺ¨λΈ μ‚¬μš© 방식
41
+
42
+ 1. **QCR을 톡해 검색 쿼리 생성** β†’ 검색 엔진을 톡해 λ¬Έμ„œ 검색 β†’ **GEN으둜 λ‹΅λ³€ 생성**
43
+ 2. λΆˆν•„μš”ν•œ 검색 방지(QCR이 빈 λ¬Έμžμ—΄ λ°˜ν™˜) β†’ 인사, μž‘λ‹΄ 등은 직접 응닡 κ°€λŠ₯.
44
+ 3. 4bit μ–‘μžν™” λͺ¨λΈ μ‚¬μš© κ°€λŠ₯ β†’ λ©”λͺ¨λ¦¬ 절감 및 고속 μΆ”λ‘  κ°€λŠ₯.
45
+
46
+ ## ν”„λ‘¬ν”„νŠΈ ν…œν”Œλ¦Ώ
47
+
48
+ ### Query Context Rewriter (QCR)
49
+ ```
50
+ # Query Rewriter
51
+
52
+ ### Instruction:
53
+ λ‹€μŒμ€ λŒ€ν™” 기둝(Context)와 μ‚¬μš©μžμ˜ 질문(Input)μž…λ‹ˆλ‹€.
54
+ μ‚¬μš©μžμ˜ μ§ˆλ¬Έμ— 닡을 μ œκ³΅ν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ 단일 λ¬Έμžμ—΄ 검색 쿼리λ₯Ό μƒμ„±ν•˜μ„Έμš”.
55
+ 검색이 ν•„μš”ν•˜μ§€ μ•Šκ±°λ‚˜ 쿼리가 λΆˆν•„μš”ν•œ 경우(인사, μž‘λ‹΄ λ“±)μ—λŠ” 빈 λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•˜μ„Έμš”.
56
+
57
+ μ΅œμ’… 좜λ ₯ ν˜•μ‹μ€ {'search': '<검색 쿼리>'}μž…λ‹ˆλ‹€.
58
+
59
+ ### Conversation:
60
+ {λŒ€ν™” λ§₯락}
61
+
62
+ ### Input:
63
+ {μ‚¬μš©μž 질문}
64
+
65
+ ### Response:
66
+ {'search': '{μƒμ„±λœ 검색 쿼리 λ˜λŠ” 빈 λ¬Έμžμ—΄}'}
67
+ ```
68
+
69
+ ### Generator (GEN)
70
+ ```
71
+ # Generator
72
+
73
+ ### Instruction:
74
+ 당신은 외뢀검색을 μ΄μš©ν•˜μ—¬ μ‚¬μš©μžμ—κ²Œ 도움을 μ£ΌλŠ” 인곡지λŠ₯ μ‘°μˆ˜μž…λ‹ˆλ‹€.
75
+
76
+ - ContextλŠ” 외뢀검색을 톡해 λ°˜ν™˜λœ μ‚¬μš©μž μš”μ²­κ³Ό κ΄€λ ¨λœ μ •λ³΄λ“€μž…λ‹ˆλ‹€.
77
+ - Contextλ₯Ό ν™œμš©ν•  λ•Œ λ¬Έμž₯ 끝에 μ‚¬μš©ν•œ λ¬Έμ„œ 쑰각의 [Index]λ₯Ό 뢙이고 μžμ—°μŠ€λŸ¬μš΄ 닡변을 μž‘μ„±ν•˜μ„Έμš”. (e.g. [1])
78
+ - Context의 정보가 μ‚¬μš©μž μš”μ²­κ³Ό 관련이 μ—†κ±°λ‚˜ 도움이 μ•ˆλ  수 μžˆμŠ΅λ‹ˆλ‹€. κ΄€λ ¨μžˆλŠ” μ •λ³΄λ§Œ ν™œμš©ν•˜κ³ , μ—†λŠ” 정보λ₯Ό μ ˆλŒ€ 지어내지 λ§ˆμ„Έμš”.
79
+ - λ˜λ„λ‘μ΄λ©΄ 일반 μ§€μ‹μœΌλ‘œ λ‹΅λ³€ν•˜μ§€ 말고, μ΅œλŒ€ν•œ Contextλ₯Ό 톡해 닡변을 ν•˜λ €κ³  ν•˜μ„Έμš”.
80
+ - Context에 없을 κ²½μš°μ—λŠ” 이 점을 μ–ΈκΈ‰ν•˜λ©° μ‚¬μ£„ν•˜κ³  λ‹€λ₯Έ μ£Όμ œλ‚˜ μ§ˆλ¬Έμ„ μΆ”μ²œν•΄μ£Όμ„Έμš”.
81
+ - μ‚¬μš©μž μš”μ²­μ— μ•Œλ§žλŠ” μžμ—°μŠ€λŸ¬μš΄ λŒ€ν™”λ₯Ό ν•˜μ„Έμš”.
82
+ - 항상 μ‘΄λŒ“λ§λ‘œ λ‹΅λ³€ν•˜μ„Έμš”.
83
+
84
+ ### Conversation:
85
+ {λŒ€ν™” λ§₯락}
86
+
87
+ ### Context:
88
+ {κ²€μƒ‰λœ λ¬Έμ„œ 청크}
89
+
90
+ ### Input:
91
+ {μ‚¬μš©μž 질문}
92
+
93
+ ### Response:
94
+ {λͺ¨λΈμ΄ μƒμ„±ν•œ 응닡}
95
+ ```
96
+
97
+ # μ˜ˆμ‹œ λŒ€ν™” μƒ˜ν”Œ
98
+
99
+ ## 1. 검색이 ν•„μš” μ—†λŠ” 경우
100
+ ### 예제 1: 인사 및 일반적인 λŒ€ν™”
101
+ ```
102
+ User> μ•ˆλ…•? λ„Œ λˆ„κ΅¬λ‹ˆ?
103
+
104
+ [QCR 단계] 검색 쿼리 생성...
105
+ {'search': ''} β†’ 검색 λΆˆν•„μš”λ‘œ νŒλ‹¨.
106
+
107
+ [λ‹΅λ³€ 생성 쀑]...
108
+ Assistant> μ•ˆλ…•ν•˜μ„Έμš”! μ €λŠ” 외뢀검색을 톡해 λ‹€μ–‘ν•œ 정보λ₯Ό ν™œμš©ν•˜μ—¬ μ‚¬μš©μžλ‹˜κ»˜ 도움을 μ£ΌλŠ” 인곡지λŠ₯ μ‘°μˆ˜μž…λ‹ˆλ‹€. μ–΄λ–€ μ£Όμ œλ‚˜ μ§ˆλ¬Έμ΄λ“  νŽΈν•˜κ²Œ 말씀해 μ£Όμ„Έμš”. 였늘 ν•˜λ£¨κ°€ μ–΄λ– μ…¨λ‚˜μš”?
109
+ ```
110
+
111
+ ## 2. 검색이 ν•„μš”ν•œ 경우
112
+ ### 예제 2: μ˜ν™” μΆ”μ²œ μš”μ²­
113
+ ```
114
+ User> λ„·ν”Œλ¦­μŠ€μ—μ„œ λ³Όλ§Œν•œ μ˜ν™” μΆ”μ²œν•΄μ€˜.
115
+
116
+ [QCR 단계] 검색 쿼리 생성...
117
+ {'search': 'λ„·ν”Œλ¦­μŠ€ μΆ”μ²œ μ˜ν™” λͺ©λ‘'} β†’ 검색 ν•„μš”.
118
+
119
+ [κ²€μƒ‰λœ λ¬Έμ„œ ν™œμš© ν›„ λ‹΅λ³€ 생성]
120
+ Assistant> λ„·ν”Œλ¦­μŠ€μ—μ„œ 인기 μžˆλŠ” μ˜ν™” λͺ©λ‘μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
121
+ 1. 'λΈ”λž™ 미러: λ°΄λ”μŠ€λ‚΄μΉ˜'
122
+ 2. '돈 룩 μ—…'
123
+ 3. 'μ΅μŠ€νŠΈλž™μ…˜'
124
+ 더 κΆκΈˆν•œ 점이 μžˆμœΌμ‹œλ©΄ λ§μ”€ν•΄μ£Όμ„Έμš”!
125
+ ```
126
+
127
+ ### 예제 3: νŠΉμ • 정보 μš”οΏ½οΏ½οΏ½ (슀포츠 κ·œμΉ™)
128
+ ```
129
+ User> λ³΅μ‹±μ˜ 룰이 μ–΄λ–»κ²Œ λ˜λ‚˜μš”?
130
+
131
+ [QCR 단계] 검색 쿼리 생성...
132
+ {'search': '볡싱 λ£° μ„€λͺ…'} β†’ 검색 ν•„μš”.
133
+
134
+ [κ²€μƒ‰λœ λ¬Έμ„œ ν™œμš© ν›„ λ‹΅λ³€ 생성]
135
+ Assistant> 볡싱 경기의 κΈ°λ³Έ 룰은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
136
+ - 각 λΌμš΄λ“œλŠ” 3λΆ„ μ§„ν–‰λ˜λ©°, 1λΆ„μ˜ νœ΄μ‹μ΄ μ£Όμ–΄μ§‘λ‹ˆλ‹€.
137
+ - κΈ€λŸ¬λΈŒ μ°©μš©μ€ ν•„μˆ˜μ΄λ©°, λ‹€μš΄λœ μ„ μˆ˜λŠ” 10초 μ•ˆμ— μΌμ–΄λ‚˜μ•Ό ν•©λ‹ˆλ‹€.
138
+ - μ£Όμš” 타격 κΈ°μˆ λ‘œλŠ” 슀트레이트, ν›…, 어퍼컷 등이 μžˆμŠ΅λ‹ˆλ‹€.
139
+ 더 κΆκΈˆν•œ 사항이 μžˆμœΌμ‹œλ©΄ μ§ˆλ¬Έν•΄μ£Όμ„Έμš”!
140
+ ```
141
+
142
+ ## 3. κ³Όκ±° λŒ€ν™” 기반 질문
143
+ ### 예제 4: λ¬Έλ§₯을 μœ μ§€ν•œ 질문
144
+ ```
145
+ User> λ„·ν”Œλ¦­μŠ€ μ˜ν™” μΆ”μ²œν•΄μ€˜.
146
+
147
+ [QCR 단계] 검색 쿼리 생성...
148
+ {'search': 'λ„·ν”Œλ¦­μŠ€ μΆ”μ²œ μ˜ν™” λͺ©λ‘'} β†’ 검색 ν•„μš”.
149
+
150
+ [κ²€μƒ‰λœ λ¬Έμ„œ ν™œμš© ν›„ λ‹΅λ³€ 생성]
151
+ Assistant> λ„·ν”Œλ¦­μŠ€μ—μ„œ 인기 μžˆλŠ” μ˜ν™” λͺ©λ‘μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
152
+ 1. 'λΈ”λž™ 미러: λ°΄λ”μŠ€λ‚΄μΉ˜'
153
+ 2. '돈 룩 μ—…'
154
+ 3. 'μ΅μŠ€νŠΈλž™μ…˜'
155
+
156
+ User> μ˜€μ§•μ–΄ κ²Œμž„μ€ μ–΄λ•Œ?
157
+
158
+ [QCR 단계] 검색 쿼리 생성...
159
+ {'search': 'μ˜€μ§•μ–΄ κ²Œμž„ 정보'} β†’ 검색 ν•„μš”.
160
+
161
+ [κ²€μƒ‰λœ λ¬Έμ„œ ν™œμš© ν›„ λ‹΅λ³€ 생성]
162
+ Assistant> 'μ˜€μ§•μ–΄ κ²Œμž„'은 λ„·ν”Œλ¦­μŠ€μ—μ„œ 방영된 인기 μ„œλ°”μ΄λ²Œ λ“œλΌλ§ˆλ‘œ, 456μ–΅ μ›μ˜ μƒκΈˆμ„ 건 생쑴 κ²Œμž„μ„ λ‹€λ£Ήλ‹ˆλ‹€. κ²Œμž„μ—λŠ” '무ꢁ화꽃이 ν”Όμ—ˆμŠ΅λ‹ˆλ‹€', 'λ‹¬κ³ λ‚˜ 뽑기' λ“±μ˜ ν•œκ΅­ 전톡 놀이가 ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. μ‹œμ¦Œ 2 μ œμž‘μ΄ ν™•μ •λ˜μ—ˆμœΌλ©°, 2024λ…„ 방영 μ˜ˆμ •μž…λ‹ˆλ‹€. 더 μžμ„Έν•œ 정보가 ν•„μš”ν•˜μ‹œλ©΄ μ•Œλ €μ£Όμ„Έμš”!
163
+ ```
164
+
165
+ ## 4. κ°‘μž‘μŠ€λŸ¬μš΄ ν† ν”½ λ³€κ²½
166
+ ### 예제 5: 검색 쀑간에 주제 μ „ν™˜
167
+ ```
168
+ User> λ„·ν”Œλ¦­μŠ€μ—μ„œ λ³Όλ§Œν•œ μ˜ν™” μΆ”μ²œν•΄μ€˜.
169
+
170
+ [QCR 단계] 검색 쿼리 생성...
171
+ {'search': 'λ„·ν”Œλ¦­μŠ€ μΆ”μ²œ μ˜ν™” λͺ©λ‘'} β†’ 검색 ν•„μš”.
172
+
173
+ User> 근데 레슬링 κ·œμΉ™μ€ μ–΄λ–»κ²Œ 돼?
174
+
175
+ [QCR 단계] 검색 쿼리 생성...
176
+ {'search': '레슬링 κ·œμΉ™ μ„€λͺ…'} β†’ 검색 ν•„μš”.
177
+
178
+ [κ²€μƒ‰λœ λ¬Έμ„œ ν™œμš© ν›„ λ‹΅λ³€ 생성]
179
+ Assistant> λ ˆμŠ¬λ§μ€ λ˜μ§€κΈ°, μ“°λŸ¬λœ¨λ¦¬κΈ°, κΊΎκΈ° λ“±μ˜ κΈ°μˆ μ„ μ΄μš©ν•˜μ—¬ μƒλŒ€λ₯Ό μ œμ••ν•˜λŠ” μŠ€ν¬μΈ μž…λ‹ˆλ‹€. κ²½κΈ° 방식은 μ˜¬λ¦Όν”½ μŠ€νƒ€μΌμΈ 'κ·Έλ ˆμ½”λ‘œλ§Œν˜•'κ³Ό 'μžμœ ν˜•'으둜 λ‚˜λ‰©λ‹ˆλ‹€. νŠΉμ • κ·œμΉ™μ΄ κΆκΈˆν•˜μ‹œλ‹€λ©΄ μΆ”κ°€λ‘œ μ§ˆλ¬Έν•΄μ£Όμ„Έμš”!
180
+ ```
181
+
182
+ μ΄λŸ¬ν•œ μ˜ˆμ‹œλ“€μ„ μ°Έκ³ ν•˜μ—¬ 검색 기반 λͺ¨λΈμ„ 효과적으둜 ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
183
+
184
+ ## μ£Όμ˜μ‚¬ν•­
185
+ - 검색 엔진과 ν•¨κ»˜ μ‚¬μš©ν•  경우 **QCR을 λ¨Όμ € μ‹€ν–‰ν•˜μ—¬ 검색 쿼리λ₯Ό 생성**ν•œ ν›„, κ²€μƒ‰λœ λ¬Έμ„œ 청크λ₯Ό λ°”νƒ•μœΌλ‘œ **GEN을 μ‹€ν–‰**ν•΄μ•Ό ν•©λ‹ˆλ‹€.
186
+ - κ²€μƒ‰λœ μ²­ν¬λŠ” μ΅œλŒ€ **512 토큰** 길이이며, ν•™μŠ΅ κ³Όμ •μ—μ„œ **μ΅œλŒ€ 5개의 청크**λ₯Ό λ°˜μ˜ν•˜μ˜€μœΌλ―€λ‘œ 이에 맞좰 ν™œμš©ν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€.
187
+ - QCR의 **ν”„λ‘¬ν”„νŠΈ ν˜•μ‹μ„ λ°˜λ“œμ‹œ μ§€μΌœμ•Ό** 검색 쿼리 생성이 μ˜¬λ°”λ₯΄κ²Œ μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€.
188
+ - GEN의 λ‹΅λ³€μ—μ„œλŠ” κ²€μƒ‰λœ λ¬Έμ„œ 좜처(Index)λ₯Ό μ •ν™•νžˆ κΈ°μž¬ν•΄μ•Ό ν•˜λ©°, 관련성이 μ—†μœΌλ©΄ μ—†λŠ”λŒ€λ‘œ μ•ˆλ‚΄ν•΄μ•Ό ν•©λ‹ˆλ‹€.
189
+ - μœ„ 2b λͺ¨λΈ 같은 κ²½μš°λŠ” 9b λͺ¨λΈμ— λΉ„ν•˜μ—¬ 언어적, 논리적 μΈ‘λ©΄μ—μ„œ μž¦μ€ ν• λ£¨μ‹œλ„€μ΄μ…˜μ„ μ²΄ν—˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
190
+
191
+ 이 λͺ¨λΈμ„ 톡해 보닀 **효율적인 검색 + μ •ν™•ν•œ λ‹΅λ³€**을 μ œκ³΅ν•˜λŠ” AI μ‹œμŠ€ν…œμ„ ꡬ좕할 수 μžˆμŠ΅λ‹ˆλ‹€.
192