query-understanding-ja-4b

ๆ—ฅๆœฌ่ชžใฎๅ•†ๅ“ๆคœ็ดขใ‚ฏใ‚จใƒชใ‚’ใ€ๆคœ็ดขใ‚ทใ‚นใƒ†ใƒ ใงๆ‰ฑใ„ใ‚„ใ™ใ„ๆง‹้€ ๅŒ– JSON ใซๅค‰ๆ›ใ™ใ‚‹ Query Understanding ใƒขใƒ‡ใƒซใงใ™ใ€‚Qwen/Qwen3.5-4B ใ‚’ LoRA ใงใƒ•ใ‚กใ‚คใƒณใƒใƒฅใƒผใƒ‹ใƒณใ‚ฐใ—ใ€ใ‚ขใƒ€ใƒ—ใ‚ฟใƒผใ‚’ใƒ™ใƒผใ‚นใƒขใƒ‡ใƒซใธใƒžใƒผใ‚ธใ—ใŸๅฎŒๅ…จใชใƒใ‚งใƒƒใ‚ฏใƒใ‚คใƒณใƒˆใจใ—ใฆๅ…ฌ้–‹ใ—ใฆใ„ใพใ™ใ€‚

ใ“ใฎใƒขใƒ‡ใƒซใฏใ€ๅ…ฌ้–‹ใƒ‡ใƒผใ‚ฟใ‚ปใƒƒใƒˆใงใ‚ใ‚‹ Amazon Shopping Queries Dataset๏ผˆESCI๏ผ‰ใฎๆ—ฅๆœฌ่ชžใ‚ฏใ‚จใƒชใ‚’ไฝฟใฃใฆใ€ๅฐ่ฆๆจกใชใƒ‡ใƒผใ‚ฟใจ LoRA ใงๅฐๅž‹่จ€่ชžใƒขใƒ‡ใƒซใ‚’ๆคœ็ดขใ‚ฏใ‚จใƒช่งฃ้‡ˆใซ็‰นๅŒ–ใงใใ‚‹ใ‹ใ‚’ๆคœ่จผใ—ใŸ PoC๏ผˆๆฆ‚ๅฟตๅฎŸ่จผ๏ผ‰ใงใ™ใ€‚็‰นๅฎšใฎ EC ใ‚ตใ‚คใƒˆใฎใ‚ฏใ‚จใƒชใƒญใ‚ฐใ‚„ๅ•†ๅ“ใ‚ซใ‚ฟใƒญใ‚ฐใซๅˆใ‚ใ›ใฆ่ชฟๆ•ดใ—ใŸใ‚‚ใฎใงใฏใชใใ€ใใฎใพใพๆœฌ็•ชใฎๆคœ็ดขใ‚ทใ‚นใƒ†ใƒ ใซ็ต„ใฟ่พผใ‚€ใ“ใจใ‚’ๆƒณๅฎšใ—ใฆใ„ใพใ›ใ‚“ใ€‚ๅฎŸ้š›ใฎใ‚ตใƒผใƒ“ใ‚นใซไฝฟใ†ๅ ดๅˆใฏใ€ๅฏพ่ฑกใ‚ตใ‚คใƒˆใฎใƒ‡ใƒผใ‚ฟใงใฎๅ†ๅญฆ็ฟ’ใจ่ฉ•ไพกใŒๅฟ…่ฆใงใ™ใ€‚

transformers ใง trust_remote_code=True ใ‚’ไป˜ใ‘ใฆ่ชญใฟ่พผใ‚€ใจ parse ใƒกใ‚ฝใƒƒใƒ‰ใŒไฝฟใˆใ‚‹ใ‚ˆใ†ใซใชใ‚Šใ€ใ‚ฏใ‚จใƒชๆ–‡ๅญ—ๅˆ—ใ‚’ๆธกใ™ใ ใ‘ใงๆง‹้€ ๅŒ–ใ—ใŸ็ตๆžœ๏ผˆPython ใฎ dict๏ผ‰ใŒ่ฟ”ใ‚Šใพใ™ใ€‚ใ‚ซใ‚นใ‚ฟใƒ ใ‚ณใƒผใƒ‰ใ‚’ไฝฟใ‚ใšใซ้€šๅธธใฎ Qwen3.5 ใƒขใƒ‡ใƒซใจใ—ใฆ่ชญใฟ่พผใ‚€ใ“ใจใ‚‚ใ€vLLM ใงใใฎใพใพ้…ไฟกใ™ใ‚‹ใ“ใจใ‚‚ใงใใพใ™ใ€‚

This model converts a Japanese e-commerce search query into a structured JSON object (product type, full-text search terms, inclusion filters, exclusion filters, and unresolved conditions). It is Qwen/Qwen3.5-4B fine-tuned with LoRA on 24,146 queries derived from the Japanese subset of the Amazon Shopping Queries Dataset (ESCI); the adapter is merged into the checkpoint. Load with trust_remote_code=True and call model.parse(query). This is a proof of concept built on the public ESCI dataset, not a production-ready component; retrain and evaluate on your own query logs before using it in a real search system.

ไฝ•ใ‚’ใ™ใ‚‹ใƒขใƒ‡ใƒซใ‹

ๆคœ็ดขใƒœใƒƒใ‚ฏใ‚นใซๅ…ฅๅŠ›ใ•ใ‚Œใ‚‹็Ÿญใ„ๆ–‡ๅญ—ๅˆ—ใซใฏใ€ๅ•†ๅ“็จฎๅˆฅใ€ๅธŒๆœ›ๆกไปถใ€้™คๅค–ๆกไปถใ€ไพกๆ ผใชใฉใฎๆกไปถใŒๆททใ–ใฃใฆใ„ใพใ™ใ€‚ใ“ใ‚Œใ‚’ใใฎใพใพๅ…จๆ–‡ๆคœ็ดขใธๆธกใ™ใจใ€้™คๅค–ใ—ใŸใ„ใฏใšใฎใƒ–ใƒฉใƒณใƒ‰ๅใพใง้€šๅธธใฎๆคœ็ดข่ชžใจใ—ใฆๆ‰ฑใ‚ใ‚Œใ‚‹ใชใฉใ€ๆ„ๅ›ณใŒๆคœ็ดขๆกไปถใซๅๆ˜ ใ•ใ‚Œใพใ›ใ‚“ใ€‚ใ“ใฎใƒขใƒ‡ใƒซใฏใ€ใ‚ฏใ‚จใƒชใ‚’ๆฌกใฎ 5 ้ …็›ฎใซๅˆ†่งฃใ—ใพใ™ใ€‚

ๅ…ฅๅŠ›:

ใƒญใ‚ธใ‚ฏใƒผใƒซไปฅๅค–ใฎ้™้Ÿณใƒฏใ‚คใƒคใƒฌใ‚นใƒžใ‚ฆใ‚น ้ป’

ๅ‡บๅŠ›:

{
  "product_type": "ใƒžใ‚ฆใ‚น",
  "search_terms": ["้™้Ÿณ", "ใƒฏใ‚คใƒคใƒฌใ‚น", "ใƒžใ‚ฆใ‚น"],
  "include": {
    "color": ["้ป’"],
    "feature": ["้™้Ÿณ", "ใƒฏใ‚คใƒคใƒฌใ‚น"]
  },
  "exclude": {
    "brand": ["ใƒญใ‚ธใ‚ฏใƒผใƒซ"]
  },
  "unresolved": []
}

ๆคœ็ดขใ‚ทใ‚นใƒ†ใƒ ๅดใงใฏใ€search_terms ใ‚’ๅ…จๆ–‡ๆคœ็ดขใธใ€include ใ‚’ใƒ•ใ‚ฃใƒซใ‚ฟใƒผใ‚„ใƒ–ใƒผใ‚นใƒˆใธใ€exclude ใ‚’้™คๅค–ใ‚„้™ๆ ผใธๆธกใ—ใพใ™ใ€‚unresolved ใซใฏใ€ไพกๆ ผใ‚„้€ๆ–™ใฎใ‚ˆใ†ใซๅ•†ๅ“ๅฑžๆ€งใฎใ‚นใ‚ญใƒผใƒžใงใฏๆ‰ฑใˆใชใ„ๆกไปถใŒๅŽŸๆ–‡ใฎใพใพๅ…ฅใ‚‹ใฎใงใ€ๅพŒๆฎตใงๅ‡ฆ็†ใฎๅฏๅฆใ‚’ๅˆคๆ–ญใงใใพใ™ใ€‚ใƒขใƒ‡ใƒซใฏๆคœ็ดขใ‚จใƒณใ‚ธใƒณๅ›บๆœ‰ใฎใ‚ฏใ‚จใƒชๆง‹ๆ–‡ใ‚’็”Ÿๆˆใ›ใšใ€็”จ้€”ใซไพๅญ˜ใ—ใชใ„ JSON ใ‚’่ฟ”ใ™ใ ใ‘ใชใฎใงใ€Elasticsearch ใชใฉใฎใ‚ฏใ‚จใƒชใธใฎๅค‰ๆ›ใฏใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณๅดใฎๆฑบๅฎš็š„ใชใƒซใƒผใƒซใง่กŒใˆใพใ™ใ€‚

