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

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

HuggingFace License Korean

SKT A.X-4.0-Light ๊ธฐ๋ฐ˜์œผ๋กœ ํŒŒ์ธํŠœ๋‹๋œ ์ „๋ฌธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฟผ๋ฆฌ ์ƒ์„ฑ ๋ชจ๋ธ


๐Ÿ“‹ ๋ชจ๋ธ ๊ฐœ์š”

์ด ๋ชจ๋ธ์€ SKT์˜ A.X-4.0-Light๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์—ฌ ํ•œ๊ตญ์–ด ์ž์—ฐ์–ด๋ฅผ MongoDB ์ฟผ๋ฆฌ๋กœ ๋ณ€ํ™˜ํ•˜๋„๋ก LoRA ํŒŒ์ธํŠœ๋‹๋œ ํŠนํ™” ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. ์ด์ปค๋จธ์Šค ๋„๋ฉ”์ธ์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์œผ๋ฉฐ, ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฟผ๋ฆฌ๋„ ์ž์—ฐ์Šค๋Ÿฌ์šด ํ•œ๊ตญ์–ด๋กœ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โœจ ์ฃผ์š” ํŠน์ง•

  • ๐ŸŽฏ ๊ณ ์ •๋ฐ€๋„: 360๊ฐœ์˜ ์—„์„ ๋œ ๋ฐ์ดํ„ฐ์…‹์œผ๋กœ ํ•™์Šต
  • ๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด ํŠนํ™”: ์ž์—ฐ์Šค๋Ÿฌ์šด ํ•œ๊ตญ์–ด ์งˆ๋ฌธ ์ดํ•ด
  • ๐Ÿ›๏ธ ์ด์ปค๋จธ์Šค ๋„๋ฉ”์ธ: ์ƒํ’ˆ, ์ฃผ๋ฌธ, ๋ฆฌ๋ทฐ ๋“ฑ ์‹ค์ œ ๋น„์ฆˆ๋‹ˆ์Šค ์‹œ๋‚˜๋ฆฌ์˜ค
  • โšก ์‹ค์‹œ๊ฐ„ ๋ณ€ํ™˜: ๋น ๋ฅด๊ณ  ์ •ํ™•ํ•œ ์ฟผ๋ฆฌ ์ƒ์„ฑ
  • ๐Ÿ”ง ๋‹ค์–‘ํ•œ ์ฟผ๋ฆฌ: ๊ธฐ๋ณธ ์กฐํšŒ๋ถ€ํ„ฐ ๋ณต์žกํ•œ ์ง‘๊ณ„๊นŒ์ง€

๐Ÿš€ ๋น ๋ฅธ ์‹œ์ž‘

์„ค์น˜

pip install transformers torch

๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

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. ์ „์ž์ƒ๊ฑฐ๋ž˜ ๋ถ„์„

queries = [
    "์ด๋ฒˆ ๋‹ฌ ๋งค์ถœ ์ƒ์œ„ ๋ธŒ๋žœ๋“œ๋Š”?",
    "๊ณ ๊ฐ ๋งŒ์กฑ๋„๊ฐ€ ๋†’์€ ์ƒํ’ˆ๋“ค",
    "์žฌ๊ตฌ๋งค์œจ์ด ๋†’์€ ๊ณ ๊ฐ ์„ธ๊ทธ๋จผํŠธ"
]

2. ๋น„์ฆˆ๋‹ˆ์Šค ์ธํ…”๋ฆฌ์ „์Šค

queries = [
    "์ง€์—ญ๋ณ„ ์ฃผ๋ฌธ ํŒจํ„ด ๋ถ„์„",
    "๊ณ„์ ˆ๋ณ„ ์ธ๊ธฐ ์นดํ…Œ๊ณ ๋ฆฌ",
    "๋งˆ์ผ€ํŒ… ์บ ํŽ˜์ธ ํšจ๊ณผ ์ธก์ •"
]

3. ์‹ค์‹œ๊ฐ„ ๋Œ€์‹œ๋ณด๋“œ

queries = [
    "์˜ค๋Š˜์˜ ์‹ค์‹œ๊ฐ„ ์ฃผ๋ฌธ ํ˜„ํ™ฉ",
    "์žฌ๊ณ  ๋ถ€์กฑ ์ƒํ’ˆ ์•Œ๋ฆผ",
    "๊ณ ๊ฐ ์„œ๋น„์Šค ์šฐ์„ ์ˆœ์œ„"
]

๐Ÿ› ๏ธ ๊ธฐ์ˆ  ์„ธ๋ถ€์‚ฌํ•ญ

๋ชจ๋ธ ์•„ํ‚คํ…์ฒ˜

  • ๊ธฐ๋ฐ˜ ๋ชจ๋ธ: SKT A.X-4.0-Light (4B parameters)
  • ํŒŒ์ธํŠœ๋‹ ๋ฐฉ๋ฒ•: LoRA (Low-Rank Adaptation)
  • ํ•™์Šต ๋ฐ์ดํ„ฐ: 360๊ฐœ ํ•œ๊ตญ์–ด-MongoDB ์ฟผ๋ฆฌ ์Œ
  • ํ•™์Šต ํ™˜๊ฒฝ: A100 GPU, 3 epochs

ํŒŒ๋ผ๋ฏธํ„ฐ ์„ค์ •

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 ํ•˜์— ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.


๐Ÿ“š ์ธ์šฉ

@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}
}

๐ŸŒŸ ์ด ๋ชจ๋ธ์ด ์œ ์šฉํ•˜๋‹ค๋ฉด ์Šคํƒ€๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”! ๐ŸŒŸ

๋” ๋‚˜์€ AI ๋„๊ตฌ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ง€์†์ ์œผ๋กœ ๊ฐœ์„ ํ•ด๋‚˜๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค.

Downloads last month
4
Safetensors
Model size
7B params
Tensor type
BF16
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for solbi12/ax4-mongodb-query-generator

Finetuned
(15)
this model