0


大模型获取embdding

以qwen为例:

要部署并使用 Qwen 模型并输出它的嵌入(embedding),需要经过几个主要步骤:

  1. 安装必要的库
  2. 加载模型
  3. 处理输入数据
  4. 获取嵌入(embedding)

本文将使用 Hugging Face 的

transformers

库来完成这些步骤。这是一个非常流行且功能强大的库,用于处理各种预训练语言模型。

1. 安装必要的库

首先,需要安装一些必要的库,包括

transformers

torch

pip install transformers torch
  1. 封装模型完整代码
# 导入必要的库
from transformers import AutoTokenizer, AutoModel
import torch

class QwenEmbeddingExtractor:
    def __init__(self, model_name: str):
        """
        初始化模型和分词器
        
        Args:
            model_name (str): 预训练的Qwen模型名称
        """
        self.tokenizer = AutoTokenizer.from_pretrained(model_name)
        self.model = AutoModel.from_pretrained(model_name)
        
    def encode_text(self, text: str) -> torch.Tensor:
        """
        将输入文本转换为嵌入
        
        Args:
            text (str): 输入文本
        
        Returns:
            torch.Tensor: 文本对应的嵌入
        """
        inputs = self.tokenizer(text, return_tensors="pt")
        with torch.no_grad():
            outputs = self.model(**inputs)
        
        embeddings = outputs.last_hidden_state
        return embeddings

    def encode_texts(self, texts: list) -> torch.Tensor:
        """
        将多个输入文本转换为批量嵌入
        
        Args:
            texts (list): 输入文本列表
        
        Returns:
            torch.Tensor: 文本列表对应的嵌入
        """
        inputs = self.tokenizer(texts, return_tensors="pt", padding=True, truncation=True)
        with torch.no_grad():
            outputs = self.model(**inputs)
        
        embeddings = outputs.last_hidden_state
        return embeddings

# 创建 QwenEmbeddingExtractor 实例
model_name = "QwenName/QwenModel"  # 替换成实际的模型名称
extractor = QwenEmbeddingExtractor(model_name)

# 单个文本示例
text = "这是一个示例文本,用来生成嵌入。"
embedding = extractor.encode_text(text)
print(embedding)

# 多个文本示例
texts = ["文本1", "文本2", "文本3"]
embeddings = extractor.encode_texts(texts)
print(embeddings)

本文转载自: https://blog.csdn.net/u013069552/article/details/140641217
版权归原作者 frostjsy 所有, 如有侵权,请联系我们删除。

“大模型获取embdding”的评论:

还没有评论