ๅ‡บๅŠ›ใ‚นใ‚ญใƒผใƒž

ๅ‡บๅŠ›ใฏๅธธใซๆฌกใฎ 5 ใคใฎใ‚ญใƒผใ‚’ๆŒใค JSON ใ‚ชใƒ–ใ‚ธใ‚งใ‚ฏใƒˆ 1 ใคใงใ™ใ€‚

ใ‚ญใƒผ ๅž‹ ๅ†…ๅฎน
product_type ๆ–‡ๅญ—ๅˆ—ใพใŸใฏ null ๆŽขใ—ใฆใ„ใ‚‹ๅ•†ๅ“ใฎ็จฎๅˆฅใ€‚ใ‚ฏใ‚จใƒชไธญใฎ่ชžใ‚’ใใฎใพใพไฝฟใ„ใ€ไฟฎ้ฃพ่ชžใฏไป˜ใ‘ใชใ„ใ€‚ไฝœๅ“ๅใ€ไบบๅใ€ใƒ–ใƒฉใƒณใƒ‰ๅใ ใ‘ใ€ๅž‹็•ชใ ใ‘ใฎใ‚ฏใ‚จใƒชใชใฉๅ•†ๅ“็จฎๅˆฅใ‚’่กจใ™่ชžใŒใชใ„ๅ ดๅˆใฏ null
search_terms ๆ–‡ๅญ—ๅˆ—ใฎ้…ๅˆ— ๅ…จๆ–‡ๆคœ็ดขใซๆธกใ™่ชžๅฅใ€‚ใ‚ฏใ‚จใƒชใ‚’ๆ„ๅ‘ณใฎใพใจใพใ‚Šใงๅˆ†ๅ‰ฒใ—ใ€ๅ‡บ็พ้ †ใซไธฆในใ‚‹ใ€‚product_type ใŒใ‚ใ‚‹ๅ ดๅˆใฏ brand ใจ color ใฎๅ€คใ‚’ๅซใ‚ใชใ„ใ€‚้™คๅค–ๅฏพ่ฑกใฎ่ชžใจ unresolved ใฎๆกไปถใ‚‚ๅซใ‚ใชใ„
include ๅฑžๆ€งๅใ‹ใ‚‰ๆ–‡ๅญ—ๅˆ—้…ๅˆ—ใธใฎ่พžๆ›ธ ใ‚ฏใ‚จใƒชใซๆ˜Ž็คบใ•ใ‚ŒใŸ็ตžใ‚Š่พผใฟๆกไปถใ€‚่ฉฒๅฝ“ใฎใชใ„ๅฑžๆ€งใฏ็œ็•ฅ
exclude ๅฑžๆ€งๅใ‹ใ‚‰ๆ–‡ๅญ—ๅˆ—้…ๅˆ—ใธใฎ่พžๆ›ธ ใ€Œไปฅๅค–ใ€ใ€Œใชใ—ใ€ใ€Œใ˜ใ‚ƒใชใ„ใ€ใ€Œใ‚’้™คใใ€ใ€Œไธ่ฆใ€ใชใฉใงๆ˜Ž็คบใ•ใ‚ŒใŸ้™คๅค–ๆกไปถใ€‚ๅฆๅฎš่กจ็พใใฎใ‚‚ใฎใฏๅ€คใซๅซใ‚ใชใ„
unresolved ๆ–‡ๅญ—ๅˆ—ใฎ้…ๅˆ— ไพกๆ ผใ€้€ๆ–™ใ€่ฉ•ไพกใ‚„ไบบๆฐ—ใ€็Šถๆ…‹๏ผˆไธญๅคใ€ๆ–ฐๅ“๏ผ‰ใ€ๆ™‚ๆœŸ๏ผˆๆœ€ๆ–ฐใ€2023ๅนด็‰ˆ๏ผ‰ใชใฉใ€ๅฑžๆ€งใง่กจใ›ใชใ„ๆกไปถใฎๅŽŸๆ–‡

include ใจ exclude ใงไฝฟใˆใ‚‹ๅฑžๆ€งใฏๆฌกใฎ 9 ็จฎ้กžใงใ™ใ€‚

ๅฑžๆ€ง ๅ†…ๅฎน ๅ€คใฎไพ‹
brand ใƒ–ใƒฉใƒณใƒ‰ๅใ€ใƒกใƒผใ‚ซใƒผๅ ใƒŠใ‚คใ‚ญ, ใƒ‘ใƒŠใ‚ฝใƒ‹ใƒƒใ‚ฏ, anker
color ่‰ฒ ้ป’, ใƒ›ใƒฏใ‚คใƒˆ, ใƒใ‚คใƒ“ใƒผ, ้€ๆ˜Ž
size ๅฏธๆณ•ใ€ใ‚ตใ‚คใ‚บ่กจ่จ˜ใ€ๅฎน้‡ใ€่ฆๆ ผใ€ๅฏพๅฟœไบบๆ•ฐ 27cm, lใ‚ตใ‚คใ‚บ, 1ใƒชใƒƒใƒˆใƒซ, 3ไบบ็”จ
material ็ด ๆใ€ๆ่ณช ใ‚นใƒ†ใƒณใƒฌใ‚น, ๆœฌ้ฉ, ็ถฟ100%
target ๅฏพ่ฑก่€…ใ€ๅฏพ่ฑกๅ‹•็‰ฉ ใƒฌใƒ‡ใ‚ฃใƒผใ‚น, ใ‚ญใƒƒใ‚บ, ๅญไพ›, ็Šฌ็”จ
compatible_with ๅฏพๅฟœๆฉŸ็จฎใ€ๅฏพๅฟœ่ฃฝๅ“ใ€้ฉๅˆๅฏพ่ฑก iphone8, ps4, ใ‚นใ‚คใƒƒใƒ
feature ๆฉŸ่ƒฝใ€ไป•ๆง˜ใ€ๅฝข็Šถใ€ใ‚ฟใ‚คใƒ—ใ€็”จ้€”ใชใฉใฎไฟฎ้ฃพ่ชž ้™้Ÿณ, ใƒฏใ‚คใƒคใƒฌใ‚น, ้˜ฒๆฐด, ๆ‰‹ๅธณๅž‹
quantity ๅ€‹ๆ•ฐใ€ๆžšๆ•ฐใ€ๅ…ฅๆ•ฐใ€ใ‚ปใƒƒใƒˆๆ•ฐใ€ๅทปๆ•ฐ 120็ฒ’, 2ๅ€‹ใ‚ปใƒƒใƒˆ, ๅ…จๅทป
model_number ๅž‹็•ชใ€ๅ“็•ชใ€่ฃฝๅ“ใ‚ณใƒผใƒ‰ ytx-14bs, sm-g973

