OLA-Embed / README.md
Cartinoe5930's picture
Upload README.md
21434eb verified
|
Raw History Blame Contribute Delete
16.2 kB
---
language:
- ko
- en
- ja
- vi
library_name: sentence-transformers
pipeline_tag: feature-extraction
license: apache-2.0
tags:
- sentence-transformers
- multimodal
- embedding
- finance
- retrieval
- multilingual
- cross-lingual
- matryoshka
- qwen3-vl
- image-text-retrieval
base_model: Qwen/Qwen3-VL-Embedding-8B
base_model_relation: finetune
datasets:
- OLAIR/OLA-Embed-Training
---
# OLA-Embed
OLA-Embed๋Š” ๊ธˆ์œต ๋ฌธ์„œ ๊ฒ€์ƒ‰๊ณผ ๋‹ค๊ตญ์–ดยท๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ ์ •๋ณด ๊ฒ€์ƒ‰์„ ์œ„ํ•ด ๊ฐœ๋ฐœ๋œ 8B ๊ทœ๋ชจ์˜ ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. [Qwen3-VL-Embedding-8B](https://huggingface.co/Qwen/Qwen3-VL-Embedding-8B)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ธˆ์œตยท๊ฒฝ์ œยท๋‰ด์Šคยท๋‹ค๊ตญ์–ด pair ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๋Œ€์กฐํ•™์Šต์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
๋ชจ๋ธ์€ ํ…์ŠคํŠธ, ํ‘œ๊ฐ€ ํฌํ•จ๋œ ๋ฌธ์„œ ์ด๋ฏธ์ง€, ์Šคํฌ๋ฆฐ์ƒท, ์ด๋ฏธ์ง€, ๋น„๋””์˜ค ๋ฐ ํ˜ผํ•ฉ ์ž…๋ ฅ์„ ํ•˜๋‚˜์˜ ๋ฒกํ„ฐ ๊ณต๊ฐ„์œผ๋กœ ํ‘œํ˜„ํ•˜๋„๋ก ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณธ ๊ณผ์ œ์˜ ์ค‘์  ๊ฒ€์ฆ ์–ธ์–ด๋Š” ํ•œ๊ตญ์–ด, ์˜์–ด, ์ผ๋ณธ์–ด, ๋ฒ ํŠธ๋‚จ์–ด์ž…๋‹ˆ๋‹ค.
> **๋ผ์ด์„ ์Šค**
>
> OLA-Embed๋Š” Apache-2.0 ๋ผ์ด์„ ์Šค๋กœ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.
## ๋ชจ๋ธ ์ƒ์„ธ ์ •๋ณด
| ํ•ญ๋ชฉ | ๋‚ด์šฉ |
|---|---|
| ๋ชจ๋ธ ์ €์žฅ์†Œ | [OLAIR/OLA-Embed](https://huggingface.co/OLAIR/OLA-Embed) |
| ๊ฐœ๋ฐœ ๊ธฐ๊ด€ | OneLineAI / OLAIR |
| ๊ธฐ๋ฐ˜ ๋ชจ๋ธ | [Qwen/Qwen3-VL-Embedding-8B](https://huggingface.co/Qwen/Qwen3-VL-Embedding-8B) |
| ๋ชจ๋ธ ์œ ํ˜• | ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ |
| ํŒŒ๋ผ๋ฏธํ„ฐ ์ˆ˜ | 8,144,793,840 |
| ๊ฐ€์ค‘์น˜ ์ž๋ฃŒํ˜• | BF16 |
| ๊ธฐ๋ณธ ์ž„๋ฒ ๋”ฉ ์ฐจ์› | 4,096 |
| ๊ฐ€๋ณ€ ์ฐจ์› | 64-4,096 |
| ์œ ์‚ฌ๋„ ํ•จ์ˆ˜ | ์ฝ”์‚ฌ์ธ ์œ ์‚ฌ๋„ |
| ํ’€๋ง | ๋งˆ์ง€๋ง‰ ํ† ํฐ ํ’€๋ง ํ›„ L2 ์ •๊ทœํ™” |
| ์ค‘์  ๊ฒ€์ฆ ์–ธ์–ด | ํ•œ๊ตญ์–ด, ์˜์–ด, ์ผ๋ณธ์–ด, ๋ฒ ํŠธ๋‚จ์–ด |
| ์ž…๋ ฅ ๋ชจ๋‹ฌ๋ฆฌํ‹ฐ | ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€, ์Šคํฌ๋ฆฐ์ƒท, ๋น„๋””์˜ค, ๊ตฌ์กฐํ™”ยทํ˜ผํ•ฉ ๋ฉ”์‹œ์ง€ |
| ์—…์ŠคํŠธ๋ฆผ ๋ฌธ๋งฅ ๊ธธ์ด | 32K |
| ํฌํ•จ๋œ ๋„์šฐ๋ฏธ ๊ธฐ๋ณธ๊ฐ’ | `max_length=8192`, `fps=1`, `max_frames=64` |
| ๊ฒ€์ฆํ•œ Hub ๋ฆฌ๋น„์ „ | `2af82c85d92aa1c86afdd12fc4599590a8e3bc1f` |
[์—…์ŠคํŠธ๋ฆผ ๋ชจ๋ธ ์นด๋“œ](https://huggingface.co/Qwen/Qwen3-VL-Embedding-8B)์™€ OLA-Embed์˜ ๊ฐ€๋ณ€ ์ž„๋ฒ ๋”ฉ ์ฐจ์› ๋ฒ”์œ„๋Š” 64-4,096์ž…๋‹ˆ๋‹ค. ์‹ค์ œ ์šด์˜ ์ „์—๋Š” ์„ ํƒํ•œ ์ฐจ์›์„ ์ž์ฒด ๊ฒ€์ƒ‰ ๋ง๋ญ‰์น˜์—์„œ ํ‰๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
## ๊ถŒ์žฅ ์‚ฌ์šฉ ๋ฒ”์œ„
OLA-Embed๋Š” ๋‹ค์Œ ์šฉ๋„๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
- ๊ธˆ์œต ๋ฌธ์„œ ๊ฒ€์ƒ‰ ๋ฐ ์˜๋ฏธ ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰
- ๊ณต์‹œ, ๋ฆฌ์„œ์น˜ ๋ณด๊ณ ์„œ, ๋‰ด์Šค, ๊ธˆ์œต ํ‘œ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” RAG ๊ฒ€์ƒ‰
- ํ•œ๊ตญ์–ด, ์˜์–ด, ์ผ๋ณธ์–ด, ๋ฒ ํŠธ๋‚จ์–ด ๊ฐ„ ๊ต์ฐจ์–ธ์–ด ๊ฒ€์ƒ‰
- ํ…์ŠคํŠธ-์ด๋ฏธ์ง€ ๋ฐ ๋ฌธ์„œ-์ด๋ฏธ์ง€ ๊ฒ€์ƒ‰
- ์˜๋ฏธ ์œ ์‚ฌ๋„ ๊ณ„์‚ฐ, ๊ตฐ์ง‘ํ™”, ์ค‘๋ณต ์ œ๊ฑฐ, ๋ง๋ญ‰์น˜ ์„ ๋ณ„
- MTEB, ํ•œ๊ตญ์–ด ๊ฒ€์ƒ‰ ๋ฒค์น˜๋งˆํฌ, [M2FEB](https://huggingface.co/datasets/OLAIR/M2FEB)๋ฅผ ์ด์šฉํ•œ ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ ํ‰๊ฐ€
OLA-Embed๋Š” ํ…์ŠคํŠธ ์ƒ์„ฑ ๋ชจ๋ธ์ด๋‚˜ ์žฌ์ •๋ ฌ ๋ชจ๋ธ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ธˆ์œต ์ž๋ฌธ, ๊ฑฐ๋ž˜, ์‹ ์šฉ ํŒ๋‹จ, ๋ฒ•๋ฅ  ํ•ด์„, ๊ทœ์ œ ์ค€์ˆ˜ ํŒ๋‹จ์˜ ์œ ์ผํ•œ ๊ทผ๊ฑฐ๋กœ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
## ์•„ํ‚คํ…์ฒ˜ ๋ฐ ํ‘œํ˜„ ๋ฐฉ์‹
๊ณต๊ฐœ ์ €์žฅ์†Œ์—์„œ ํ™•์ธ๋˜๋Š” ์ถ”๋ก  ๊ตฌ์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
- 36๊ฐœ ํ…์ŠคํŠธ ๋ ˆ์ด์–ด์™€ ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ ๋น„์ „ ์ธ์ฝ”๋”๋กœ ๊ตฌ์„ฑ๋œ Qwen3-VL ๋ฐฑ๋ณธ
- Sentence Transformers ์—ฐ๋™
- 4,096์ฐจ์› ์ถœ๋ ฅ ์ž„๋ฒ ๋”ฉ
- ๋งˆ์ง€๋ง‰ ํ† ํฐ ํ’€๋ง
- L2 ์ •๊ทœํ™” ์ž„๋ฒ ๋”ฉ
- ์ฝ”์‚ฌ์ธ ์œ ์‚ฌ๋„
- ๊ธฐ๋ณธ ์ง€์‹œ๋ฌธ: `Represent the user's input.`
์ €์žฅ์†Œ์˜ `scripts/qwen3_vl_embedding.py`๋Š” ํ•˜๋‚˜์˜ ์ž„๋ฒ ๋”ฉ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€, ๋น„๋””์˜ค ๋ฐ ํ˜ผํ•ฉ ์ž…๋ ฅ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
## ํ•™์Šต ๋ฐ์ดํ„ฐ
ํ•™์Šต ๋ฐ์ดํ„ฐ๋Š” [OLAIR/OLA-Embed-Training](https://huggingface.co/datasets/OLAIR/OLA-Embed-Training)์œผ๋กœ ๊ณต๊ฐœ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
| ํ•ญ๋ชฉ | ๋‚ด์šฉ |
|---|---|
| ์ตœ์ข…๋ณด๊ณ ์„œ ์ธ์ฆ pair ์ˆ˜ | 2,094,342,001์Œ |
| [๊ณต๊ฐœ ์ €์žฅ์†Œ ์šฉ๋Ÿ‰](https://huggingface.co/datasets/OLAIR/OLA-Embed-Training) | ์•ฝ 2.15TB |
| Pair ๋ ˆ์ด๋ธ” | Positive pair ๋ฐ hard-negative pair |
| ํ•ต์‹ฌ ํ•„๋“œ | `pair_id`, `label`, `pair_type`, `pair_subtype`, `a_text`, `b_text`, ์ถœ์ฒ˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ |
| ๋ชฉํ‘œ ์ค‘๋ณต๋„ ๊ธฐ์ค€ | ๊ทธ๋ฃน๋ณ„ ํ‰๊ท  ROUGE-L F1 0.4 ์ดํ•˜ |
ํ•™์Šต ๋ฐ์ดํ„ฐ ์ˆ˜๋Ÿ‰์€ ์ตœ์ข… ์ „์ˆ˜ ๊ฒ€์‚ฌ๋กœ ์ธ์ฆํ•œ 2,094,342,001์Œ์„ ๊ธฐ์ค€์œผ๋กœ ํ‘œ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค.
### ๋ฐ์ดํ„ฐ ์ถœ์ฒ˜ ๋ฐ pair ๊ตฌ์„ฑ
์ตœ์ข…๋ณด๊ณ ์„œ์— ๊ธฐ์žฌ๋œ ๋ฐ์ดํ„ฐ ์ถœ์ฒ˜์™€ ๋ณ€ํ™˜ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
- ๊ตญ๋ฆฝ๊ตญ์–ด์› ๋ง๋ญ‰์น˜ ๋ฐ AI-Hub ์ž๋ฃŒ๋ฅผ ํฌํ•จํ•œ ๊ณต๊ฐœ ํ•œ๊ตญ์–ด ์ž์›
- ํ•œ๊ตญ๊ฑฐ๋ž˜์†Œ, ํ•œ๊ตญ์€ํ–‰, ๊ธˆ์œต์œ„์›ํšŒ ๋“ฑ์˜ ๊ณต๊ฐœ ๊ธˆ์œตยท๊ฒฝ์ œ ๋ฌธ์„œ
- ๊ธˆ์œต ๋ณด๊ณ ์„œ, ๊ณต์‹œ, ๋‰ด์Šค, ๋ฌธ์„œ ์š”์•ฝ, ์›น ๋ง๋ญ‰์น˜, ๋‹ค๊ตญ์–ด ๋ณ‘๋ ฌ ๋ง๋ญ‰์น˜
- ์˜๋ฏธ๊ฐ€ ๊ฐ™์€ ๋ฌธ๋‹จ, ๋ฌธ์žฅยท์ฒญํฌ ๊ด€๊ณ„, ์š”์•ฝ ๊ด€๊ณ„, ๋‹ค๊ตญ์–ด ๋ณ‘๋ ฌ ๊ด€๊ณ„๋กœ ๊ตฌ์„ฑํ•œ positive pair
- ํ‘œ๋ฉด์  ์–ดํœ˜๋Š” ์œ ์‚ฌํ•˜์ง€๋งŒ ๊ธˆ์œต ์ˆ˜์น˜, ์ฆ๊ฐ ๋ฐฉํ–ฅ, ๊ธฐ๊ฐ„ ๋˜๋Š” ์˜๋ฏธ๊ฐ€ ๋‹ค๋ฅธ ๋ช…์‹œ์  hard negative
- ํ•œ๊ตญ์–ด, ์˜์–ด, ์ผ๋ณธ์–ด, ๋ฒ ํŠธ๋‚จ์–ด๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๊ตฌ์„ฑํ•œ ๊ต์ฐจ์–ธ์–ด positive pair
์ด ๋ชจ๋ธ ์นด๋“œ๋ฅผ ์ž‘์„ฑํ•œ ์‹œ์ ์—๋Š” [๊ณต๊ฐœ ํ•™์Šต ๋ฐ์ดํ„ฐ์…‹](https://huggingface.co/datasets/OLAIR/OLA-Embed-Training)์— ๋ฐ์ดํ„ฐ์…‹ ๋‹จ์œ„ ๋ผ์ด์„ ์Šค๊ฐ€ ์„ ์–ธ๋˜์–ด ์žˆ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์žฌ๋ฐฐํฌ ๋˜๋Š” ์ƒ์—…์  ์ด์šฉ ์ „ ํ˜„์žฌ ์ €์žฅ์†Œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์™€ ์›์ฒœ๋ณ„ ์ด์šฉ ์กฐ๊ฑด์„ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
## ํ•™์Šต ๋ฐฉ๋ฒ•
### 1. ๋Œ€์กฐํ•™์Šต
- InfoNCE ์†์‹ค์„ ์ด์šฉํ•œ bi-encoder ๋ฏธ์„ธ์กฐ์ •
- In-batch negative ์‚ฌ์šฉ
- ๊ธˆ์œต ์ˆ˜์น˜, ์ฆ๊ฐ ๋ฐฉํ–ฅ, ๊ธฐ๊ฐ„ ๋ฐ ๊ทผ์ค‘๋ณต ํ‘œํ˜„์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ๋ช…์‹œ์  hard negative ์‚ฌ์šฉ
- ์งˆ์˜์—๋งŒ ํƒœ์Šคํฌ ์ง€์‹œ๋ฌธ์„ ์ ์šฉํ•˜๋Š” ๋น„๋Œ€์นญ์  ์งˆ์˜ยท๋ฌธ์„œ ์ฒ˜๋ฆฌ
### 2. Matryoshka Representation Learning
- ์—ฌ๋Ÿฌ ์ž„๋ฒ ๋”ฉ ์ ˆ๋‹จ ์ฐจ์›์„ ๋™์‹œ์— ์ตœ์ ํ™”
- ์ฐจ์› ์ถ•์†Œ๋ฅผ ํ†ตํ•œ ๋ฒกํ„ฐ ์ €์žฅ ๋น„์šฉ ๋ฐ ๊ฒ€์ƒ‰ ๋น„์šฉ ์ ˆ๊ฐ
- ๊ธฐ๋ณธ ์ถœ๋ ฅ ์ฐจ์›์€ 4,096์ฐจ์›
### 3. ๋ ˆ์ด์–ด ์ธ์ง€ํ˜• ์ง€์‹ ์ฆ๋ฅ˜
- ์ค‘๊ฐ„ ๋ ˆ์ด์–ด์™€ ์ตœ์ข… ๋ ˆ์ด์–ด์˜ ์ถœ๋ ฅ ๋ถ„ํฌ๋ฅผ KL-divergence๋กœ ์ •๋ ฌ
- ์ฐจ์› ์ถ•์†Œ์™€ ๋ ˆ์ด์–ด ์ถ•์†Œ๋ฅผ ํ•จ๊ป˜ ์ง€์›ํ•˜๋„๋ก ์„ค๊ณ„ํ•œ ํ•™์Šต ๋ชฉ์ ํ•จ์ˆ˜(2D Matryoshka)
๊ณต๊ฐœ ๊ธฐ๋ณธ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ตœ์ข… ๋ ˆ์ด์–ด ์ž„๋ฒ ๋”ฉ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ค‘๊ฐ„ ๋ ˆ์ด์–ด ์ถ”์ถœ์€ ๋ณ„๋„ ์—ฐ๋™์ด ํ•„์š”ํ•˜๋ฉฐ ๊ธฐ๋ณธ Sentence Transformers ํ’€๋ง ์„ค์ •์—๋Š” ๋…ธ์ถœ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
### 4. ๊ต์ฐจ์–ธ์–ด ์ •๋ ฌ
- Understand-Solve-Translate(UST)์—์„œ ์ฐฉ์•ˆํ•œ ์˜์–ด ์•ต์ปค ๊ธฐ๋ฐ˜ ์˜๋ฏธ ์ •๋ ฌ
- ๊ต์ฐจ์–ธ์–ด ์ง€์‹ ์ „์ด๋ฅผ ์œ„ํ•œ Language-Mixed CoT ๋ฐ์ดํ„ฐ ์ƒ์„ฑ
- ๋‹จ์ˆœ ๋ฒˆ์—ญ ์ฆ๊ฐ•์ด ์•„๋‹Œ ์–ธ์–ด๋ณ„ ์ž์—ฐ ์ƒ์„ฑ ๋ฐฉ์‹ ์ ์šฉ
### 5. ๋ฐ์ดํ„ฐ ํ’ˆ์งˆ ๊ฒ€์ฆ
- ์ตœ์ข… ์ˆ˜๋Ÿ‰๊ณผ ์ค‘๋ณต๋„ ๊ฒ€์ฆ์— ์ƒ˜ํ”Œ๋ง์ด ์•„๋‹Œ ์ „์ˆ˜ ๊ฒ€์‚ฌ ์ ์šฉ
- ๋Œ€๊ทœ๋ชจ ROUGE-L ๊ณ„์‚ฐ์„ ์œ„ํ•œ ๋น„ํŠธ ๋ณ‘๋ ฌ LCS ์—”์ง„ ์‚ฌ์šฉ
- Python ์ฐธ์กฐ ๊ตฌํ˜„๊ณผ์˜ ๊ต์ฐจ ๊ฒ€์ฆ
- ์ƒค๋“œ ๋ฌด๊ฒฐ์„ฑ, ์ ˆ๋‹จ ํŒŒ์ผ, ๋ฏธ์™„๋ฃŒ ํŒŒ์ผ ๊ฒ€์ฆ
## ์‚ฌ์šฉ๋ฒ•
### ์„ค์น˜
```bash
pip install "sentence-transformers>=5.4.0" "transformers>=4.57.1" qwen-vl-utils pillow torch
```
### Sentence Transformers๋ฅผ ์ด์šฉํ•œ ํ…์ŠคํŠธ ๊ฒ€์ƒ‰
```python
import torch
from sentence_transformers import SentenceTransformer
model = SentenceTransformer(
"OLAIR/OLA-Embed",
device="cuda",
trust_remote_code=True,
model_kwargs={"torch_dtype": torch.bfloat16},
)
queries = [
"์‚ผ์„ฑ์ „์ž์˜ 2024๋…„ ์˜์—…์ด์ต์€ ์ „๋…„ ๋Œ€๋น„ ์–ด๋–ป๊ฒŒ ๋ณ€ํ–ˆ๋Š”๊ฐ€?"
]
documents = [
"์‚ผ์„ฑ์ „์ž์˜ 2024๋…„ ์˜์—…์ด์ต์€ 32์กฐ 7,260์–ต์›์œผ๋กœ ์ „๋…„ ๋Œ€๋น„ ํฌ๊ฒŒ ์ฆ๊ฐ€ํ–ˆ๋‹ค.",
"ํ•œ๊ตญ์˜ 2024๋…„ ์‹ค์—…๋ฅ ์€ 2.8%์˜€๋‹ค.",
"ORIX์˜ ๋‹น๊ธฐ์ˆœ์ด์ต์€ FY2026/3์— 447,265๋ฐฑ๋งŒ ์—”์„ ๊ธฐ๋กํ–ˆ๋‹ค.",
]
query_instruction = (
"์‚ฌ์šฉ์ž ์งˆ์˜์— ๋‹ตํ•  ์ˆ˜ ์žˆ๋Š” ๊ธˆ์œต ๋ฌธ์„œ๋ฅผ ๊ฒ€์ƒ‰ํ•œ๋‹ค."
)
query_embeddings = model.encode_query(
queries,
prompt=query_instruction,
normalize_embeddings=True,
truncate_dim=1024,
)
document_embeddings = model.encode_document(
documents,
normalize_embeddings=True,
truncate_dim=1024,
)
scores = model.similarity(query_embeddings, document_embeddings)
print(scores)
```
์งˆ์˜์™€ ๋ฌธ์„œ์—๋Š” ๋™์ผํ•œ `truncate_dim`์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 1,024์ฐจ์› ๋˜๋Š” 4,096์ฐจ์›๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ ๋’ค, ๊ฒ€์ƒ‰ ํ’ˆ์งˆ๊ณผ ์ง€์—ฐ์‹œ๊ฐ„ ์š”๊ตฌ์‚ฌํ•ญ์— ๋”ฐ๋ผ ๋” ๋‚ฎ์€ ์ฐจ์›์„ ๊ฒ€์ฆํ•˜๋Š” ๋ฐฉ์‹์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
### ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ ์ž„๋ฒ ๋”ฉ
Hub ์ €์žฅ์†Œ์—๋Š” `scripts/qwen3_vl_embedding.py`๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์ฒด [OLAIR/OLA-Embed](https://huggingface.co/OLAIR/OLA-Embed) ์ €์žฅ์†Œ๋ฅผ ๋ณต์ œํ•˜๊ฑฐ๋‚˜ ๋‚ด๋ ค๋ฐ›์€ ํ›„ ์ €์žฅ์†Œ ๋ฃจํŠธ์—์„œ ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
```python
import torch
from scripts.qwen3_vl_embedding import Qwen3VLEmbedder
model = Qwen3VLEmbedder(
model_name_or_path="OLAIR/OLA-Embed",
torch_dtype=torch.bfloat16,
)
inputs = [
{
"text": "2024๋…„ ์˜์—…์ด์ต์ด ์ฆ๊ฐ€ํ•œ ๊ธฐ์—…์˜ ๊ณต์‹œ๋ฅผ ๊ฒ€์ƒ‰ํ•œ๋‹ค.",
"instruction": "๊ฒ€์ƒ‰์— ์‚ฌ์šฉํ•  ๊ธˆ์œต ์งˆ์˜๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค.",
},
{
"image": "annual_report_page.png",
"instruction": "๊ฒ€์ƒ‰์— ์‚ฌ์šฉํ•  ๊ธˆ์œต ๋ฌธ์„œ ์ด๋ฏธ์ง€๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค.",
},
]
embeddings = model.process(inputs, normalize=True)
similarities = embeddings @ embeddings.T
print(similarities)
```
## ํ‰๊ฐ€ ๊ฒฐ๊ณผ
์•„๋ž˜ ๊ฒฐ๊ณผ๋Š” TIPS ์ตœ์ข…๋ณด๊ณ ์„œ์™€ ํ•ด๋‹น ๋ณด๊ณ ์„œ์—์„œ ์ฐธ์กฐํ•œ KOLAS ์‹œํ—˜์„ฑ์ ์„œ์˜ ์ˆ˜์น˜๋ฅผ ์˜ฎ๊ธด ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ‰๊ฐ€ ์žฌํ˜„์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ๋™๊ฒฐ๋œ ํ‰๊ฐ€ ๋ฐ์ดํ„ฐ์™€ ํƒœ์Šคํฌ๋ณ„ ์ง€์‹œ๋ฌธ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
### ์˜์–ด MTEB
ํ‰๊ฐ€๋Š” ์˜์–ด MTEB 56๊ฐœ ํƒœ์Šคํฌ์™€ 2๊ฐœ ์ด์ค‘ ํ…์ŠคํŠธ ๋งˆ์ด๋‹ ๋ฐ์ดํ„ฐ์…‹์„ ํฌํ•จํ•˜๋ฉฐ, ์•„๋ž˜ ๊ฐ’์€ ํƒœ์Šคํฌ ์œ ํ˜•๋ณ„ ์ง‘๊ณ„ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.
| ํƒœ์Šคํฌ ์œ ํ˜• | ์ฃผ์š” ์ง€ํ‘œ | ๋ชฉํ‘œ์น˜ | OLA-Embed |
|---|---:|---:|---:|
| ์ด์ค‘ ํ…์ŠคํŠธ ๋งˆ์ด๋‹ | F1 | >= 0.680 | **0.886** |
| ๋ถ„๋ฅ˜ | ์ •ํ™•๋„ | >= 0.800 | **0.835** |
| ๊ตฐ์ง‘ํ™” | V-measure | >= 0.500 | **0.516** |
| ์Œ ๋ถ„๋ฅ˜ | AP(์ฝ”์‚ฌ์ธ) | >= 0.880 | **0.886** |
| ์žฌ์ •๋ ฌ | MAP | >= 0.600 | **0.600** |
| ๊ฒ€์ƒ‰ | nDCG@10 | >= 0.550 | **0.748** |
| ์˜๋ฏธ ํ…์ŠคํŠธ ์œ ์‚ฌ๋„ | Spearman(์ฝ”์‚ฌ์ธ) | >= 0.850 | **0.851** |
| ์š”์•ฝ | Spearman(์ฝ”์‚ฌ์ธ) | >= 0.320 | **0.322** |
### ํ•œ๊ตญ์–ด ๊ฒ€์ƒ‰ ๋ฒค์น˜๋งˆํฌ
ํ‰๊ฐ€๋Š” nDCG@10์„ ์‚ฌ์šฉํ•˜๋Š” ํ•œ๊ตญ์–ด ๊ฒ€์ƒ‰ ํƒœ์Šคํฌ 8๊ฐœ์™€ ์ข…ํ•ฉ๊ฐ’์ธ `Korean Average` 1๊ฐœ ํ–‰์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
| ๋ฐ์ดํ„ฐ์…‹ | ๋ชฉํ‘œ์น˜ | OLA-Embed |
|---|---:|---:|
| Korean Human Judgements | >= 0.980 | **0.996** |
| Korean Dialog Summary | >= 0.930 | **0.976** |
| Korean Summarize AiHub | >= 0.990 | **0.996** |
| Alpaca-Korean | >= 0.850 | **0.977** |
| Korean Grade School Math | >= 0.990 | **0.999** |
| Korean QA Generation | >= 0.900 | **0.935** |
| Korean RLHF | >= 0.950 | **0.983** |
| Korean Law Open Data Precedents | >= 0.950 | **0.988** |
| Korean Average | >= 0.950 | **0.950** |
๋ณด๊ณ ๋œ ์„ฑ๋Šฅ ์ธก์ •์— ์‚ฌ์šฉํ•œ ํ‰๊ฐ€ ๋ฐ์ดํ„ฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
- [Cartinoe5930/TIPS-English](https://huggingface.co/datasets/Cartinoe5930/TIPS-English)
- [Cartinoe5930/TIPS-Korean](https://huggingface.co/datasets/Cartinoe5930/TIPS-Korean)
### M2FEB
[OLAIR/M2FEB](https://huggingface.co/datasets/OLAIR/M2FEB)๋Š” CC-BY-4.0์œผ๋กœ ๊ณต๊ฐœ๋œ ๊ธˆ์œต ํŠนํ™” ๋‹ค๊ตญ์–ด ๋ฒค์น˜๋งˆํฌ์ž…๋‹ˆ๋‹ค. ๊ตฌ์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
- ํ‰๊ฐ€ ๋ฌธํ•ญ 350๊ฐœ
- ํ…์ŠคํŠธยทํ‘œ ์ž…๋ ฅ ๋ฌธ๋งฅ 700๊ฐœ
- A/B ์„ ํƒ์ง€ ์„ธํŠธ 300๊ฐœ
- ๊ธˆ์œต ๋„๋ฉ”์ธ 10๊ฐœ
- ํ•œ๊ตญ์–ด, ์˜์–ด, ์ผ๋ณธ์–ด, ๋ฒ ํŠธ๋‚จ์–ด ๋ฌธํ•ญ
- ๋ฌธํ•ญ๋ณ„ ์ถœ์ฒ˜ ์ถ”์  ์ •๋ณด์™€ ๊ฒ€์ฆ๋œ ๊ธˆ์œต ์ˆ˜์น˜
์ตœ์ข…๋ณด๊ณ ์„œ๋Š” M2FEB๋ฅผ ๋ณธ ๊ณผ์ œ์˜ ๊ฐœ๋ฐœ ๊ฒฐ๊ณผ๋ฌผ๋กœ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ ํ˜„์žฌ ๋ณด๊ณ ์„œ์—๋Š” OLA-Embed์˜ M2FEB ์ ์ˆ˜๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด ๋ชจ๋ธ ์นด๋“œ์—์„œ๋„ ํ•ด๋‹น ์„ฑ๋Šฅ์„ ์ฃผ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
## ์žฌํ˜„์„ฑ ์ฐธ๊ณ ์‚ฌํ•ญ
- ์ €์žฅ์†Œ ๊ธฐ๋ณธ ์ถœ๋ ฅ: L2 ์ •๊ทœํ™”๋œ 4,096์ฐจ์› ๋ฒกํ„ฐ
- ์œ ์‚ฌ๋„: ์ฝ”์‚ฌ์ธ ์œ ์‚ฌ๋„
- ๊ธฐ๋ณธ ํ”„๋กฌํ”„ํŠธ: `Represent the user's input.`
- ์—…์ŠคํŠธ๋ฆผ ๋ฐฑ๋ณธ์€ 32K ๋ฌธ๋งฅ ๊ธธ์ด๋ฅผ ๋ช…์‹œํ•˜์ง€๋งŒ ํฌํ•จ๋œ ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ ๋„์šฐ๋ฏธ์˜ ๊ธฐ๋ณธ๊ฐ’์€ 8,192ํ† ํฐ
- ํ‰๊ฐ€ ๋ฆฌ๋น„์ „์„ ๊ณ ์ •ํ•˜๊ณ  ๋ชจ๋ธ ๋ฆฌ๋น„์ „, ํ”„๋กฌํ”„ํŠธ, ์ฐจ์›, ์ž๋ฃŒํ˜•, ์ „์ฒ˜๋ฆฌ ์„ค์ •์„ ํ•จ๊ป˜ ๊ธฐ๋ก
- ์‹คํ–‰ ์‹œ์ ๋งˆ๋‹ค ํ‰๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ๊ตฌ์„ฑํ•˜์ง€ ์•Š๋„๋ก ๊ณต๊ฐœ๋œ ๋™๊ฒฐ ํ‰๊ฐ€ ๋ฐ์ดํ„ฐ ์‚ฌ์šฉ
## ํ•œ๊ณ„
- ๋ณด๊ณ ๋œ ์„ฑ๋Šฅ์€ ๋„ค ๊ฐ€์ง€ ์ค‘์  ์–ธ์–ด์™€ ๊ธˆ์œต ๋„๋ฉ”์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๊ฒ€์ฆ๋˜์—ˆ์œผ๋ฉฐ, ๋‹ค๋ฅธ ์–ธ์–ด์™€ ๋„๋ฉ”์ธ์—์„œ๋Š” ๋ณ„๋„ ํ‰๊ฐ€๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
- Qwen3-VL ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ†ตํ•ด ์ด๋ฏธ์ง€์™€ ๋น„๋””์˜ค๋ฅผ ์ž„๋ฒ ๋”ฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ํ˜„์žฌ OLA-Embed ๋ณด๊ณ ์„œ์—๋Š” OLA-Embed ์ „์šฉ ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ ๋ฒค์น˜๋งˆํฌ ์ ์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
- ๊ธˆ์œต ์ˆ˜์น˜, ๋‹จ์œ„, ํšŒ๊ณ„ ๊ธฐ๊ฐ„, ์ฆ๊ฐ ๋ฐฉํ–ฅ์€ ์˜๋ฏธ์ ์œผ๋กœ ๊ฐ€๊นŒ์šฐ๋ฉด์„œ๋„ ์„œ๋กœ ๋‹ค๋ฅธ ๋‹ต์„ ์š”๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šด์˜ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ช…์‹œ์  hard-negative ํ…Œ์ŠคํŠธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
- OCR ํ’ˆ์งˆ, ๊ณ ๋ฐ€๋„ ํ‘œ, ์ €ํ•ด์ƒ๋„ ์Šคํฌ๋ฆฐ์ƒท, ๋น„์ •ํ˜• ๋ฌธ์„œ ๋ ˆ์ด์•„์›ƒ์€ ๊ฒ€์ƒ‰ ํ’ˆ์งˆ์„ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
- ์ž„๋ฒ ๋”ฉ ์ฐจ์›์„ ์ค„์ด๋ฉด ์ €์žฅ ๋น„์šฉ๊ณผ ์ง€์—ฐ์‹œ๊ฐ„์€ ๊ฐ์†Œํ•˜์ง€๋งŒ ๊ฒ€์ƒ‰ ์ •ํ™•๋„๋„ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์„ ํƒํ•œ ๋ชจ๋“  ์ฐจ์›์„ ๊ฒ€์ฆํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
- BF16 ๊ฐ€์ค‘์น˜ ํŒŒ์ผ์€ ์‹คํ–‰ ๋ถ€๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ œ์™ธํ•˜๊ณ  ์•ฝ 16.3GB๋ฅผ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์€ ๋ฐฐ์น˜ ํฌ๊ธฐ, ๋ฌธ๋งฅ ๊ธธ์ด, ์ด๋ฏธ์ง€ ํ•ด์ƒ๋„, ๋น„๋””์˜ค ํ”„๋ ˆ์ž„ ์ˆ˜์— ๋”ฐ๋ผ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
- ๋ชจ๋ธ์€ ์›์ฒœ ๋ง๋ญ‰์น˜์— ํฌํ•จ๋œ ํŽธํ–ฅ, ์˜ค๋ฅ˜ ๋˜๋Š” ๋ฏผ๊ฐํ•œ ๋‚ด์šฉ์„ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
- ์ด ๋ชจ๋ธ์€ ์‚ฌ์‹ค ์ •ํ™•์„ฑ์„ ๋ณด์žฅํ•˜์ง€ ์•Š์œผ๋ฉฐ ๊ธˆ์œต, ๋ฒ•๋ฅ , ํšŒ๊ณ„ ๋˜๋Š” ๊ทœ์ œ ๊ฒ€ํ† ๋ฅผ ๋Œ€์‹ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
## ์•ˆ์ „ํ•˜๊ณ  ์ฑ…์ž„ ์žˆ๋Š” ์‚ฌ์šฉ
- ํˆฌ์ž, ์‹ ์šฉ, ๋ณดํ—˜, ์ฑ„์šฉ ๋˜๋Š” ๊ทœ์ œ ์ค€์ˆ˜ ํŒ๋‹จ์˜ ์œ ์ผํ•œ ์˜์‚ฌ๊ฒฐ์ • ์‹œ์Šคํ…œ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์„ธ์š”.
- ๊ธฐ๋ฐ€ ๊ธˆ์œต ๋ฌธ์„œ๋ฅผ ์ƒ‰์ธํ•  ๋•Œ๋Š” ์ ‘๊ทผ ์ œ์–ด๋ฅผ ์ ์šฉํ•˜์„ธ์š”.
- ์ž„๋ฒ ๋”ฉ์„ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์žฌ๋ฐฐํฌํ•˜๊ธฐ ์ „์— ์›์ฒœ ๋ผ์ด์„ ์Šค์™€ ๊ฐœ์ธ์ •๋ณด ๋ณดํ˜ธ ์š”๊ตฌ์‚ฌํ•ญ์„ ํ™•์ธํ•˜์„ธ์š”.
- ์‹ค์ œ ์„œ๋น„์Šค์— ๊ด€๋ จ๋œ ์–ธ์–ด, ๋ฌธ์„œ ์œ ํ˜•, ๊ณ ๊ฐ๊ตฐ, ๊ธฐ๊ฐ„๋ณ„๋กœ ๊ฒ€์ƒ‰ ํ’ˆ์งˆ์„ ํ‰๊ฐ€ํ•˜์„ธ์š”.
- ์˜ค๋ž˜๋œ ๊ณต์‹œ, ์ •์ • ๊ณต์‹œ, ๋‹จ์œ„ ๋ถˆ์ผ์น˜, ๋‚ ์งœ ์ •๋ณด ๋ˆ„์ถœ์„ ์ง€์†์ ์œผ๋กœ ์ ๊ฒ€ํ•˜์„ธ์š”.
## ๊ณต๊ฐœ๋˜์ง€ ์•Š์€ ํ•™์Šตยทํ™˜๊ฒฝ ์ •๋ณด
ํ˜„์žฌ ๊ณต๊ฐœ ์ž๋ฃŒ์—๋Š” ๋‹ค์Œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
- ํ•™์Šต๋ฅ  ๋ฐ ์˜ตํ‹ฐ๋งˆ์ด์ € ์Šค์ผ€์ค„
- ์ „์ฒด ๋ฐฐ์น˜ ํฌ๊ธฐ
- ํ•™์Šต ์—ํญ ๋˜๋Š” ์ตœ์ ํ™” ์Šคํ… ์ˆ˜
- ํ•™์Šต ํ•˜๋“œ์›จ์–ด์™€ ํ•™์Šต ์‹œ๊ฐ„
- ์—๋„ˆ์ง€ ์‚ฌ์šฉ๋Ÿ‰ ๋˜๋Š” ํƒ„์†Œ ๋ฐฐ์ถœ๋Ÿ‰
ํ•ด๋‹น ์ •๋ณด๊ฐ€ ํ™•๋ณด๋˜๋ฉด ๋ชจ๋ธ ์นด๋“œ์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
## ๋ผ์ด์„ ์Šค
OLA-Embed๋Š” Apache-2.0 ๋ผ์ด์„ ์Šค๋กœ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.
์—…์ŠคํŠธ๋ฆผ [Qwen3-VL-Embedding-8B](https://huggingface.co/Qwen/Qwen3-VL-Embedding-8B)๋Š” Apache-2.0์œผ๋กœ ๊ณต๊ฐœ๋˜์–ด ์žˆ์œผ๋ฉฐ, [M2FEB](https://huggingface.co/datasets/OLAIR/M2FEB)๋Š” CC-BY-4.0์œผ๋กœ ๊ณต๊ฐœ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•™์Šต ๋ฐ์ดํ„ฐ์˜ ์›์ฒœ๋ณ„ ์ด์šฉ ์กฐ๊ฑด์€ ์„œ๋กœ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
## ์ธ์šฉ
OLA-Embed๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ชจ๋ธ ์ €์žฅ์†Œ๋ฅผ ์ธ์šฉํ•ด ์ฃผ์„ธ์š”.
```bibtex
@misc{olaembed2026,
title = {OLA-Embed},
author = {OneLineAI},
year = {2026},
howpublished = {\url{https://huggingface.co/OLAIR/OLA-Embed}}
}
```
์—…์ŠคํŠธ๋ฆผ Qwen3-VL-Embedding ์—ฐ๊ตฌ๋„ ํ•จ๊ป˜ ์ธ์šฉํ•ด ์ฃผ์„ธ์š”.
```bibtex
@article{qwen3vlembedding,
title = {Qwen3-VL-Embedding and Qwen3-VL-Reranker: A Unified Framework for State-of-the-Art Multimodal Retrieval and Ranking},
author = {Li, Mingxin and Zhang, Yanzhao and Long, Dingkun and Chen, Keqin and Song, Sibo and Bai, Shuai and Yang, Zhibo and Xie, Pengjun and Yang, An and Liu, Dayiheng and Zhou, Jingren and Lin, Junyang},
journal = {arXiv preprint arXiv:2601.04720},
year = {2026}
}
```
## ๋ฌธ์˜
- ๊ธฐ๊ด€: [OLAIR](https://huggingface.co/OLAIR)
- ์›น์‚ฌ์ดํŠธ: [OneLineAI](https://www.onelineai.com/en/)
## ์—ฐ๊ตฌ๊ฐœ๋ฐœ ๋ฐฐ๊ฒฝ
OLA-Embed๋Š” ๊ธˆ์œต ํŠนํ™” ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌยท๋‹ค๊ตญ์–ด ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ์„ ์ ์šฉํ•œ ๊ธˆ์œต ์ƒ์„ฑํ˜• AI ์†”๋ฃจ์…˜ ๊ฐœ๋ฐœ์„ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” TIPS ์—ฐ๊ตฌ๊ฐœ๋ฐœ ๊ณผ์ œ์˜ ๊ฒฐ๊ณผ๋ฌผ๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.