Model Card: Gemma-2-9B-it-Korean-NL2SQL (Merged)

λ³Έ λͺ¨λΈμ€ Google의 Gemma-2-9B-it λͺ¨λΈμ„ 베이슀둜 ν•˜μ—¬, μ‹€λ¬΄μš© PostgreSQL ν™˜κ²½μ—μ„œ ν•œκ΅­μ–΄ μžμ—°μ–΄ 질의λ₯Ό κ³ μ •λ°€ SQL 쿼리둜 λ³€ν™˜(NL2SQL)ν•  수 μžˆλ„λ‘ νŒŒμΈνŠœλ‹ 및 κ°€μ€‘μΉ˜ 병합(Weight Merge)을 μ™„λ£Œν•œ 9B 체급 μ΅œκ°•μ˜ νŠΉν™” λͺ¨λΈμž…λ‹ˆλ‹€.

λ³Έ μ—°κ΅¬μ˜ μ‹€ν—˜ κ³Όμ •μ—μ„œ **단 2건의 ꡬ문 μ—λŸ¬(Initial Syntax Error)**만 κΈ°λ‘ν–ˆμ„ μ •λ„λ‘œ PostgreSQL 문법 ꡬ쑰에 λŒ€ν•œ 이해도와 무결성이 μ••λ„μ μœΌλ‘œ λ›°μ–΄λ‚œ 것이 νŠΉμ§•μž…λ‹ˆλ‹€.

🌟 μ£Όμš” νŠΉμ§• (Key Features)

  • 압도적인 문법 무결성 (Syntactic Precision): λŒ€κ·œλͺ¨ μ½”νΌμŠ€ 기반의 사전 ν•™μŠ΅ λŠ₯λ ₯을 λ°”νƒ•μœΌλ‘œ, λ³΅μž‘ν•œ PostgreSQL ν•¨μˆ˜ 및 μ„œλΈŒμΏΌλ¦¬ μž‘μ„± μ‹œ 문법적 였λ₯˜λ₯Ό 거의 λ²”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • 닀쀑 쑰인 및 μ„œλΈŒμΏΌλ¦¬ μ΅œμ ν™”: λ‚œμ΄λ„κ°€ 높은 λŒ€κ·œλͺ¨ ERP μŠ€ν‚€λ§ˆ(Level 4, 5) λ‚΄μ—μ„œλ„ ν…Œμ΄λΈ” κ°„μ˜ 관계성을 μ •ν™•νžˆ μΆ”λ‘ ν•˜μ—¬ 졜적의 μ‹€ν–‰ 경둜λ₯Ό κ°€μ§„ 쿼리λ₯Ό λΉŒλ”©ν•©λ‹ˆλ‹€.
  • μ—”ν„°ν”„λΌμ΄μ¦ˆ 레벨 μ„œλΉ™ κ°€λŠ₯: LoRA μ–΄λŒ‘ν„°κ°€ 베이슀 λ ˆμ΄μ–΄μ— μ™„μ „νžˆ 흑수(Merged)λ˜μ–΄ μžˆμ–΄, vLLMμ΄λ‚˜ Ollama λ“± 싀무 μΆ”λ‘  엔진에 μ¦‰μ‹œ μ–Ήμ–΄ λ‹¨λ°œμ„±(Zero-shot) μ΄ˆκ³ μ† API μ„œλΉ™μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.

πŸ“Š μ„±λŠ₯ 평가 μš”μ•½ (Evaluation Results)

μ‹€λ¬΄μš© ERP λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆμ™€ λ‚œμ΄λ„λ³„(Level 1 ~ 5) 평가 데이터셋 400문항을 λ°”νƒ•μœΌλ‘œ μ—„λ°€ν•˜κ²Œ μΈ‘μ •ν•œ 벀치마크 κ²°κ³Όμž…λ‹ˆλ‹€.