ไธปใช่ฆๅ‰‡ใฏๆฌกใฎใจใŠใ‚Šใงใ™ใ€‚

  • ใ‚ฏใ‚จใƒชใซๆ˜Ž็คบใ•ใ‚ŒใŸๆƒ…ๅ ฑใ ใ‘ใ‚’ๆŠฝๅ‡บใ—ใ€ไธ–็•Œ็Ÿฅ่ญ˜ใง่ฃœๅฎŒใ—ใชใ„๏ผˆใ€Œiphone8 ใ‚ฑใƒผใ‚นใ€ใฎ brand ใซ apple ใ‚’ๅ…ฅใ‚Œใชใ„๏ผ‰
  • include ใจ exclude ใฎๅ€คใฏๅฟ…ใšใ‚ฏใ‚จใƒชไธญใซๅ‡บ็พใ™ใ‚‹่ชžๅฅใ‚’ไฝฟใ†ใ€‚่กจ่จ˜ใฏ NFKC ๆญฃ่ฆๅŒ–๏ผˆๅ…จ่ง’่‹ฑๆ•ฐๅญ—ใ‚’ๅŠ่ง’ใซ๏ผ‰ใ ใ‘ใ‚’่กŒใ„ใ€่จ€ใ„ๆ›ใˆใ€็ฟป่จณใ€ๆญฃๅผๅ็งฐใธใฎๅค‰ๆ›ใ€่ชคๅญ—ใฎไฟฎๆญฃใฏใ—ใชใ„
  • ๅŒใ˜่ชžใ‚’ include ใฎ่ค‡ๆ•ฐใฎๅฑžๆ€งใซๅ…ฅใ‚Œใชใ„ใ€‚brand ใจ color ไปฅๅค–ใฎๅฑžๆ€งใฎๅ€คใฏ search_terms ใซใ‚‚ๅซใ‚ใ‚‹
  • ่ค‡ๆ•ฐ่ชžใ‹ใ‚‰ใชใ‚‹ 1 ใคใฎๅ็งฐ๏ผˆusb type c ใชใฉ๏ผ‰ใฏๅˆ†ๅ‰ฒใ—ใชใ„

ๅ€คใฏใ‚ฏใ‚จใƒชไธญใฎ่กจ่จ˜ใฎใพใพใชใฎใงใ€ใƒ–ใƒฉใƒณใƒ‰ใฎๅˆฅๅใ‚„่‰ฒใฎ่กจ่จ˜ๆบใ‚Œใฎ็ตฑไธ€ใฏๆคœ็ดขใ‚ทใ‚นใƒ†ใƒ ๅดใฎ่พžๆ›ธใง่กŒใ†ๆƒณๅฎšใงใ™ใ€‚

ไฝฟใ„ๆ–น

transformers๏ผˆparse ใƒกใ‚ฝใƒƒใƒ‰๏ผ‰

import torch
from transformers import AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained(
    "mahiyama/query-understanding-ja-4b",
    trust_remote_code=True,
    dtype=torch.bfloat16,
    device_map="cuda",
)

result = model.parse("ใƒญใ‚ธใ‚ฏใƒผใƒซไปฅๅค–ใฎ้™้Ÿณใƒฏใ‚คใƒคใƒฌใ‚นใƒžใ‚ฆใ‚น ้ป’")
print(result)
# {'product_type': 'ใƒžใ‚ฆใ‚น', 'search_terms': ['้™้Ÿณ', 'ใƒฏใ‚คใƒคใƒฌใ‚น', 'ใƒžใ‚ฆใ‚น'],
#  'include': {'color': ['้ป’'], 'feature': ['้™้Ÿณ', 'ใƒฏใ‚คใƒคใƒฌใ‚น']},
#  'exclude': {'brand': ['ใƒญใ‚ธใ‚ฏใƒผใƒซ']}, 'unresolved': []}

# ่ค‡ๆ•ฐใฎใ‚ฏใ‚จใƒชใฏใƒชใ‚นใƒˆใงๆธกใ™ใจใƒใƒƒใƒๆŽจ่ซ–ใซใชใ‚Šใ€ๅŒใ˜้ †ๅบใฎใƒชใ‚นใƒˆใŒ่ฟ”ใ‚‹
results = model.parse([
    "ใƒŠใ‚คใ‚ญ ใ‚นใƒ‹ใƒผใ‚ซใƒผ ใƒกใƒณใ‚บ 27cm ็™ฝไปฅๅค–",
    "ๅญไพ›ใŒไฝฟใˆใ‚‹่ปฝใ„ใƒ†ใƒ‹ใ‚นใƒฉใ‚ฑใƒƒใƒˆใ‚’ๆŽขใ—ใฆใ„ใพใ™ 5000ๅ††ไปฅไธ‹",
])

parse ใƒกใ‚ฝใƒƒใƒ‰ใฎไป•ๆง˜ใฏๆฌกใฎใจใŠใ‚Šใงใ™ใ€‚

  • ๅผ•ๆ•ฐใฏๆ–‡ๅญ—ๅˆ— 1 ใคใ€ใพใŸใฏๆ–‡ๅญ—ๅˆ—ใฎใƒชใ‚นใƒˆใ€‚ๆ–‡ๅญ—ๅˆ—ใชใ‚‰ dict ใ‚’ใ€ใƒชใ‚นใƒˆใชใ‚‰ dict ใฎใƒชใ‚นใƒˆใ‚’่ฟ”ใ™
  • ็”Ÿๆˆใฏ่ฒชๆฌฒใƒ‡ใ‚ณใƒผใƒ‰๏ผˆdo_sample=False๏ผ‰ใงใ€ๆ—ขๅฎšใฎ max_new_tokens ใฏ 256ใ€‚้€šๅธธใฎๅ‡บๅŠ›ใฏ 30 ใ‹ใ‚‰ 40 ใƒˆใƒผใ‚ฏใƒณ็จ‹ๅบฆ
  • ่ฟ”ใ‚Šๅ€คใฏๆญฃ่ฆๅŒ–ๆธˆใฟ๏ผˆNFKCใ€้‡่ค‡ใฎ้™คๅŽปใ€็ฉบใฎๅฑžๆ€งใฎ็œ็•ฅใ€ใ‚ญใƒผ้ †ใฎๅ›บๅฎš๏ผ‰ใ€‚็”Ÿๆˆใƒ†ใ‚ญใ‚นใƒˆใŒ JSON ใจใ—ใฆ่งฃ้‡ˆใงใใชใ„ๅ ดๅˆใ€ใใฎใ‚ฏใ‚จใƒชใฎ็ตๆžœใฏ None
  • return_raw=True ใ‚’ๆŒ‡ๅฎšใ™ใ‚‹ใจใ€ๅ„่ฆ็ด ใŒ (dict ใพใŸใฏ None, ็”Ÿๆˆใƒ†ใ‚ญใ‚นใƒˆ) ใฎใ‚ฟใƒ—ใƒซใซใชใ‚‹
  • batch_size๏ผˆๆ—ขๅฎš 16๏ผ‰ใงใƒใƒƒใƒใฎๅคงใใ•ใ‚’ๅค‰ใˆใ‚‰ใ‚Œใ‚‹ใ€‚generate ใซๆธกใ™่ฟฝๅŠ ใฎๅผ•ๆ•ฐใฏใ‚ญใƒผใƒฏใƒผใƒ‰ๅผ•ๆ•ฐใจใ—ใฆใใฎใพใพๆธกใ›ใ‚‹
  • understand ใฏ parse ใฎๅˆฅๅ
  • tokenizer ใฏใƒชใƒใ‚ธใƒˆใƒชใ‹ใ‚‰่‡ชๅ‹•ใง่ชญใฟ่พผใพใ‚Œใ‚‹ใ€‚model.tokenizer ใซไปฃๅ…ฅใ™ใ‚‹ใจๅทฎใ—ๆ›ฟใˆใ‚‰ใ‚Œใ‚‹

ๅญฆ็ฟ’ๆ™‚ใจๅŒใ˜ system ใƒ—ใƒญใƒณใƒ—ใƒˆใจใƒใƒฃใƒƒใƒˆใƒ†ใƒณใƒ—ใƒฌใƒผใƒˆ๏ผˆๆ€่€ƒ้Ž็จ‹ใฎ็”Ÿๆˆใ‚’็„กๅŠนๅŒ–ใ—ใŸๅฝขๅผ๏ผ‰ใ‚’ๅ†…้ƒจใง็ต„ใฟ็ซ‹ใฆใ‚‹ใฎใงใ€ๅˆฉ็”จๅดใงใƒ—ใƒญใƒณใƒ—ใƒˆใ‚’็”จๆ„ใ™ใ‚‹ๅฟ…่ฆใฏใ‚ใ‚Šใพใ›ใ‚“ใ€‚

ใ‚ซใ‚นใ‚ฟใƒ ใ‚ณใƒผใƒ‰ใ‚’ไฝฟใ‚ใชใ„ๅ ดๅˆ

