Views
No views yet
⚠️ 후속 모델(V3)이 나왔습니다 — 그쪽을 권장합니다. 이 모델(V1)은 임베더가dragonkue/BGE-m3-ko이고 64토큰·위키 단독으로 학습했습니다. V3는 표준BAAI/bge-m3임베더, 최대 256토큰, 6개 도메인으로 새로 학습했으며, 동일 조건 비교에서 V1보다 전 지표가 약 2배 우수합니다(word-F1 0.46 vs 0.23, cos 0.94 vs 0.85). 임베더가 다르므로 두 모델은 호환되지 않습니다.
dragonkue/BGE-m3-ko 임베딩 벡터로부터 한국어 원문을 복원하는 vec2text 모델입니다.
문장 임베딩이 원문 정보를 얼마나 노출하는지(프라이버시 위협)를 보여줍니다.terriapurplewave/bge-m3-ko-inversion)terriapurplewave/bge-m3-ko-corrector)| 추론 | exact match | 비고 |
|---|---|---|
| inversion 단독 (0-step) | ~20% | 의미는 맞으나 어순/어휘 다름 |
| corrector 20-step + beam 4 | ~80% | 실사용 설정 |
from_pretrained 아님)from_pretrained에서 forward가 깨지는 이슈가 있어,
InversionConfig로 뼈대를 만든 뒤 state_dict를 적재해야 합니다.1import os
2os.environ["TORCH_FORCE_NO_WEIGHTS_ONLY_LOAD"] = "1"
3import torch, vec2text
4from vec2text.models import InversionModel, CorrectorEncoderModel
5from vec2text.models.config import InversionConfig
6from huggingface_hub import snapshot_download
7
8inv_dir = snapshot_download("terriapurplewave/bge-m3-ko-inversion")
9corr_dir = snapshot_download("terriapurplewave/bge-m3-ko-corrector")
10
11inv = InversionModel(InversionConfig.from_pretrained(inv_dir))
12inv.load_state_dict(torch.load(inv_dir + "/pytorch_model.bin", weights_only=False), strict=False)
13inv = inv.cuda().eval()
14corr = CorrectorEncoderModel(InversionConfig.from_pretrained(corr_dir))
15corr.load_state_dict(torch.load(corr_dir + "/pytorch_model.bin", weights_only=False), strict=False)
16corr = corr.cuda().eval()
17corrector = vec2text.load_corrector(inv, corr)
18
19texts = ["국방부는 북한의 도발에 강력히 대응하겠다고 밝혔다."]
20inp = inv.embedder_tokenizer(texts, return_tensors="pt", padding="max_length",
21 truncation=True, max_length=64).cuda()
22emb = inv.call_embedding_model(input_ids=inp.input_ids, attention_mask=inp.attention_mask)
23print(vec2text.invert_embeddings(embeddings=emb, corrector=corrector,
24 num_steps=20, sequence_beam_width=4))inference.py가 위 과정을 그대로 담고 있습니다.| 항목 | 값 |
|---|---|
| 임베더(고정) | dragonkue/BGE-m3-ko (1024d, CLS+정규화) |
| 디코더 백본 | google/mt5-base |
| 데이터 | 한국어 위키 문장 약 600만 (≤64토큰) |
| max_seq_length | 64 |
| inversion | 3 epoch |
| corrector | ~16 epoch (수렴) |