Difficulty Pure Acc Final Acc Errors Repaired Repair Rate
Level 1 93.75% 93.75% 0 0 0.00%
Level 2 90.00% 90.00% 1 0 0.00%
Level 3 83.75% 83.75% 0 0 0.00%
Level 4 62.50% 62.50% 1 0 0.00%
Level 5 65.00% 65.00% 0 0 0.00%
TOTAL 79.00% 79.00% 2 0 0.00%
  • Pure Accuracy: 졜초 1회 생성 μ‹œμ˜ SQL μ‹€ν–‰ κ²°κ³Ό μ •λ‹΅λ₯ μ΄ 무렀 **79.00%**에 λ‹¬ν•©λ‹ˆλ‹€.
  • μ΄ˆκ³ μ •λ°€λ„ 증λͺ…: 전체 400개의 λ³΅μž‘ν•œ 쿼리 쀑 μ‹€ν–‰ μ—λŸ¬(Syntax/Runtime Error)κ°€ λ°œμƒν•œ μΌ€μ΄μŠ€κ°€ 단 2건(Level 2μ—μ„œ 1건, Level 4μ—μ„œ 1건)에 λΆˆκ³Όν•˜μ—¬, 베이슀 λͺ¨λΈλ‘œμ„œ κ°€μž₯ μ™„λ²½ν•˜κ³  μ‹ λ’°ν•  수 μžˆλŠ” Baseline μ§€ν‘œλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

πŸ’» μ‚¬μš© 방법 (How to Use)

Gemma 2의 곡식 Chat Template κ·œκ²©μ„ μ€€μˆ˜ν•˜μ—¬ μžμ›μ„ 효율적으둜 μΆ”λ‘ ν•˜λŠ” μ˜ˆμ‹œ μ½”λ“œμž…λ‹ˆλ‹€.

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM

model_id = "yeongseok11/gemma-2-9b-it-korean-nl2sql"

tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    torch_dtype=torch.bfloat16,
    device_map="auto"
)
model.eval()

# Prompt Template (Gemma-2 μ „μš© ν…œν”Œλ¦Ώ μ€€μˆ˜)
prompt = """<start_of_turn>user
당신은 μ‹€λ¬΄μš© PostgreSQL μ „λ¬Έκ°€μž…λ‹ˆλ‹€. 였직 SQL 쿼리만 λ‹΅λ³€ν•˜μ„Έμš”.

### μŠ€ν‚€λ§ˆ:
CREATE TABLE emp (
    emp_id INT PRIMARY KEY,
    emp_name VARCHAR(50),
    dept_id INT,
    salary INT
);

### 질문:
κΈ°νšνŒ€(dept_id = 10) μ§μ›λ“€μ˜ 평균 κΈ‰μ—¬λ₯Ό κ΅¬ν•˜λŠ” 쿼리λ₯Ό 짜쀘.<end_of_turn>
<start_of_turn>model
### SQL:
"""

inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
with torch.no_grad():
    outputs = model.generate(
        **inputs,
        max_new_tokens=256,
        temperature=0.0,
        do_sample=False,
        pad_token_id=tokenizer.eos_token_id
    )

print(tokenizer.decode(outputs[0], skip_special_tokens=True).split("### SQL:\n")[-1])

πŸ“ 연ꡬ 및 ν•œκ³„μ  (Limitations & Future Work)
λ³Έ λͺ¨λΈμ€ 높은 문법적 완성도λ₯Ό μžλž‘ν•˜μ§€λ§Œ, 인간이 μ„€κ³„ν•œ λ³΅μž‘ν•˜κ³  λΉ„μ •ν˜•ν™”λœ 데이터 레이크 ν™˜κ²½μ—μ„œλŠ” 의미둠적(Semantic) λ§€ν•‘ μ˜€μ°¨κ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.
이λ₯Ό κ·Ήλ³΅ν•˜κΈ° μœ„ν•΄ ν–₯ν›„ λ³Έ μ—°κ΅¬λŠ” LLM μ§€ν–₯적 메타데이터 ν™•μž₯ νŒŒμ΄ν”„λΌμΈ(AI-Friendly Metadata Enrichment) 및 μ—μ΄μ „νŠΈ 기반의 λŠ₯λ™ν˜• 데이터 λ‚΄λΉ„κ²Œμ΄μ…˜ μ•„ν‚€ν…μ²˜ μ—°κ΅¬λ‘œ ν™•μž₯될 μ˜ˆμ •μž…λ‹ˆλ‹€.
Downloads last month
-
Safetensors
Model size
9B params
Tensor type
BF16
Β·
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for yeongseok11/gemma-2-9b-it-korean-nl2sql

Adapter
(469)
this model