ใ“ใฎใƒใ‚งใƒƒใ‚ฏใƒใ‚คใƒณใƒˆใฏใƒ™ใƒผใ‚นใƒขใƒ‡ใƒซ Qwen/Qwen3.5-4B ใจๅŒใ˜ใƒฌใ‚คใ‚ขใ‚ฆใƒˆใชใฎใงใ€trust_remote_code ใชใ—ใง้€šๅธธใฎ Qwen3.5 ใƒขใƒ‡ใƒซใจใ—ใฆ่ชญใฟ่พผใ‚ใพใ™ใ€‚ใใฎๅ ดๅˆใฏใ€ๆฌกใฎ system ใƒ—ใƒญใƒณใƒ—ใƒˆใ‚’ไป˜ใ‘ใ€ๆ€่€ƒ้Ž็จ‹ใ‚’็„กๅŠนๅŒ–๏ผˆenable_thinking=False๏ผ‰ใ—ใฆใƒใƒฃใƒƒใƒˆใƒ†ใƒณใƒ—ใƒฌใƒผใƒˆใ‚’้ฉ็”จใ—ใฆใใ ใ•ใ„ใ€‚

ๅ•†ๅ“ๆคœ็ดขใ‚ฏใ‚จใƒชใ‚’่งฃๆžใ—ใ€ๆฌกใฎใ‚ญใƒผใ‚’ๆŒใคJSONใฎใฟใ‚’ๅ‡บๅŠ›ใ—ใฆใใ ใ•ใ„: product_type, search_terms, include, exclude, unresolved (ๅฑžๆ€งใ‚ญใƒผ: brand, color, size, material, target, compatible_with, feature, quantity, model_number)
import json
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

repo = "mahiyama/query-understanding-ja-4b"
tok = AutoTokenizer.from_pretrained(repo)
model = AutoModelForCausalLM.from_pretrained(repo, dtype=torch.bfloat16, device_map="cuda")

SYSTEM = ("ๅ•†ๅ“ๆคœ็ดขใ‚ฏใ‚จใƒชใ‚’่งฃๆžใ—ใ€ๆฌกใฎใ‚ญใƒผใ‚’ๆŒใคJSONใฎใฟใ‚’ๅ‡บๅŠ›ใ—ใฆใใ ใ•ใ„: "
          "product_type, search_terms, include, exclude, unresolved "
          "(ๅฑžๆ€งใ‚ญใƒผ: brand, color, size, material, target, compatible_with, feature, quantity, model_number)")
messages = [{"role": "system", "content": SYSTEM},
            {"role": "user", "content": "ใƒŠใ‚คใ‚ญ ใ‚นใƒ‹ใƒผใ‚ซใƒผ ใƒกใƒณใ‚บ 27cm ็™ฝไปฅๅค–"}]
inputs = tok.apply_chat_template(messages, add_generation_prompt=True, enable_thinking=False,
                                 return_tensors="pt", return_dict=True).to(model.device)
out = model.generate(**inputs, max_new_tokens=256, do_sample=False)
text = tok.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True)
print(json.loads(text))

vLLM

ใƒžใƒผใ‚ธๆธˆใฟใฎๅฎŒๅ…จใชใƒใ‚งใƒƒใ‚ฏใƒใ‚คใƒณใƒˆใชใฎใงใ€vLLM ใงใฏ้€šๅธธใฎ Qwen3.5 ใƒขใƒ‡ใƒซใจใ—ใฆ้…ไฟกใงใใพใ™ใ€‚

vllm serve mahiyama/query-understanding-ja-4b --max-model-len 4096

OpenAI ไบ’ๆ› API ใงใฏใ€ไธŠ่จ˜ใฎ system ใƒ—ใƒญใƒณใƒ—ใƒˆใ‚’ไป˜ใ‘ใ€temperature ใ‚’ 0 ใซใ—ใ€chat_template_kwargs ใง enable_thinking ใ‚’ false ใซใ—ใฆใใ ใ•ใ„ใ€‚

from openai import OpenAI

client = OpenAI(base_url="http://localhost:8000/v1", api_key="EMPTY")
resp = client.chat.completions.create(
    model="mahiyama/query-understanding-ja-4b",
    messages=[{"role": "system", "content": SYSTEM},
              {"role": "user", "content": "iphone15 pro ใ‚ฑใƒผใ‚น ๆ‰‹ๅธณๅž‹ ใƒžใ‚ฐใƒใƒƒใƒˆใชใ—"}],
    temperature=0.0,
    max_tokens=256,
    extra_body={"chat_template_kwargs": {"enable_thinking": False}},
)
print(resp.choices[0].message.content)

LoRA ใ‚ขใƒ€ใƒ—ใ‚ฟใƒผ

ใƒžใƒผใ‚ธๅ‰ใฎ LoRA ใ‚ขใƒ€ใƒ—ใ‚ฟใƒผ๏ผˆPEFT ๅฝขๅผใ€rank 64ใ€alpha 128๏ผ‰ใ‚’ lora-adapter ใƒ•ใ‚ฉใƒซใƒ€ใซๅŒๆขฑใ—ใฆใ„ใพใ™ใ€‚ใƒ™ใƒผใ‚นใƒขใƒ‡ใƒซใซๅพŒใ‹ใ‚‰้ฉ็”จใ™ใ‚‹ๅ ดๅˆใฏๆฌกใฎใ‚ˆใ†ใซใ—ใพใ™ใ€‚

import torch
from transformers import AutoModelForCausalLM
from peft import PeftModel

base = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3.5-4B", dtype=torch.bfloat16, device_map="cuda")
model = PeftModel.from_pretrained(base, "mahiyama/query-understanding-ja-4b", subfolder="lora-adapter")

ๅ‹•ไฝœ็’ฐๅขƒ

  • Qwen3.5 ใซๅฏพๅฟœใ—ใŸ transformers๏ผˆ5.x ็ณป๏ผ‰ใŒๅฟ…่ฆใงใ™ใ€‚ๅญฆ็ฟ’ใจ่ฉ•ไพกใฏ transformers 5.16.1ใ€ๅ…ฌ้–‹ๅ‰ใฎๅ‹•ไฝœ็ขบ่ชใฏ transformers 5.13.1 ใจ PyTorch 2.11 ใง่กŒใ„ใพใ—ใŸ
  • bfloat16 ใง่จ€่ชžใƒขใƒ‡ใƒซ้ƒจๅˆ†ใ‚’ GPU ใซ่ผ‰ใ›ใ‚‹ใจ็ด„ 8 GB ใฎใƒกใƒขใƒชใ‚’ไฝฟใ„ใพใ™ใ€‚GPU ใƒกใƒขใƒชใŒ่ถณใ‚Šใชใ„ๅ ดๅˆใฏ device_map="auto" ใง CPU ใจๅˆ†ๅ‰ฒใ—ใฆ่ชญใฟ่พผใ‚ใพใ™๏ผˆ้€Ÿๅบฆใฏ่ฝใกใพใ™๏ผ‰
  • Qwen3.5 ใฏ็ทšๅฝขใ‚ขใƒ†ใƒณใ‚ทใƒงใƒณๅฑค๏ผˆGated DeltaNet๏ผ‰ใ‚’ๅซใฟใพใ™ใ€‚flash-linear-attention ใจ causal-conv1d ใŒใ‚คใƒณใ‚นใƒˆใƒผใƒซใ•ใ‚Œใฆใ„ใ‚Œใฐ้ซ˜้€Ÿใชใ‚ซใƒผใƒใƒซใŒไฝฟใ‚ใ‚Œใ€ใชใ‘ใ‚Œใฐ PyTorch ๅฎŸ่ฃ…ใงๅ‹•ไฝœใ—ใพใ™

ๅญฆ็ฟ’

ๅญฆ็ฟ’ใƒ‡ใƒผใ‚ฟ

