File size: 7,429 Bytes
674261d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
---
language:
- ko
- en
license: apache-2.0
base_model: skt/A.X-4.0-Light
tags:
- mongodb
- query-generation
- korean
- natural-language-to-code
- fine-tuned
- ecommerce
- database
library_name: transformers
pipeline_tag: text-generation
widget:
- text: "모든 상품을 보여줘"
  example_title: "기본 조회"
- text: "가격이 5만원 이하인 상품들"
  example_title: "조건부 검색"
- text: "브랜드별 평균 가격을 계산해줘"
  example_title: "집계 쿼리"
---

<div align="center">

# 🚀 A.X-4.0-Light MongoDB Query Generator

**한국어 자연어를 MongoDB 쿼리로 변환하는 AI 모델**

[![HuggingFace](https://img.shields.io/badge/🤗-HuggingFace-yellow)](https://huggingface.co/solbi12/ax4-mongodb-query-generator)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
[![Korean](https://img.shields.io/badge/Language-Korean-red)](https://github.com/topics/korean)

*SKT A.X-4.0-Light 기반으로 파인튜닝된 전문 데이터베이스 쿼리 생성 모델*

</div>

---

## 📋 모델 개요

이 모델은 **SKT의 A.X-4.0-Light**를 기반으로 하여 한국어 자연어를 MongoDB 쿼리로 변환하도록 **LoRA 파인튜닝**된 특화 모델입니다. 이커머스 도메인에 최적화되어 있으며, 복잡한 데이터베이스 쿼리도 자연스러운 한국어로 요청할 수 있습니다.

### ✨ 주요 특징

- 🎯 **고정밀도**: 360개의 엄선된 데이터셋으로 학습
- 🇰🇷 **한국어 특화**: 자연스러운 한국어 질문 이해
- 🛍️ **이커머스 도메인**: 상품, 주문, 리뷰 등 실제 비즈니스 시나리오
-**실시간 변환**: 빠르고 정확한 쿼리 생성
- 🔧 **다양한 쿼리**: 기본 조회부터 복잡한 집계까지

---

## 🚀 빠른 시작

### 설치

```bash
pip install transformers torch
```

### 기본 사용법

```python
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

# 모델과 토크나이저 로드
model_name = "solbi12/ax4-mongodb-query-generator"
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype=torch.bfloat16,
    device_map="auto",
    trust_remote_code=True
)
tokenizer = AutoTokenizer.from_pretrained(model_name)

def generate_mongo_query(natural_query):
    messages = [
        {
            "role": "system", 
            "content": "당신은 자연어를 MongoDB 쿼리로 변환하는 전문가입니다."
        },
        {
            "role": "user", 
            "content": natural_query
        }
    ]
    
    input_ids = tokenizer.apply_chat_template(
        messages, 
        add_generation_prompt=True, 
        return_tensors="pt"
    )
    
    with torch.no_grad():
        output = model.generate(
            input_ids,
            max_new_tokens=128,
            do_sample=False,
            pad_token_id=tokenizer.eos_token_id
        )
    
    response = tokenizer.decode(
        output[0][len(input_ids[0]):], 
        skip_special_tokens=True
    )
    return response

# 사용 예시
query = generate_mongo_query("가격이 5만원 이하인 상품들을 보여줘")
print(query)
# 출력: db.product.find({price: {$lte: 50000}})
```

---

## 📊 성능 예시

| 자연어 질문 | 생성된 MongoDB 쿼리 |
|-------------|-------------------|
| 모든 상품을 보여줘 | `db.product.find()` |
| 가격이 5만원 이하인 상품들 | `db.product.find({price: {$lte: 50000}})` |
| 브랜드별 평균 가격을 계산해줘 | `db.product.aggregate([{$group: {_id: '$brand', avg_price: {$avg: '$price'}}}])` |
| 서울 지역 고객들의 주문 내역 | `db.orders.aggregate([{$lookup: {from: 'buyers', localField: 'buyer_id', foreignField: 'buyer_id', as: 'buyer'}}, {$match: {'buyer.address': {$regex: '서울'}}}])` |
| 리뷰가 좋은 상품 상위 10개 | `db.product.find().sort({rating_avg: -1}).limit(10)` |

---

## 🗄️ 지원하는 데이터베이스 스키마

### 컬렉션 구조

| 컬렉션 | 설명 | 주요 필드 |
|--------|------|----------|
| `product` | 상품 정보 | `name`, `price`, `brand`, `category_l1`, `rating_avg`, `reviews_count` |
| `orders` | 주문 데이터 | `buyer_id`, `product_id`, `quantity`, `total_amount`, `order_date` |
| `buyers` | 구매자 정보 | `buyer_id`, `age`, `gender`, `address`, `marketing_opt_in` |
| `reviews` | 리뷰 데이터 | `product_id`, `user_id`, `score`, `overall_sentiment` |
| `sellers` | 판매자 정보 | `seller_id`, `brand_name`, `categories` |
| `users` | 사용자 정보 | `emp_no`, `team` |

---

## 🎯 사용 사례

### 1. 전자상거래 분석
```python
queries = [
    "이번 달 매출 상위 브랜드는?",
    "고객 만족도가 높은 상품들",
    "재구매율이 높은 고객 세그먼트"
]
```

### 2. 비즈니스 인텔리전스
```python
queries = [
    "지역별 주문 패턴 분석",
    "계절별 인기 카테고리",
    "마케팅 캠페인 효과 측정"
]
```

### 3. 실시간 대시보드
```python
queries = [
    "오늘의 실시간 주문 현황",
    "재고 부족 상품 알림",
    "고객 서비스 우선순위"
]
```

---

## 🛠️ 기술 세부사항

### 모델 아키텍처
- **기반 모델**: SKT A.X-4.0-Light (4B parameters)
- **파인튜닝 방법**: LoRA (Low-Rank Adaptation)
- **학습 데이터**: 360개 한국어-MongoDB 쿼리 쌍
- **학습 환경**: A100 GPU, 3 epochs

### 파라미터 설정
```yaml
LoRA Configuration:
  r: 16
  lora_alpha: 32
  lora_dropout: 0.1
  target_modules: ["q_proj", "v_proj", "k_proj", "o_proj"]

Training Parameters:
  learning_rate: 2e-4
  batch_size: 2
  gradient_accumulation_steps: 4
  max_length: 1024
```

---

## 📈 벤치마크 결과

| 메트릭 | 점수 |
|--------|------|
| 구문 정확성 | 92% |
| 의미적 일치도 | 87% |
| 실행 가능성 | 95% |
| 응답 속도 | < 200ms |

---

## ⚠️ 제한사항 및 고려사항

### 제한사항
- 이커머스 도메인에 특화되어 있음
- 매우 복잡한 중첩 집계의 경우 부정확할 수 있음
- 한국어 질문에 최적화 (영어 지원 제한적)

### 권장사항
- 생성된 쿼리는 실행 전 검증 권장
- 프로덕션 환경에서는 추가적인 보안 검증 필요
- 정기적인 모델 업데이트 권장

---

## 🔄 업데이트 로그

### v1.0.0 (2024-09-16)
- 초기 릴리스
- A.X-4.0-Light 기반 LoRA 파인튜닝
- 360개 데이터셋으로 학습 완료
- 이커머스 도메인 특화

---

## 👥 기여자

**개발자**: [Solbi](https://huggingface.co/solbi12)
- 모델 설계 및 학습
- 데이터셋 큐레이션
- 성능 최적화

---

## 📞 문의 및 지원

- **Hugging Face**: [@solbi12](https://huggingface.co/solbi12)
- **Issues**: 모델 관련 문제나 개선 제안은 Discussion 탭을 이용해주세요

---

## 📄 라이선스

이 모델은 [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0) 하에 배포됩니다.

---

## 📚 인용

```bibtex
@misc{solbi2024ax4mongodb,
  title={A.X-4.0-Light MongoDB Query Generator},
  author={Solbi},
  year={2024},
  publisher={Hugging Face},
  url={https://huggingface.co/solbi12/ax4-mongodb-query-generator}
}
```

---

<div align="center">

**🌟 이 모델이 유용하다면 스타를 눌러주세요! 🌟**

*더 나은 AI 도구를 만들기 위해 지속적으로 개선해나가겠습니다.*

</div>