当前位置: 首页 > news >正文

大模型之词嵌入模型实现文本向量化

文章目录

  • 开源的模型
  • 开源模型下载地址
  • 词嵌入模型的使用

开源的模型

  • 通用领域模型
    • all-MiniLM-L6-v2,Sentence-Transformers的高效轻量级模型。在许多通用任务上表现优异,适用于快速验证和轻量级应用;384维度,速度快,资源消耗低。

    • all-mpnet-base-v2,Sentence-Transformers 的模型,比 MiniLM 更大更强,提供更好的精度;768维度,精度高,速度比 MiniLM 慢,但仍是平衡性能与效率的优选。

    • BGE (BAAI General Embedding) 系列,是当前中文和英文任务上表现最出色的开源模型系列之一,非常适用于生产环境。
      代表模型:
      BGE-large-en-v1.5 / BGE-base-en-v1.5,英文SOTA模型。
      BGE-large-zh-v1.5 / BGE-base-zh-v1.5,中文SOTA模型。

    • BGE-M3:最新推出的模型,支持多语言、多粒度、多功能(检索、稀疏、多向量),非常强大。

    • E5 系列,性能顶尖
      代表模型:E5-large-v2, E5-base-v2, multilingual-e5-large(多语言)

 

  • 多语言模型
    • paraphrase-multilingual-MiniLM-L12-v2
      Sentence-Transformers 的多语言版本,支持50多种语言。如果文档包含多种语言,这是一个很好的选择。
      维度:384维

    • multilingual-e5-large
      E5 的多语言版本,支持100多种语言,性能非常强劲。

    • BGE-M3,支持多语言,并且功能更多。
       

  • 领域特定模型
    • ClinicalBERT / BioBERT:适用于生物医学、临床文档领域。

    • LegalBERT:适用于法律文档领域。

    • CodeBERT:适用于编程代码检索。

    • GTE(General Text Embeddings):由阿里云达摩院推出,有 base 和 large 版本,在通用文本嵌入任务上表现良好。

 

开源模型下载地址

Hugging Face 模型库地址:

  1. all-MiniLM-L6-v2

  2. all-mpnet-base-v2

  3. BGE (BAAI General Embedding) 系列
    BGE-large-en-v1.5 (英文, 大型)
    BGE-base-en-v1.5 (英文, 基础)
    BGE-large-zh-v1.5 (中文, 大型)
    BGE-base-zh-v1.5 (中文, 基础)
    BGE-M3 (最新多语言多功能模型)

 

词嵌入模型的使用

  • 方法1,使用 sentence-transformers 库
    • 专为 sentence embeddings 设计的,封装了所有细节,使用非常简单。
    • 安装 pip install sentence-transformers
    • 使用方式
from sentence_transformers import SentenceTransformer# 选择模型名称
model_name = "sentence-transformers/all-MiniLM-L6-v2" # 或者 "BAAI/bge-large-zh-v1.5"# 加载模型(首次运行会自动下载)
model = SentenceTransformer(model_name)# 生成嵌入向量
sentences = ["这是一个示例句子。", "这是另一个句子。"]  # or text_splitter分割的文本片段
embeddings = model.encode(sentences)
print(embeddings.shape) # 输出 (2, 384) 2行 384列

 

  • 方法2,使用 Hugging Face的 transformers
    • 安装 ,pip install transformers
    • 使用模型
from transformers import AutoTokenizer, AutoModel
import torch  # pip install torch, 即pytorch
from torch.nn.functional import normalize  # 归一化# 选择模型名称
model_name = "BAAI/bge-large-zh-v1.5"# 加载分词器(首次运行会自动下载)
tokenizer = AutoTokenizer.from_pretrained(model_name)# 加载模型
model = AutoModel.from_pretrained(model_name)# 处理输入并生成嵌入向量
sentences = ["这是一个示例句子。", "这是另一个句子。"]# 对输入进行分词
encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')# 计算嵌入
with torch.no_grad():model_output = model(**encoded_input)# 对 token embeddings 进行均值池化(Mean Pooling)来得到 sentence embeddingsentence_embeddings = model_output[0][:, 0]# 或者更标准的均值池化方法:# attention_mask = encoded_input['attention_mask']# sentence_embeddings = mean_pooling(model_output, attention_mask)# 对 embeddings 进行归一化(BGE 等模型推荐)
sentence_embeddings = normalize(sentence_embeddings, p=2, dim=1)
print(sentence_embeddings.shape)