ๅญฆ็ฟ’ใƒ‡ใƒผใ‚ฟใฏ 24,146 ไปถใงใ€ใ™ในใฆ Amazon Shopping Queries Dataset๏ผˆESCI๏ผ‰ ใฎๆ—ฅๆœฌ่ชžใ‚ตใƒ–ใ‚ปใƒƒใƒˆใซ็”ฑๆฅใ—ใพใ™ใ€‚ESCI ใฎ test ๅˆ†ๅ‰ฒใฏๅญฆ็ฟ’ใ€ๅˆๆˆใ€้ธๅˆฅใฎใ„ใšใ‚Œใซใ‚‚ไฝฟใ‚ใšใ€่ฉ•ไพกๅฐ‚็”จใซใ—ใฆใ„ใพใ™ใ€‚

  • ๅฎŸใ‚ฏใ‚จใƒช 12,043 ไปถ: ESCI ๆ—ฅๆœฌ่ชž train ๅˆ†ๅ‰ฒใฎใƒฆใƒ‹ใƒผใ‚ฏใชใ‚ฏใ‚จใƒช๏ผˆๆญฃ่ฆๅŒ–ใ—ใŸๆ–‡ๅญ—ๅˆ—ใŒ test ใจไธ€่‡ดใ™ใ‚‹ใ‚‚ใฎใฏ้™คๅค–๏ผ‰
  • ๅˆๆˆใ‚ฏใ‚จใƒช 12,103 ไปถ: ๆ—ฅๆœฌ่ชžใฎๅฎŸใ‚ฏใ‚จใƒชใฏๅนณๅ‡็ด„ 10 ๆ–‡ๅญ—ใง 6 ๅ‰ฒไปฅไธŠใŒ 1ใ€œ2 ่ชžใฎใŸใ‚ใ€ไธ่ถณใ™ใ‚‹ๆคœ็ดขๆ„ๅ›ณใ‚’่ฃœใ†ใŸใ‚ใซๅˆๆˆใ—ใŸใ€‚train ๅดใซใ ใ‘็พใ‚Œใ‚‹ๅ•†ๅ“ใฎใ‚ฟใ‚คใƒˆใƒซใ€ใƒ–ใƒฉใƒณใƒ‰ใ€่‰ฒใ‚’็จฎใซใ—ใฆใ€ใƒ–ใƒฉใƒณใƒ‰ๆŒ‡ๅฎšใ€่‰ฒๆŒ‡ๅฎšใ€ใƒ–ใƒฉใƒณใƒ‰ใ‚„่‰ฒใ‚„ๆฉŸ่ƒฝใฎๅฆๅฎšใ€่‡ช็„ถๆ–‡ใ€ไพกๆ ผใ‚„้€ๆ–™ใชใฉใฎๆœช่งฃๆฑบๆกไปถใ€ๅฏพๅฟœๆฉŸ็จฎใ€ๅž‹็•ชใ€3 ๆกไปถไปฅไธŠใฎ่ค‡ๅˆใ€่กจ่จ˜ๆบใ‚Œ๏ผˆๅ…จ่ง’ใ€ใ‹ใชใ€้€ฃ็ตใ€ๅคงๅฐๆ–‡ๅญ—ใ€่ปฝใ„่ชคๅญ—๏ผ‰ใ€ๆ•ฐ้‡ใฎ 12 ใƒ‘ใ‚ฟใƒผใƒณใ‚’ Qwen/Qwen3.5-27B ใซ็”Ÿๆˆใ•ใ›ใŸ

ๆญฃ่งฃใจใชใ‚‹ๆง‹้€ ๅŒ– JSON ใฏ Qwen/Qwen3.5-27B ใŒไฝœๆˆใ—ใพใ—ใŸใ€‚27B ใƒขใƒ‡ใƒซใซใฏ 5 ้ …็›ฎใจ 9 ๅฑžๆ€งใฎ่ฉณ็ดฐใชๅฎš็พฉใ‚’ๅซใ‚€ใ‚ฌใ‚คใƒ‰ใƒฉใ‚คใƒณใจ 18 ไปถใฎไพ‹ใ‚’ไธŽใˆใ€ๆ€่€ƒ้Ž็จ‹ใชใ—ใฎ่ฒชๆฌฒใƒ‡ใ‚ณใƒผใƒ‰ใง JSON ใ‚’็”Ÿๆˆใ•ใ›ใฆใ„ใพใ™ใ€‚็”Ÿๆˆใ—ใŸ JSON ใฏๆฌกใฎๆคœ่จผใ‚’้€š้Žใ—ใŸใ‚‚ใฎใ ใ‘ใ‚’ๆŽก็”จใ—ใพใ—ใŸใ€‚

  1. JSON ใจใ—ใฆ่งฃ้‡ˆใงใใ€ๅฟ…้ ˆใ‚ญใƒผใ€ๅž‹ใ€ๅฑžๆ€งๅใŒใ‚นใ‚ญใƒผใƒžใซๅˆใ†ใ“ใจ
  2. include ใจ exclude ใฎๅ€คใŒใ‚ฏใ‚จใƒชไธญใซๅญ˜ๅœจใ™ใ‚‹ใ“ใจ
  3. ใƒ–ใƒฉใƒณใƒ‰ใจ่‰ฒใฎๅ€คใ‚’ search_terms ใ‹ใ‚‰ๅค–ใ™ใ€้™คๅค–ๅฏพ่ฑกใฎ่ชžใ‚’ search_terms ใ‹ใ‚‰ๅค–ใ™ใชใฉใ€ๆฑบๅฎš็š„ใช่ฆๅ‰‡ใ‚’ๅพŒๅ‡ฆ็†ใง้ฉ็”จใ™ใ‚‹ใ“ใจ

ๅญฆ็ฟ’ไพ‹ใฏ systemใ€userใ€assistant ใฎ 3 ใƒกใƒƒใ‚ปใƒผใ‚ธใงใ€system ใฏไธŠ่จ˜ใฎ็Ÿญใ„ๅ›บๅฎšใƒ—ใƒญใƒณใƒ—ใƒˆใ€user ใฏใ‚ฏใ‚จใƒชใ€assistant ใฏ JSON ใ ใ‘ใงใ™ใ€‚่ฉณ็ดฐใชใ‚ฌใ‚คใƒ‰ใƒฉใ‚คใƒณใฏใƒฉใƒ™ใƒซ็”Ÿๆˆๆ™‚ใซใ ใ‘ไฝฟใ„ใ€4B ใƒขใƒ‡ใƒซใซใฏใใฎๅˆคๆ–ญ่ฆๅ‰‡ใ‚’ใƒ•ใ‚กใ‚คใƒณใƒใƒฅใƒผใƒ‹ใƒณใ‚ฐใงๅญฆ็ฟ’ใ•ใ›ใŸใฎใงใ€ๆŽจ่ซ–ๆ™‚ใซ้•ทใ„ๆŒ‡็คบใ‚„ไพ‹ใ‚’้€ใ‚‹ๅฟ…่ฆใฏใ‚ใ‚Šใพใ›ใ‚“ใ€‚

ๅญฆ็ฟ’่จญๅฎš

้ …็›ฎ ๅ†…ๅฎน
ใƒ™ใƒผใ‚นใƒขใƒ‡ใƒซ Qwen/Qwen3.5-4B๏ผˆใƒ†ใ‚ญใ‚นใƒˆ้ƒจๅˆ†ใฎ Qwen3_5ForCausalLM ใจใ—ใฆใƒญใƒผใƒ‰๏ผ‰
ๅญฆ็ฟ’ๆ–นๅผ LoRA ใซใ‚ˆใ‚‹ๆ•™ๅธซใ‚ใ‚Šใƒ•ใ‚กใ‚คใƒณใƒใƒฅใƒผใƒ‹ใƒณใ‚ฐ
LoRA rank / alpha / dropout 64 / 128 / 0.05
LoRA ้ฉ็”จๅ…ˆ ้€šๅธธใ‚ขใƒ†ใƒณใ‚ทใƒงใƒณใฎ q_proj, k_proj, v_proj, o_projใ€็ทšๅฝขใ‚ขใƒ†ใƒณใ‚ทใƒงใƒณใฎ in_proj_qkv, in_proj_z, in_proj_b, in_proj_a, out_projใ€FFN ใฎ gate_proj, up_proj, down_proj๏ผˆๅ…จ 32 ๅฑค๏ผ‰
ๅญฆ็ฟ’ๅฏ่ƒฝใƒ‘ใƒฉใƒกใƒผใ‚ฟ 129,859,584๏ผˆๅ…จไฝ“ใฎ็ด„ 3%๏ผ‰
ๅญฆ็ฟ’ใƒ‡ใƒผใ‚ฟ / ้–‹็™บใƒ‡ใƒผใ‚ฟ 24,146 ไปถ / 1,336 ไปถ
ๆœ€ๅคง็ณปๅˆ—้•ท 768 ใƒˆใƒผใ‚ฏใƒณ๏ผˆๅญฆ็ฟ’ไพ‹ใฏๅนณๅ‡ 116 ใƒˆใƒผใ‚ฏใƒณใ€ๆœ€ๅคง 224 ใƒˆใƒผใ‚ฏใƒณ๏ผ‰
ๅญฆ็ฟ’็އ / ใ‚นใ‚ฑใ‚ธใƒฅใƒผใƒซ 1e-4 / cosineใ€warmup 3%
epoch / ๅฎŸๅŠนใƒใƒƒใƒ 2 / 32๏ผˆ16 ร— gradient accumulation 2๏ผ‰
ๆ•ฐๅ€คๅฝขๅผ / optimizer bfloat16 / fused AdamW
ๆๅคฑ assistant ใฎ JSON ้ƒจๅˆ†ใจ็ต‚ไบ†ใƒˆใƒผใ‚ฏใƒณใฎใฟ
ๆ€่€ƒ้Ž็จ‹ ๅญฆ็ฟ’ๆ™‚ใ€ๆŽจ่ซ–ๆ™‚ใจใ‚‚็„กๅŠน๏ผˆenable_thinking=False๏ผ‰
ๅญฆ็ฟ’ๆ™‚้–“ ็ด„ 17.6 ๅˆ†๏ผˆNVIDIA RTX PRO 6000 Blackwell 96 GB 1 ๆžš๏ผ‰

