ONNX 模型库
返回模型

说明文档

all-MiniLM-L6-v2-onnx

这是 sentence-transformers/all-MiniLM-L6-v2 的 ONNX 移植版本,用于生成文本嵌入。

模型详情

嵌入维度: 384
最大序列长度: 256

它已使用以下标签进行转换:

input_names=[\"input_ids\", \"attention_mask\"],
output_names=[\"token_embeddings\", \"sentence_embedding\"],
dynamic_axes={
    \"input_ids\": {0: \"batch_size\", 1: \"sequence_length\"},
    \"attention_mask\": {0: \"batch_size\", 1: \"sequence_length\"},
    \"token_embeddings\": {0: \"batch_size\", 1: \"sequence_length\"},
    \"sentence_embedding\": {0: \"batch_size\"}

使用方法:

#include <iostream>
#include <vector>
#include <onnxruntime_cxx_api.h>

int main() {
    Ort::Env env(ORT_LOGGING_LEVEL_WARNING, \"embedding\");
    Ort::SessionOptions session_options;
    session_options.SetIntraOpNumThreads(1);

    // 加载 ONNX 模型
    const char* model_path = \"your_model.onnx\";
    Ort::Session session(env, model_path, session_options);

    Ort::AllocatorWithDefaultOptions allocator;

    // 输入和输出名称
    const char* input_names[] = {\"input_ids\", \"attention_mask\"};
    const char* output_names[] = {\"token_embeddings\", \"sentence_embedding\"};

    // 模拟输入数据 (例如, batch_size=1, sequence_length=5)
    std::vector<int64_t> input_ids = {101, 2009, 2003, 1037, 2742}; // 示例 token IDs, 使用适当的分词库将字符串转换为 input_ids (例如 tokenizers-cpp)
    std::vector<int64_t> attention_mask = {1, 1, 1, 1, 1};

    std::vector<int64_t> input_shape = {1, 5}; // batch_size=1, seq_len=5

    // 创建输入张量
    Ort::Value input_ids_tensor = Ort::Value::CreateTensor<int64_t>(
        allocator, input_ids.data(), input_ids.size(), input_shape.data(), input_shape.size());

    Ort::Value attention_mask_tensor = Ort::Value::CreateTensor<int64_t>(
        allocator, attention_mask.data(), attention_mask.size(), input_shape.data(), input_shape.size());

    std::vector<Ort::Value> input_tensors;
    input_tensors.push_back(std::move(input_ids_tensor));
    input_tensors.push_back(std::move(attention_mask_tensor));

    // 运行推理
    auto output_tensors = session.Run(Ort::RunOptions{nullptr},
                                      input_names, input_tensors.data(), 2,
                                      output_names, 2);

    // 提取句子嵌入
    float* sentence_embedding = output_tensors[1].GetTensorMutableData<float>();
    size_t embedding_size = output_tensors[1].GetTensorTypeAndShapeInfo().GetElementCount();

    std::cout << \"句子嵌入:\n\";
    for (size_t i = 0; i < embedding_size; ++i) {
        std::cout << sentence_embedding[i] << \" \";
    }
    std::cout << std::endl;

    return 0;
}

nsense/all-MiniLM-L6-v2-onnx

作者 nsense

feature-extraction transformers
↓ 1 ♥ 0

创建时间: 2025-06-11 07:13:02+00:00

更新时间: 2025-06-11 07:30:04+00:00

在 Hugging Face 上查看

文件 (9)

.gitattributes
README.md
config.json
model.onnx ONNX
model.safetensors
special_tokens_map.json
tokenizer.json
tokenizer_config.json
vocab.txt