如果无法连接huggingface的官网,可以提前下载模型,并使用。


文章转载自:

http://bNP85YCq.rbffj.cn
http://auhuhepM.rbffj.cn
http://B9m9XJ2x.rbffj.cn
http://yAymmBu6.rbffj.cn
http://Mqi80yjR.rbffj.cn
http://I07aodH9.rbffj.cn
http://azEeNp0A.rbffj.cn
http://AbAARyvt.rbffj.cn
http://wkbbThKd.rbffj.cn
http://9SU2s5pl.rbffj.cn
http://knG4bO0c.rbffj.cn
http://DXKE4FY0.rbffj.cn
http://TxgEHl4v.rbffj.cn
http://TllhejRe.rbffj.cn
http://9pABI6Mc.rbffj.cn
http://D7oB3Bzu.rbffj.cn
http://CyMPUuRX.rbffj.cn
http://Uah3Ny27.rbffj.cn
http://gC9pApOT.rbffj.cn
http://AzhKv9VN.rbffj.cn
http://R3i4QVAo.rbffj.cn
http://dQFQxqYg.rbffj.cn
http://9jcEM28p.rbffj.cn
http://OUl7FAQl.rbffj.cn
http://Kr7mo62k.rbffj.cn
http://u3i5hHa8.rbffj.cn
http://f4WFaZKR.rbffj.cn
http://S6usqcfC.rbffj.cn
http://W1Yxfo1V.rbffj.cn
http://771ruV4C.rbffj.cn
http://www.dtcms.com/a/377095.html

相关文章:

  • MySQL慢查询
  • 前端如何判断token是否过期
  • 当没有接口文档时,如何使用Jmeter录制和创建脚本
  • 解锁深度学习黑科技:Embedding向量嵌入探秘
  • Java 大视界 -- 基于 Java 的大数据分布式存储在数字图书馆海量资源存储与管理中的应用
  • 6、Python-Pandas数据处理与分析
  • 实现一个优雅的城市选择器组件 - Uniapp实战
  • WebSocket 双向通信实战:SCADA 移动端实时操控响应优化
  • 校园管理系统练习项目源码-前后端分离-【node版】
  • websocket和socket区别
  • Linux驱动如何向应用层提供sysfs操作接口
  • 人工智能学习:Transformer结构中的前馈全连接层
  • 项目需求分析(2)
  • 灌区泵站远程监控物联网网关解决方案
  • 【114B】基于51单片机GSM自动售货机【Keil程序+报告+原理图】
  • 【前言技术拓展Trip one】 芯片自动化和具身智能
  • Windows-Use实战:AI驱动的Windows自动化
  • OpenResty 限流方案对比:lua_shared_dict vs Redis
  • 保安员【单选题】考试题库及答案
  • 为什么90%的前端开发者永远成不了架构师?真相残酷但必须说
  • python如何提取链接中的域名
  • 简单介绍一下Clickhouse及其引擎
  • Qt信号槽机制
  • 【大数据相关】ClickHouse命令行与SQL语法详解
  • 市面上主流接口测试工具对比
  • 【51单片机】【protues仿真】基于51单片机密码锁系统
  • S7-200 SMART 实战:自动包装控制系统的指令应用拆解
  • 【Linux】常用命令汇总
  • 减速机和减速电机市场:增长逻辑、驱动因素及头部格局全解析
  • 第3节-使用表格数据-外键