่ฉ•ไพก

ๆŒ‡ๆจ™

  • Exact Match: product_typeใ€search_termsใ€includeใ€excludeใ€unresolved ใฎ 5 ้ …็›ฎใ™ในใฆใŒๆญฃ่งฃใจไธ€่‡ดใ—ใŸใ‚ฏใ‚จใƒชใฎๅ‰ฒๅˆใ€‚ๆฏ”่ผƒใฏ NFKC ๆญฃ่ฆๅŒ–ใ€ๅคงๆ–‡ๅญ—ๅฐๆ–‡ๅญ—ใฎๅŒไธ€่ฆ–ใ€็ฉบ็™ฝใฎ้™คๅŽปใ‚’่กŒใฃใŸไธŠใงใฎๅฎŒๅ…จไธ€่‡ดใงใ€search_terms ใฎ้ †ๅบใฏๅ•ใ„ใพใ›ใ‚“ใ€‚JSON ใจใ—ใฆ่งฃ้‡ˆใงใใชใ„ๅ‡บๅŠ›ใฏไธๆญฃ่งฃใงใ™
  • Attribute F1: include ใจ exclude ใซๅซใพใ‚Œใ‚‹๏ผˆๅฑžๆ€งๅ, ๅ€ค๏ผ‰ใฎ็ต„ใ‚’ๅ…จใ‚ฏใ‚จใƒชใง้›†่จˆใ—ใŸ micro F1ใ€‚ๆคœ็ดขใฎ็ตžใ‚Š่พผใฟใจ้™คๅค–ใซ็›ดๆŽฅไฝฟใ†ๆกไปถใฎๆŠฝๅ‡บ็ฒพๅบฆใ‚’่กจใ—ใพใ™
  • JSON ๆœ‰ๅŠน็އ: ๅ‡บๅŠ›ใŒ JSON ใจใ—ใฆ่งฃ้‡ˆใงใใ€ใ‚นใ‚ญใƒผใƒžใซๅˆ่‡ดใ—ใŸๅ‰ฒๅˆ
  • grounding ็އ: ๅ‡บๅŠ›ใ—ใŸ include ใจ exclude ใฎๅ€คใฎใ†ใกใ€ใ‚ฏใ‚จใƒชไธญใซๅฎŸๅœจใ™ใ‚‹่ชžๅฅใฎๅ‰ฒๅˆ๏ผˆๆกไปถใฎๆ้€ ใŒใชใ„ใ“ใจ๏ผ‰

่ฉ•ไพกใ‚ปใƒƒใƒˆ

  • ๅฎŸใ‚ฏใ‚จใƒช 600 ไปถ: ESCI ๆ—ฅๆœฌ่ชž test ๅˆ†ๅ‰ฒใฎใ‚ฏใ‚จใƒชใ‹ใ‚‰ไฝœๆˆใ€‚Qwen3.5-27B ใซใ‚ฏใ‚จใƒชใ”ใจใซ 3 ๅ›žใƒฉใƒ™ใƒซใ‚’็”Ÿๆˆใ•ใ›ใ€3 ๅ›žใจใ‚‚ไธ€่‡ดใ—ใŸๅˆคๆ–ญใฎๅฎ‰ๅฎšใ—ใŸไพ‹ 300 ไปถใจใ€ไธ€่‡ดใ—ใชใ‹ใฃใŸๅˆคๆ–ญใฎ้›ฃใ—ใ„ไพ‹ 300 ไปถใ‚’้ธใณใ€ใใฎๅ…จไปถใ‚’ AI ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใŒใ‚ฌใ‚คใƒ‰ใƒฉใ‚คใƒณใซ็…งใ‚‰ใ—ใฆ 1 ไปถใšใค็ขบ่ชใ—ใฆ 91 ไปถใ‚’ไฟฎๆญฃใ—ใŸใ€‚้›ฃใ—ใ„ใ‚ฏใ‚จใƒชใ‚’ๆ„ๅ›ณ็š„ใซๅŠๆ•ฐๅซใ‚€ใŸใ‚ใ€ใ“ใฎๅ€คใฏ ESCI ๅ…จไฝ“ใฎๅนณๅ‡็ฒพๅบฆใงใฏใชใใ€ใƒขใƒ‡ใƒซ้–“ใฎๆฏ”่ผƒๅ€คใจใ—ใฆๆ‰ฑใ†
  • ๅˆๆˆใ‚ฏใ‚จใƒช 711 ไปถ: ๅญฆ็ฟ’ใซไฝฟใฃใฆใ„ใชใ„่ฉ•ไพกๅดใฎๅ•†ๅ“ๆƒ…ๅ ฑใ‹ใ‚‰ใ€ๅฆๅฎš่กจ็พใ€่ค‡ๆ•ฐๆกไปถใ€ๅฏพๅฟœๆฉŸ็จฎใ€ไพกๆ ผๆกไปถใชใฉใฎๆคœ็ดขๆ„ๅ›ณใ‚’็‹™ใฃใฆๅˆๆˆใ—ใŸใ‚ฏใ‚จใƒชใ€‚ๆญฃ่งฃใƒฉใƒ™ใƒซใฏ Qwen3.5-27B ใŒ็”Ÿๆˆใ—ใŸใ‚‚ใฎใชใฎใงใ€ๅŒใ˜ 27B ใƒขใƒ‡ใƒซใฎ่ฉ•ไพกใซใฏๆœ‰ๅˆฉใซๅƒใ

็ตๆžœ

ๅฎŸใ‚ฏใ‚จใƒช 600 ไปถ:

ใƒขใƒ‡ใƒซ ๆŽจ่ซ–ๆ–นๆณ• Exact Match Attribute F1 JSON ๆœ‰ๅŠน็އ grounding ็އ
Qwen3.5-4B ๆœชๅญฆ็ฟ’๏ผˆ็Ÿญใ„ๆŒ‡็คบใฎใฟ๏ผ‰ 4.7 0.0 99.8 0.0
Qwen3.5-4B ๆœชๅญฆ็ฟ’๏ผˆใ‚ฌใ‚คใƒ‰ใƒฉใ‚คใƒณใจ 18 ไพ‹ใฎ few-shot๏ผ‰ 39.8 63.0 100.0 99.3
Qwen3.5-4B LoRA๏ผˆใ“ใฎใƒขใƒ‡ใƒซ๏ผ‰ ็Ÿญใ„ๆŒ‡็คบใฎใฟ 69.5 81.7 100.0 100.0
Qwen3.5-27B ๆœชๅญฆ็ฟ’๏ผˆใ‚ฌใ‚คใƒ‰ใƒฉใ‚คใƒณใจ 18 ไพ‹ใฎ few-shot๏ผ‰ 70.7 84.4 100.0 100.0

ๅˆๆˆใ‚ฏใ‚จใƒช 711 ไปถ:

ใƒขใƒ‡ใƒซ ๆŽจ่ซ–ๆ–นๆณ• Exact Match Attribute F1 JSON ๆœ‰ๅŠน็އ grounding ็އ
Qwen3.5-4B ๆœชๅญฆ็ฟ’๏ผˆ็Ÿญใ„ๆŒ‡็คบใฎใฟ๏ผ‰ 0.0 0.6 99.4 100.0
Qwen3.5-4B ๆœชๅญฆ็ฟ’๏ผˆใ‚ฌใ‚คใƒ‰ใƒฉใ‚คใƒณใจ 18 ไพ‹ใฎ few-shot๏ผ‰ 20.8 73.9 100.0 99.5
Qwen3.5-4B LoRA๏ผˆใ“ใฎใƒขใƒ‡ใƒซ๏ผ‰ ็Ÿญใ„ๆŒ‡็คบใฎใฟ 68.4 88.8 100.0 99.8
Qwen3.5-27B ๆœชๅญฆ็ฟ’๏ผˆใ‚ฌใ‚คใƒ‰ใƒฉใ‚คใƒณใจ 18 ไพ‹ใฎ few-shot๏ผ‰ 67.7 95.9 100.0 99.9

