CoolFace
Modelpublic

solbi12/ax4-mongodb-query-generator

sourceHugging Faceapache-2.0updated 1y agoView on Hugging Face
2likes24downloads
Model Card

<div align="center">

๐Ÿš€ A.X-4.0-Light MongoDB Query Generator

ํ•œ๊ตญ์–ด ์ž์—ฐ์–ด๋ฅผ MongoDB ์ฟผ๋ฆฌ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” AI ๋ชจ๋ธ

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

  • โ€”๋ชจ๋ธ ์„ค๊ณ„ ๋ฐ ํ•™์Šต
  • โ€”๋ฐ์ดํ„ฐ์…‹ ํ๋ ˆ์ด์…˜
  • โ€”์„ฑ๋Šฅ ์ตœ์ ํ™”

๐Ÿ“ž ๋ฌธ์˜ ๋ฐ ์ง€์›

  • โ€”Hugging Face: @solbi12
  • โ€”Issues: ๋ชจ๋ธ ๊ด€๋ จ ๋ฌธ์ œ๋‚˜ ๊ฐœ์„  ์ œ์•ˆ์€ Discussion ํƒญ์„ ์ด์šฉํ•ด์ฃผ์„ธ์š”

๐Ÿ“„ ๋ผ์ด์„ ์Šค

์ด ๋ชจ๋ธ์€ Apache 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>