|
Download README.md from iwaitu/qwen3-embedding-0.6b-onnx: direct link, hf CLI and curl.
- Browser
- Download file 1.49 kB
-
https://huggingface.co/iwaitu/qwen3-embedding-0.6b-onnx/resolve/6fa892b0aa306cb9e6ed7449ecb3f54124c087ad/README.md
- Command line
-
hf download hf://iwaitu/qwen3-embedding-0.6b-onnx@6fa892b0aa306cb9e6ed7449ecb3f54124c087ad/README.md
-
curl -L -o README.md https://huggingface.co/iwaitu/qwen3-embedding-0.6b-onnx/resolve/6fa892b0aa306cb9e6ed7449ecb3f54124c087ad/README.md
1.49 kB
| license: mit | |
| base_model: | |
| - Qwen/Qwen3-Embedding-0.6B | |
| onnx version. | |
| import numpy as np | |
| import onnxruntime as ort | |
| from transformers import AutoTokenizer | |
| class QwenEmbeddingONNX: | |
| def __init__(self, model_dir, model_path, max_length=512, providers=None): | |
| self.max_length = max_length | |
| self.tokenizer = AutoTokenizer.from_pretrained(model_dir) | |
| if providers is None: | |
| providers = ['CPUExecutionProvider'] | |
| self.session = ort.InferenceSession( | |
| model_path, | |
| providers=providers | |
| ) | |
| self.input_names = [i.name for i in self.session.get_inputs()] | |
| def encode(self, texts, normalize=True): | |
| if isinstance(texts, str): | |
| texts = [texts] | |
| inputs = self.tokenizer( | |
| texts, | |
| padding=True, | |
| truncation=True, | |
| max_length=self.max_length, | |
| return_tensors="np", | |
| ) | |
| input_feed = { | |
| k: inputs[k].astype(np.int64) | |
| for k in self.input_names | |
| if k in inputs | |
| } | |
| outputs = self.session.run(None, input_feed) | |
| embeddings = outputs[0] | |
| # 如果输出是 [B, L, H],取第一个 token | |
| if embeddings.ndim == 3: | |
| embeddings = embeddings[:, 0, :] | |
| # L2 normalize | |
| if normalize: | |
| norm = np.linalg.norm(embeddings, axis=1, keepdims=True) | |
| embeddings = embeddings / (norm + 1e-9) | |
| return embeddings | |