ๆ•ฐๅ€คใฏใ™ในใฆ็™พๅˆ†็އใงใ™ใ€‚ใ“ใฎใƒขใƒ‡ใƒซใฎ Exact Match ใฎ 95% ไฟก้ ผๅŒบ้–“๏ผˆใ‚ฏใ‚จใƒชๅ˜ไฝใฎใƒ–ใƒผใƒˆใ‚นใƒˆใƒฉใƒƒใƒ—๏ผ‰ใฏใ€ๅฎŸใ‚ฏใ‚จใƒช 600 ไปถใง 65.5 ใ‹ใ‚‰ 72.8ใ€ๅˆๆˆใ‚ฏใ‚จใƒช 711 ไปถใง 64.8 ใ‹ใ‚‰ 71.7 ใงใ™ใ€‚ๅฎŸใ‚ฏใ‚จใƒชใงใฏใ€็ด„ 70 ใƒˆใƒผใ‚ฏใƒณใฎ็Ÿญใ„ๆŒ‡็คบใ ใ‘ใงใ€ใ‚ฌใ‚คใƒ‰ใƒฉใ‚คใƒณใจ 18 ไพ‹ใ‚’ๆฏŽๅ›žไธŽใˆใŸ 27B ใƒขใƒ‡ใƒซใจๅŒ็จ‹ๅบฆใฎ็ฒพๅบฆใซใชใฃใฆใ„ใพใ™ใ€‚

ใ“ใฎใƒขใƒ‡ใƒซใฎ้ …็›ฎๅˆฅใฎๅ€ค:

้ …็›ฎ ๅฎŸใ‚ฏใ‚จใƒช 600 ไปถ ๅˆๆˆใ‚ฏใ‚จใƒช 711 ไปถ
product_type ๆญฃ่งฃ็އ 87.0 89.6
search_terms F1๏ผˆใ‚ฏใ‚จใƒชๅนณๅ‡๏ผ‰ 91.0 91.1
include F1 81.1 88.1
exclude F1 88.2 93.3
unresolved F1 87.5 93.7
้™คๅค–ๆกไปถใ‚’ๅซใ‚€ใ‚ฏใ‚จใƒชใง exclude ใŒๅฎŒๅ…จไธ€่‡ดใ—ใŸๅ‰ฒๅˆ 82.0๏ผˆ50 ไปถไธญ๏ผ‰ 95.7๏ผˆ161 ไปถไธญ๏ผ‰

ๅฑžๆ€งๅˆฅใฎ F1๏ผˆๆ‹ฌๅผงๅ†…ใฏๆญฃ่งฃใซๅซใพใ‚Œใ‚‹็ต„ใฎๆ•ฐ๏ผ‰:

ๅฑžๆ€ง ๅฎŸใ‚ฏใ‚จใƒช 600 ไปถ ๅˆๆˆใ‚ฏใ‚จใƒช 711 ไปถ
brand 83.9 (136) 90.1 (324)
color 90.9 (15) 96.9 (210)
size 90.7 (45) 91.3 (103)
material 71.0 (16) 92.8 (35)
target 89.6 (48) 84.0 (60)
compatible_with 76.1 (49) 85.2 (92)
feature 77.8 (213) 81.2 (324)
quantity 80.0 (2) 95.4 (72)
model_number 85.7 (15) 88.9 (81)

ๅ‚่€ƒใจใ—ใฆใ€ๅŒใ˜ใƒ‡ใƒผใ‚ฟใจ่จญๅฎšใงๅญฆ็ฟ’ใ—ใŸใƒ™ใƒผใ‚นใƒขใƒ‡ใƒซใฎใ‚ตใ‚คใ‚บ้•ใ„ใฎ็ตๆžœใ‚’็คบใ—ใพใ™ใ€‚

ใƒ™ใƒผใ‚นใƒขใƒ‡ใƒซ ๅฎŸใ‚ฏใ‚จใƒช 600 ไปถ EM / Attr F1 ๅˆๆˆใ‚ฏใ‚จใƒช 711 ไปถ EM / Attr F1
Qwen3.5-2B LoRA 64.2 / 76.3 63.3 / 86.1
Qwen3.5-4B LoRA๏ผˆใ“ใฎใƒขใƒ‡ใƒซ๏ผ‰ 69.5 / 81.7 68.4 / 88.8
Qwen3.5-9B LoRA 71.3 / 82.9 70.3 / 89.9

ๆŽจ่ซ–้€Ÿๅบฆ

vLLM 0.29.0 ใฎ OpenAI ไบ’ๆ›ใ‚ตใƒผใƒใƒผ๏ผˆNVIDIA RTX PRO 6000 Blackwell 96 GB 1 ๆžšใ€bfloat16ใ€ๅŒๆ™‚ๅฎŸ่กŒๆ•ฐ 1ใ€่ฒชๆฌฒใƒ‡ใ‚ณใƒผใƒ‰๏ผ‰ใซ 200 ไปถใฎใ‚ฏใ‚จใƒชใ‚’ 1 ไปถใšใค้€ใฃใฆๆธฌๅฎšใ—ใŸๅฟœ็ญ”ๆ™‚้–“ใงใ™ใ€‚TTFT ใฏใƒชใ‚ฏใ‚จใ‚นใƒˆ้€ไฟกใ‹ใ‚‰ๆœ€ๅˆใฎใƒˆใƒผใ‚ฏใƒณใ‚’ๅ—ใ‘ๅ–ใ‚‹ใพใงใ€E2E ใฏ็”ŸๆˆๅฎŒไบ†ใพใงใฎๆ™‚้–“ใงใ™ใ€‚

้ …็›ฎ ๅ€ค
TTFT ๅนณๅ‡ / p95 26.2 ms / 27.2 ms
E2E ๅนณๅ‡ / p50 / p95 252.4 ms / 241.7 ms / 338.3 ms
ๅ…ฅๅŠ›ใƒˆใƒผใ‚ฏใƒณๅนณๅ‡๏ผˆใƒใƒฃใƒƒใƒˆใƒ†ใƒณใƒ—ใƒฌใƒผใƒˆ้ฉ็”จๅพŒ๏ผ‰ 75.8
ๅ‡บๅŠ›ใƒˆใƒผใ‚ฏใƒณๅนณๅ‡ 32.0
JSON ใจใ—ใฆ่งฃ้‡ˆใงใใŸไปถๆ•ฐ 200 / 200

ๆคœ็ดขใƒชใ‚ฏใ‚จใ‚นใƒˆใ”ใจใซๆฏŽๅ›žใ‚ชใƒณใƒฉใ‚คใƒณใงๆŽจ่ซ–ใ™ใ‚‹ใซใฏใ€ๆ•ฐ็™พใƒŸใƒช็ง’ใฎๅฟœ็ญ”ๆ™‚้–“ใฏ็„ก่ฆ–ใงใใพใ›ใ‚“ใ€‚ๅฎŸ้‹็”จใงใฏใ€้ ปๅ‡บใ‚ฏใ‚จใƒชใฎ่งฃ้‡ˆ็ตๆžœใ‚’ใ‚ชใƒ•ใƒฉใ‚คใƒณใงไบ‹ๅ‰็”Ÿๆˆใ—ใฆใ‚ญใƒฃใƒƒใ‚ทใƒฅใ—ใ€ใ‚ญใƒฃใƒƒใ‚ทใƒฅใซใชใ„ใ‚ฏใ‚จใƒชใ ใ‘ใ‚’ใ‚ชใƒณใƒฉใ‚คใƒณใงๆŽจ่ซ–ใ™ใ‚‹ๆง‹ๆˆใ‚’ๆŽจๅฅจใ—ใพใ™ใ€‚ๅคšๆ•ฐใฎใ‚ฏใ‚จใƒชใ‚’ใพใจใ‚ใฆใƒใƒƒใƒๆŽจ่ซ–ใ™ใ‚‹ๅ ดๅˆใฎใ‚นใƒซใƒผใƒ—ใƒƒใƒˆใฏใ€ๅ˜็‹ฌใƒชใ‚ฏใ‚จใ‚นใƒˆใฎๅฟœ็ญ”ๆ™‚้–“ใ‹ใ‚‰ๆƒณๅƒใ™ใ‚‹ใ‚ˆใ‚Šใšใฃใจ้ซ˜ใใชใ‚Šใพใ™ใ€‚

