Gte Qwen2 7B Instruct GGUF
G
Gte Qwen2 7B Instruct GGUF
由mav23開發
基於Qwen2架構的7B參數規模指令微調模型,專注於句子相似度計算和文本嵌入任務
下載量 118
發布時間 : 10/10/2024
模型概述
該模型是基於Qwen2架構開發的7B參數規模的指令微調模型,主要用於句子相似度計算、文本嵌入和檢索任務。在MTEB基準測試中表現出色,支持多種自然語言處理任務。
模型特點
多任務性能優異
在MTEB基準測試的多種任務中表現優異,包括分類、聚類、檢索等
大規模參數
7B參數規模提供了強大的語義理解能力
指令微調優化
經過指令微調,特別適合處理結構化任務
模型能力
句子相似度計算
文本分類
文本聚類
信息檢索
搜索結果重排序
語義文本相似度評估
使用案例
電子商務
商品評論情感分析
分析亞馬遜商品評論的情感傾向
在AmazonPolarity分類任務中達到97.5%準確率
反事實評論檢測
識別亞馬遜平臺上的反事實評論
在AmazonCounterfactual分類任務中達到91.3%準確率
客戶服務
銀行業務分類
對銀行客戶諮詢進行自動分類
在Banking77分類任務中達到87.6%準確率
學術研究
論文聚類
對arXiv和biorxiv論文進行主題聚類
在ArxivClusteringP2P任務中獲得56.46 V-measure
問答系統
技術問答檢索
在技術論壇中檢索相似問題
在AskUbuntuDupQuestions重排序任務中達到67.58 MAP
🚀 gte-Qwen2-7B-instruct
gte-Qwen2-7B-instruct 是 gte(通用文本嵌入)模型家族的最新模型,截至 2024 年 6 月 16 日,該模型在大規模文本嵌入基準測試 MTEB 基準 的英文和中文評估中均排名 第一。
近期,通義團隊 發佈了通義千問 2 系列模型,我們基於 Qwen2-7B 大語言模型訓練了 gte-Qwen2-7B-instruct 模型。與 gte-Qwen1.5-7B-instruct 模型相比,gte-Qwen2-7B-instruct 模型在微調階段使用了相同的訓練數據和訓練策略,唯一的區別是將基礎模型升級為 Qwen2-7B。考慮到通義千問 2 系列模型相較於通義千問 1.5 系列的改進,我們也可以預期嵌入模型的性能會有相應提升。
該模型包含了以下幾個關鍵的改進:
- 集成了雙向注意力機制,豐富了其上下文理解能力。
- 僅在查詢端應用指令調優,以提高效率。
- 在龐大的多語言文本語料庫上進行全面訓練,涵蓋了不同領域和場景。這種訓練利用了弱監督和監督數據,確保模型適用於多種語言和廣泛的下游任務。
✨ 主要特性
- 性能卓越:在 MTEB 基準測試的英文和中文評估中均排名第一,展現出強大的文本嵌入能力。
- 架構升級:基於 Qwen2-7B 基礎模型,集成雙向注意力機制,提升上下文理解能力。
- 指令調優:僅在查詢端應用指令調優,提高效率。
- 多語言支持:在多語言文本語料庫上進行訓練,適用於多種語言和下游任務。
📦 安裝指南
transformers>=4.39.2
flash_attn>=2.5.6
💻 使用示例
基礎用法
Sentence Transformers
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("Alibaba-NLP/gte-Qwen2-7B-instruct", trust_remote_code=True)
# 如果你想減少最大長度:
model.max_seq_length = 8192
queries = [
"how much protein should a female eat",
"summit define",
]
documents = [
"As a general guideline, the CDC's average requirement of protein for women ages 19 to 70 is 46 grams per day. But, as you can see from this chart, you'll need to increase that if you're expecting or training for a marathon. Check out the chart below to see how much protein you should be eating each day.",
"Definition of summit for English Language Learners. : 1 the highest point of a mountain : the top of a mountain. : 2 the highest level. : 3 a meeting or series of meetings between the leaders of two or more governments.",
]
query_embeddings = model.encode(queries, prompt_name="query")
document_embeddings = model.encode(documents)
scores = (query_embeddings @ document_embeddings.T) * 100
print(scores.tolist())
你可以查看 config_sentence_transformers.json 以瞭解所有預構建的提示名稱。否則,你可以使用 model.encode(queries, prompt="Instruct: ...\nQuery: "
來使用你選擇的自定義提示。
Transformers
import torch
import torch.nn.functional as F
from torch import Tensor
from transformers import AutoTokenizer, AutoModel
def last_token_pool(last_hidden_states: Tensor,
attention_mask: Tensor) -> Tensor:
left_padding = (attention_mask[:, -1].sum() == attention_mask.shape[0])
if left_padding:
return last_hidden_states[:, -1]
else:
sequence_lengths = attention_mask.sum(dim=1) - 1
batch_size = last_hidden_states.shape[0]
return last_hidden_states[torch.arange(batch_size, device=last_hidden_states.device), sequence_lengths]
def get_detailed_instruct(task_description: str, query: str) -> str:
return f'Instruct: {task_description}\nQuery: {query}'
# 每個查詢必須附帶一個描述任務的單句指令
task = 'Given a web search query, retrieve relevant passages that answer the query'
queries = [
get_detailed_instruct(task, 'how much protein should a female eat'),
get_detailed_instruct(task, 'summit define')
]
# 檢索文檔無需添加指令
documents = [
"As a general guideline, the CDC's average requirement of protein for women ages 19 to 70 is 46 grams per day. But, as you can see from this chart, you'll need to increase that if you're expecting or training for a marathon. Check out the chart below to see how much protein you should be eating each day.",
"Definition of summit for English Language Learners. : 1 the highest point of a mountain : the top of a mountain. : 2 the highest level. : 3 a meeting or series of meetings between the leaders of two or more governments."
]
input_texts = queries + documents
tokenizer = AutoTokenizer.from_pretrained('Alibaba-NLP/gte-Qwen2-7B-instruct', trust_remote_code=True)
model = AutoModel.from_pretrained('Alibaba-NLP/gte-Qwen2-7B-instruct', trust_remote_code=True)
max_length = 8192
# 對輸入文本進行分詞
batch_dict = tokenizer(input_texts, max_length=max_length, padding=True, truncation=True, return_tensors='pt')
outputs = model(**batch_dict)
embeddings = last_token_pool(outputs.last_hidden_state, batch_dict['attention_mask'])
# 對嵌入向量進行歸一化
embeddings = F.normalize(embeddings, p=2, dim=1)
scores = (embeddings[:2] @ embeddings[2:].T) * 100
print(scores.tolist())
📚 詳細文檔
模型信息
屬性 | 詳情 |
---|---|
模型規模 | 7B |
嵌入維度 | 3584 |
最大輸入令牌數 | 32k |
評估
MTEB & C-MTEB
你可以使用 scripts/eval_mteb.py 來複現 gte-Qwen2-7B-instruct 在 MTEB(英文)/C-MTEB(中文)上的以下結果:
模型名稱 | MTEB(56) | C-MTEB(35) | MTEB-fr(26) | MTEB-pl(26) |
---|---|---|---|---|
bge-base-en-1.5 | 64.23 | - | - | - |
bge-large-en-1.5 | 63.55 | - | - | - |
gte-large-en-v1.5 | 65.39 | - | - | - |
gte-base-en-v1.5 | 64.11 | - | - | - |
mxbai-embed-large-v1 | 64.68 | - | - | - |
acge_text_embedding | - | 69.07 | - | - |
stella-mrl-large-zh-v3.5-1792d | - | 68.55 | - | - |
gte-large-zh | - | 66.72 | - | - |
multilingual-e5-base | 59.45 | 56.21 | - | - |
multilingual-e5-large | 61.50 | 58.81 | - | - |
e5-mistral-7b-instruct | 66.63 | 60.81 | - | - |
gte-Qwen1.5-7B-instruct | 67.34 | 69.52 | - | - |
NV-Embed-v1 | 69.32 | - | - | - |
gte-Qwen2-7B-instruct | 70.24 | 72.05 | 68.25 | 67.86 |
gte-Qwen2-1.5B-instruct | 67.16 | 67.65 | 66.60 | 64.04 |
GTE 模型
gte 系列模型一直髮布兩種類型的模型:僅編碼器模型(基於 BERT 架構)和解碼器模型(基於大語言模型架構)。
模型 | 語言 | 最大序列長度 | 維度 | 模型大小(內存使用,fp32) |
---|---|---|---|---|
GTE-large-zh | 中文 | 512 | 1024 | 1.25GB |
GTE-base-zh | 中文 | 512 | 512 | 0.41GB |
GTE-small-zh | 中文 | 512 | 512 | 0.12GB |
GTE-large | 英文 | 512 | 1024 | 1.25GB |
GTE-base | 英文 | 512 | 512 | 0.21GB |
GTE-small | 英文 | 512 | 384 | 0.10GB |
GTE-large-en-v1.5 | 英文 | 8192 | 1024 | 1.74GB |
GTE-base-en-v1.5 | 英文 | 8192 | 768 | 0.51GB |
GTE-Qwen1.5-7B-instruct | 多語言 | 32000 | 4096 | 26.45GB |
GTE-Qwen2-7B-instruct | 多語言 | 32000 | 3584 | 26.45GB |
GTE-Qwen2-1.5B-instruct | 多語言 | 32000 | 1536 | 6.62GB |
雲 API 服務
除了開源的 GTE 系列模型外,GTE 系列模型還可在阿里雲上作為商業 API 服務使用。
請注意,商業 API 背後的模型與開源模型並不完全相同。
📄 許可證
@article{li2023towards,
title={Towards general text embeddings with multi-stage contrastive learning},
author={Li, Zehan and Zhang, Xin and Zhang, Yanzhao and Long, Dingkun and Xie, Pengjun and Zhang, Meishan},
journal={arXiv preprint arXiv:2308.03281},
year={2023}
}
Phi 2 GGUF
其他
Phi-2是微軟開發的一個小型但強大的語言模型,具有27億參數,專注於高效推理和高質量文本生成。
大型語言模型 支持多種語言
P
TheBloke
41.5M
205
Roberta Large
MIT
基於掩碼語言建模目標預訓練的大型英語語言模型,採用改進的BERT訓練方法
大型語言模型 英語
R
FacebookAI
19.4M
212
Distilbert Base Uncased
Apache-2.0
DistilBERT是BERT基礎模型的蒸餾版本,在保持相近性能的同時更輕量高效,適用於序列分類、標記分類等自然語言處理任務。
大型語言模型 英語
D
distilbert
11.1M
669
Llama 3.1 8B Instruct GGUF
Meta Llama 3.1 8B Instruct 是一個多語言大語言模型,針對多語言對話用例進行了優化,在常見的行業基準測試中表現優異。
大型語言模型 英語
L
modularai
9.7M
4
Xlm Roberta Base
MIT
XLM-RoBERTa是基於100種語言的2.5TB過濾CommonCrawl數據預訓練的多語言模型,採用掩碼語言建模目標進行訓練。
大型語言模型 支持多種語言
X
FacebookAI
9.6M
664
Roberta Base
MIT
基於Transformer架構的英語預訓練模型,通過掩碼語言建模目標在海量文本上訓練,支持文本特徵提取和下游任務微調
大型語言模型 英語
R
FacebookAI
9.3M
488
Opt 125m
其他
OPT是由Meta AI發佈的開放預訓練Transformer語言模型套件,參數量從1.25億到1750億,旨在對標GPT-3系列性能,同時促進大規模語言模型的開放研究。
大型語言模型 英語
O
facebook
6.3M
198
1
基於transformers庫的預訓練模型,適用於多種NLP任務
大型語言模型
Transformers

1
unslothai
6.2M
1
Llama 3.1 8B Instruct
Llama 3.1是Meta推出的多語言大語言模型系列,包含8B、70B和405B參數規模,支持8種語言和代碼生成,優化了多語言對話場景。
大型語言模型
Transformers 支持多種語言

L
meta-llama
5.7M
3,898
T5 Base
Apache-2.0
T5基礎版是由Google開發的文本到文本轉換Transformer模型,參數規模2.2億,支持多語言NLP任務。
大型語言模型 支持多種語言
T
google-t5
5.4M
702
精選推薦AI模型
Llama 3 Typhoon V1.5x 8b Instruct
專為泰語設計的80億參數指令模型,性能媲美GPT-3.5-turbo,優化了應用場景、檢索增強生成、受限生成和推理任務
大型語言模型
Transformers 支持多種語言

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一個基於SODA數據集訓練的超小型對話模型,專為邊緣設備推理設計,體積僅為Cosmo-3B模型的2%左右。
對話系統
Transformers 英語

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基於RoBERTa架構的中文抽取式問答模型,適用於從給定文本中提取答案的任務。
問答系統 中文
R
uer
2,694
98