|
|
--- |
|
|
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 모델** |
|
|
|
|
|
[](https://huggingface.co/solbi12/ax4-mongodb-query-generator) |
|
|
[](https://opensource.org/licenses/Apache-2.0) |
|
|
[](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> |
|
|
|