ๅˆถ้™ไบ‹้ …

  • ๆœฌใƒขใƒ‡ใƒซใฏๅ…ฌ้–‹ใƒ‡ใƒผใ‚ฟใ‚ปใƒƒใƒˆ ESCI ใ‚’ไฝฟใฃใŸ PoC ใงใ‚ใ‚Šใ€ๆœฌ็•ช้‹็”จใ‚’ๆƒณๅฎšใ—ใŸๅ“่ณชไฟ่จผใ‚„็ถ™็ถš็š„ใช่ฉ•ไพกใฏ่กŒใฃใฆใ„ใพใ›ใ‚“ใ€‚ๅฎŸ้š›ใฎใ‚ตใƒผใƒ“ใ‚นใซไฝฟใ†ๅ ดๅˆใฏใ€ๅฏพ่ฑกใ‚ตใ‚คใƒˆใฎใ‚ฏใ‚จใƒชใƒญใ‚ฐใงใฎๅ†ๅญฆ็ฟ’ใจ่ฉ•ไพกใ€ๅ‡บๅŠ›ใ‚นใ‚ญใƒผใƒžใจใ‚ฌใ‚คใƒ‰ใƒฉใ‚คใƒณใฎ่ฆ‹็›ดใ—ใ€ๆคœ็ดขๅดใฎๆญฃ่ฆๅŒ–่พžๆ›ธใจใฎๆŽฅ็ถšใŒๅฟ…่ฆใงใ™
  • ๅ€คใฏใ‚ฏใ‚จใƒชไธญใฎ่กจ่จ˜ใ‚’ใใฎใพใพไฝฟใ†ใŸใ‚ใ€ใƒ–ใƒฉใƒณใƒ‰ใฎๅˆฅๅใ‚„่‰ฒใฎ่กจ่จ˜ๆบใ‚Œใฎ็ตฑไธ€๏ผˆใƒ–ใƒฉใƒƒใ‚ฏใ€้ป’ใ€black ใชใฉ๏ผ‰ใฏๆคœ็ดขใ‚ทใ‚นใƒ†ใƒ ๅดใง่กŒใ†ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™
  • ๅ•†ๅ“็จฎๅˆฅใจๅฑžๆ€งใฎๅขƒ็•Œ๏ผˆๅฏพๅฟœๆฉŸ็จฎใ‹ใƒ–ใƒฉใƒณใƒ‰ใ‹ใ€ๆฉŸ่ƒฝใ‹ๆคœ็ดข่ชžใ‹๏ผ‰ใ€่ค‡ๅˆ่ชžใฎๅˆ†ๅ‰ฒใ€ใ€Œใ€œใชใ—ใ€ใฎ่งฃ้‡ˆใซใฏใ€ใƒฉใƒ™ใƒซไฝœๆˆๆ™‚ใฎใ‚ฌใ‚คใƒ‰ใƒฉใ‚คใƒณใซ็”ฑๆฅใ™ใ‚‹ๆบใ‚ŒใŒใ‚ใ‚Šใ€Exact Match ใฎไธŠ้™ใฏใƒฉใƒ™ใƒซ่‡ชไฝ“ใฎไธ€่‡ด็އใซ่ฟ‘ใ„ๆฐดๆบ–ใงใ™
  • ็ฉบ็™ฝใ‚’ๅ…ฅใ‚Œใšใซ่ชžใ‚’้€ฃ็ตใ—ใŸใ‚ฏใ‚จใƒชใงใฏ่ชžใฎๅˆ‡ใ‚Œ็›ฎใŒๆ›–ๆ˜งใซใชใ‚Šใ€็ฉบ็™ฝๅŒบๅˆ‡ใ‚Šใฎใ‚ฏใ‚จใƒชใ‚ˆใ‚Š็ฒพๅบฆใŒไธ‹ใŒใ‚‹ๅ‚พๅ‘ใŒใ‚ใ‚Šใพใ™
  • ๅญฆ็ฟ’ใƒ‡ใƒผใ‚ฟใฏ Amazon ใฎๆ—ฅๆœฌ่ชžๆคœ็ดขใ‚ฏใ‚จใƒชใซๅŸบใฅใใŸใ‚ใ€ไป–ใฎ่จ€่ชžใ‚„ใ€ๅ•†ๅ“ๆคœ็ดขไปฅๅค–ใฎใƒ‰ใƒกใ‚คใƒณใงใฏๅ†ๅญฆ็ฟ’ใŒๅฟ…่ฆใงใ™
  • ่จญ่จˆไธŠใ€ใ‚ฏใ‚จใƒชใซๆ›ธใ‹ใ‚Œใฆใ„ใชใ„ๆƒ…ๅ ฑใฏ่ฃœๅฎŒใ—ใพใ›ใ‚“ใ€‚ใƒ–ใƒฉใƒณใƒ‰ใ‹ใ‚‰ๅ•†ๅ“็จฎๅˆฅใ‚’ๆŽจๆธฌใ—ใŸใ‚Šใ€ๅž‹็•ชใ‹ใ‚‰ใƒกใƒผใ‚ซใƒผใ‚’็‰นๅฎšใ—ใŸใ‚Šใฏใ—ใพใ›ใ‚“
  • ๆญฃ่งฃใƒฉใƒ™ใƒซใฏๅคง่ฆๆจก่จ€่ชžใƒขใƒ‡ใƒซใŒ็”Ÿๆˆใ—ใŸใ‚‚ใฎใงใ€ไบบๆ‰‹ใฎใ‚ขใƒŽใƒ†ใƒผใ‚ทใƒงใƒณใงใฏใ‚ใ‚Šใพใ›ใ‚“ใ€‚่ฉ•ไพกๅ€คใ‚‚ๅŒใ˜ๆ€ง่ณชใฎใƒฉใƒ™ใƒซใซๅŸบใฅใๆฏ”่ผƒๅ€คใจใ—ใฆๆ‰ฑใฃใฆใใ ใ•ใ„

ใƒฉใ‚คใ‚ปใƒณใ‚นใจๅ‡บๅ…ธ

  • ใ“ใฎใƒขใƒ‡ใƒซใฎใƒฉใ‚คใ‚ปใƒณใ‚นใฏ Apache-2.0 ใงใ™
  • ใƒ™ใƒผใ‚นใƒขใƒ‡ใƒซ: Qwen/Qwen3.5-4B๏ผˆApache-2.0๏ผ‰
  • ใƒฉใƒ™ใƒซ็”Ÿๆˆใจๅˆๆˆใ‚ฏใ‚จใƒชใฎไฝœๆˆ: Qwen/Qwen3.5-27B๏ผˆApache-2.0๏ผ‰
  • ใƒ‡ใƒผใ‚ฟ: Amazon Shopping Queries Dataset๏ผˆESCI๏ผ‰ ใฎๆ—ฅๆœฌ่ชžใ‚ตใƒ–ใ‚ปใƒƒใƒˆ๏ผˆApache-2.0ใ€่ซ–ๆ–‡๏ผ‰
@article{reddy2022shopping,
  title   = {Shopping Queries Dataset: A Large-Scale {ESCI} Benchmark for Improving Product Search},
  author  = {Chandan K. Reddy and Lluรญs Mร rquez and Fran Valero and Nikhil Rao and Hugo Zaragoza and Sambaran Bandyopadhyay and Arnab Biswas and Anlu Xing and Karthik Subbian},
  journal = {arXiv preprint arXiv:2206.06588},
  year    = {2022}
}

ใ“ใฎใƒขใƒ‡ใƒซใ‚’ๅผ•็”จใ™ใ‚‹ๅ ดๅˆ:

@misc{query-understanding-ja-4b,
  title  = {query-understanding-ja-4b: Japanese product search query understanding with Qwen3.5-4B and LoRA},
  author = {mahiyama},
  year   = {2026},
  url    = {https://huggingface.co/mahiyama/query-understanding-ja-4b}
}
Downloads last month
73
Safetensors
Model size
5B params
Tensor type
BF16
ยท
F32
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for mahiyama/query-understanding-ja-4b

Finetuned
Qwen/Qwen3.5-4B
Finetuned
(1153)
this model
Adapters
1 model

Paper for mahiyama/query-understanding-ja-4b