cstr/PIXIE-Rune-v1.0-ONNX
PIXIE-Rune-v1.0 — ONNX Quantized Variants
ONNX-quantized derivatives of telepix/PIXIE-Rune-v1.0, an encoder-based multilingual embedding model developed by TelePIX Co., Ltd. optimized for semantic retrieval across 74 languages with specialization in Korean/English aerospace domain applications.
Original model: `telepix/PIXIE-Rune-v1.0` — safetensors weights + FP32 ONNX (onnx/model.onnx+onnx/model.onnx_data). This repo adds INT8 and INT4 quantized ONNX variants for CPU-efficient deployment.
Model Description
ONNX Variants
Metrics measured on 8 semantically diverse sentences vs FP32 reference. Pearson r = correlation of pairwise cosine similarity matrices (structure preservation). MRR = Mean Reciprocal Rank on a retrieval probe — 1.00 = perfect retrieval ranking preserved.
Quantization methodology
The XLM-RoBERTa vocabulary has 250,002 tokens × 1024 dimensions, making the word embedding table the dominant weight (~977 MB FP32). Each variant handles it differently:
- INT8 (
model_quantized.onnx):onnxruntime.quantization.quantize_dynamic(weight_type=QInt8)— quantizes all weight tensors including the embedding Gather to INT8. Compact, maximum compatibility. - INT4 + INT8 emb (
model_int4.onnx): Two-pass. Pass 1:MatMulNBitsQuantizer(block_size=32, symmetric=True)packs transformer MatMul weights to 4-bit nibbles. Pass 2:quantize_dynamic(op_types=["Gather"], weight_type=QInt8)brings the embedding table from 977 MB FP32 → 244 MB INT8. - INT4 full (
model_int4_full.onnx): Same MatMulNBits pass, then manualDequantizeLinear(axis=0)node insertion packs the embedding table as per-row symmetric INT4 nibbles (scale = max(|row|)/7). Requires opset upgrade 14→21. Embedding: 977 MB → 122 MB.
Usage
fastembed (Rust)
This repo is integrated in fastembed-rs:
use fastembed::{EmbeddingModel, InitOptions, TextEmbedding};
// INT8 — most compatible, 542 MB
let model = TextEmbedding::try_new(InitOptions::new(EmbeddingModel::PixieRuneV1Q))?;
// INT4 + INT8 embedding — 434 MB
let model = TextEmbedding::try_new(InitOptions::new(EmbeddingModel::PixieRuneV1Int4))?;
// INT4 full — smallest, 337 MB
let model = TextEmbedding::try_new(InitOptions::new(EmbeddingModel::PixieRuneV1Int4Full))?;
let embeddings = model.embed(vec!["안녕하세요", "Hello world"], None)?;ONNX Runtime (Python)
import onnxruntime as ort
import numpy as np
from tokenizers import Tokenizer
tokenizer = Tokenizer.from_file("tokenizer.json")
tokenizer.enable_truncation(max_length=512)
tokenizer.enable_padding(pad_token="<pad>", pad_id=1)
session = ort.InferenceSession("onnx/model_quantized.onnx",
providers=["CPUExecutionProvider"])
texts = ["텔레픽스는 어떤 산업 분야에서 위성 데이터를 활용하나요?",
"텔레픽스는 해양, 자원, 농업 등 다양한 분야에서 위성 데이터를 분석하여 서비스를 제공합니다."]
enc = tokenizer.encode_batch(texts)
ids = np.array([e.ids for e in enc], dtype=np.int64)
mask = np.array([e.attention_mask for e in enc], dtype=np.int64)
out = session.run(None, {"input_ids": ids, "attention_mask": mask})[0] # (batch, seq, 1024)
# Mean pooling + L2 normalize
pooled = (out * mask[..., None]).sum(1) / mask.sum(1, keepdims=True).clip(1e-9)
norms = np.linalg.norm(pooled, axis=-1, keepdims=True)
embeddings = pooled / norms.clip(1e-12)
# cosine similarity
scores = embeddings @ embeddings.T
print(scores)sentence-transformers (original FP32 weights)
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("telepix/PIXIE-Rune-v1.0")
queries = ["텔레픽스는 어떤 산업 분야에서 위성 데이터를 활용하나요?",
"국방 분야에 어떤 위성 서비스가 제공되나요?"]
documents = ["텔레픽스는 해양, 자원, 농업 등 다양한 분야에서 위성 데이터를 분석하여 서비스를 제공합니다.",
"정찰 및 감시 목적의 위성 영상을 통해 국방 관련 정밀 분석 서비스를 제공합니다."]
q_emb = model.encode(queries, prompt_name="query")
d_emb = model.encode(documents)
scores = model.similarity(q_emb, d_emb)
print(scores)Quality Benchmarks (original model)
Results from telepix/PIXIE-Rune-v1.0, evaluated using Korean-MTEB-Retrieval-Evaluators.
6 Datasets of MTEB (Korean)
Benchmarks: Ko-StrategyQA, AutoRAGRetrieval, MIRACLRetrieval, PublicHealthQA, BelebeleRetrieval, MultiLongDocRetrieval.
7 Datasets of BEIR (English)
Benchmarks: ArguAna, FEVER, FiQA-2018, HotpotQA, MSMARCO, NQ, SCIDOCS.
License
Apache 2.0 — same as the original telepix/PIXIE-Rune-v1.0.
Citation
@software{TelePIX-PIXIE-Rune-v1,
title = {PIXIE-Rune-v1.0},
author = {TelePIX AI Research Team and Bongmin Kim},
year = {2025},
url = {https://huggingface.co/telepix/PIXIE-Rune-v1.0}
}Contact
Original model authors: bmkim@telepix.net ONNX quantization: cstr — open an issue on this repo for questions.
Provenance and EU AI Act Art. 53 note
- Upstream model: telepix/PIXIE-Rune-v1.0 — published by
telepix. - Upstream licence:
apache-2.0. This repository redistributes under the same terms; it grants no rights the upstream licence does not. - What was done here: format conversion and/or quantisation only (ONNX). No training, no fine-tuning, no merging, no distillation, no change to architecture, vocabulary or capability. Only the numeric representation of the upstream weights differs.
- Training data: documented — where it is documented at all — by the upstream provider; see the upstream model card. No training data was used, added or selected by this repository.
- Provider status: under Regulation (EU) 2024/1689 the upstream authors remain the provider of this model. Converting the serialisation format does not make this repository the provider of a new general-purpose AI model, and no such claim is made. Questions about training content, copyright policy or model capability belong upstream.
