FRIDA
模型简介
FRIDA 是一个多功能模型,适用于多种自然语言处理任务,如文本分类、情感分析、聚类和重新排序。
模型特点
多任务支持
支持多种自然语言处理任务,包括分类、聚类和重新排序。
高性能
在多个数据集上表现出色,尤其是在标题分类和不当内容分类任务中。
多语言支持
主要支持俄语,但在多语言任务中也有一定表现。
模型能力
文本分类
情感分析
聚类
重新排序
多标签分类
使用案例
内容审核
不当内容检测
用于检测和分类不当内容,如仇恨言论或不良信息。
准确率78.33%,F1分数78.20%
情感分析
电影评论情感分类
用于分析电影评论的情感倾向。
准确率70.47%,F1分数65.84%
信息检索
MIRACL重新排序
用于信息检索中的文档重新排序任务。
NDCG@10 66.04%,MAP@10 60.21%
🚀 FRIDA模型
FRIDA是一个基于T5去噪架构的全量微调通用文本嵌入模型。该模型基于FRED-T5模型的编码器部分,延续了文本嵌入模型的研究(ruMTEB,ru-en-RoSBERTa)。它在俄英双语数据集上进行了预训练,并针对目标任务进行了微调,以提升性能。
如需了解更多模型细节,请参考我们的技术报告[TODO]。
🚀 快速开始
FRIDA模型可以直接使用前缀进行文本处理。建议使用CLS池化方法,前缀和池化方法的选择取决于具体任务。
我们使用以下基本规则来选择前缀:
"search_query: "
和"search_document: "
前缀用于答案或相关段落检索。"paraphrase: "
前缀用于对称释义相关任务(如语义文本相似度任务、释义挖掘、去重)。"categorize: "
前缀用于文档标题和正文的非对称匹配(如新闻、科研论文、社交媒体帖子)。"categorize_sentiment: "
前缀用于依赖情感特征的任务(如仇恨言论、毒性检测、情感分析)。"categorize_topic: "
前缀用于按主题对文本进行分组的任务。"categorize_entailment: "
前缀用于文本蕴含任务(自然语言推理)。
为了更好地满足您的需求,您可以使用相关的高质量俄英数据集对模型进行微调。
💻 使用示例
基础用法
以下是使用Transformers和SentenceTransformers库进行文本编码的示例。
Transformers库示例
import torch
import torch.nn.functional as F
from transformers import AutoTokenizer, T5EncoderModel
def pool(hidden_state, mask, pooling_method="cls"):
if pooling_method == "mean":
s = torch.sum(hidden_state * mask.unsqueeze(-1).float(), dim=1)
d = mask.sum(axis=1, keepdim=True).float()
return s / d
elif pooling_method == "cls":
return hidden_state[:, 0]
inputs = [
#
"paraphrase: В Ярославской области разрешили работу бань, но без посетителей",
"categorize_entailment: Женщину доставили в больницу, за ее жизнь сейчас борются врачи.",
"search_query: Сколько программистов нужно, чтобы вкрутить лампочку?",
#
"paraphrase: Ярославским баням разрешили работать без посетителей",
"categorize_entailment: Женщину спасают врачи.",
"search_document: Чтобы вкрутить лампочку, требуется три программиста: один напишет программу извлечения лампочки, другой — вкручивания лампочки, а третий проведет тестирование."
]
tokenizer = AutoTokenizer.from_pretrained("ai-forever/FRIDA")
model = T5EncoderModel.from_pretrained("ai-forever/FRIDA")
tokenized_inputs = tokenizer(inputs, max_length=512, padding=True, truncation=True, return_tensors="pt")
with torch.no_grad():
outputs = model(**tokenized_inputs)
embeddings = pool(
outputs.last_hidden_state,
tokenized_inputs["attention_mask"],
pooling_method="cls" # or try "mean"
)
embeddings = F.normalize(embeddings, p=2, dim=1)
sim_scores = embeddings[:3] @ embeddings[3:].T
print(sim_scores.diag().tolist())
# [0.9360030293464661, 0.8591322302818298, 0.728583037853241]
SentenceTransformers库示例
from sentence_transformers import SentenceTransformer
inputs = [
#
"paraphrase: В Ярославской области разрешили работу бань, но без посетителей",
"categorize_entailment: Женщину доставили в больницу, за ее жизнь сейчас борются врачи.",
"search_query: Сколько программистов нужно, чтобы вкрутить лампочку?",
#
"paraphrase: Ярославским баням разрешили работать без посетителей",
"categorize_entailment: Женщину спасают врачи.",
"search_document: Чтобы вкрутить лампочку, требуется три программиста: один напишет программу извлечения лампочки, другой — вкручивания лампочки, а третий проведет тестирование."
]
# loads model with CLS pooling
model = SentenceTransformer("ai-forever/FRIDA")
# embeddings are normalized by default
embeddings = model.encode(inputs, convert_to_tensor=True)
sim_scores = embeddings[:3] @ embeddings[3:].T
print(sim_scores.diag().tolist())
# [0.9360026717185974, 0.8591331243515015, 0.7285830974578857]
高级用法
使用提示(sentence-transformers>=2.4.0):
from sentence_transformers import SentenceTransformer
# loads model with CLS pooling
model = SentenceTransformer("ai-forever/FRIDA")
paraphrase = model.encode(["В Ярославской области разрешили работу бань, но без посетителей", "Ярославским баням разрешили работать без посетителей"], prompt_name="paraphrase")
print(paraphrase[0] @ paraphrase[1].T) # 0.9360032
categorize_entailment = model.encode(["Женщину доставили в больницу, за ее жизнь сейчас борются врачи.", "Женщину спасают врачи."], prompt_name="categorize_entailment")
print(categorize_entailment[0] @ categorize_entailment[1].T) # 0.8591322
query_embedding = model.encode("Сколько программистов нужно, чтобы вкрутить лампочку?", prompt_name="search_query")
document_embedding = model.encode("Чтобы вкрутить лампочку, требуется три программиста: один напишет программу извлечения лампочки, другой — вкручивания лампочки, а третий проведет тестирование.", prompt_name="search_document")
print(query_embedding @ document_embedding.T) # 0.7285831
🔧 技术细节
FRIDA模型是一个基于T5去噪架构的全量微调通用文本嵌入模型。它基于FRED-T5模型的编码器部分构建,并在俄英双语数据集上进行了预训练。在微调阶段,模型针对不同的自然语言处理任务进行了优化,以提升性能。
模型使用了不同的前缀来适应各种任务,同时建议使用CLS池化方法。前缀和池化方法的选择会影响模型在特定任务上的表现。
📄 许可证
本模型采用MIT许可证。
👥 作者
- SaluteDevices面向B2C的人工智能研发团队。
- Artem Snegirev:HF个人主页,Github;
- Anna Maksimova:HF个人主页;
- Aleksandr Abramov:HF个人主页,Github,Kaggle竞赛大师
📚 引用
@misc{TODO
}
⚠️ 重要提示
⚠️ 重要提示
该模型主要设计用于处理俄语文本,其在英语文本上的处理质量未知。此外,模型的最大输入文本长度限制为512个词元。

模型指标详情
属性 | 详情 |
---|---|
模型类型 | 基于T5去噪架构的全量微调通用文本嵌入模型 |
训练数据 | 俄英双语数据集 |
基础模型 | ai-forever/FRED-T5-1.7B |
任务类型 | 特征提取 |
标签 | mteb、transformers、sentence-transformers |
支持语言 | 俄语、英语 |
Jina Embeddings V3
Jina Embeddings V3 是一个多语言句子嵌入模型,支持超过100种语言,专注于句子相似度和特征提取任务。
文本嵌入
Transformers 支持多种语言

J
jinaai
3.7M
911
Ms Marco MiniLM L6 V2
Apache-2.0
基于MS Marco段落排序任务训练的交叉编码器模型,用于信息检索中的查询-段落相关性评分
文本嵌入 英语
M
cross-encoder
2.5M
86
Opensearch Neural Sparse Encoding Doc V2 Distill
Apache-2.0
基于蒸馏技术的稀疏检索模型,专为OpenSearch优化,支持免推理文档编码,在搜索相关性和效率上优于V1版本
文本嵌入
Transformers 英语

O
opensearch-project
1.8M
7
Sapbert From PubMedBERT Fulltext
Apache-2.0
基于PubMedBERT的生物医学实体表征模型,通过自对齐预训练优化语义关系捕捉
文本嵌入 英语
S
cambridgeltl
1.7M
49
Gte Large
MIT
GTE-Large 是一个强大的句子转换器模型,专注于句子相似度和文本嵌入任务,在多个基准测试中表现出色。
文本嵌入 英语
G
thenlper
1.5M
278
Gte Base En V1.5
Apache-2.0
GTE-base-en-v1.5 是一个英文句子转换器模型,专注于句子相似度任务,在多个文本嵌入基准测试中表现优异。
文本嵌入
Transformers 支持多种语言

G
Alibaba-NLP
1.5M
63
Gte Multilingual Base
Apache-2.0
GTE Multilingual Base 是一个多语言的句子嵌入模型,支持超过50种语言,适用于句子相似度计算等任务。
文本嵌入
Transformers 支持多种语言

G
Alibaba-NLP
1.2M
246
Polybert
polyBERT是一个化学语言模型,旨在实现完全由机器驱动的超快聚合物信息学。它将PSMILES字符串映射为600维密集指纹,以数值形式表示聚合物化学结构。
文本嵌入
Transformers

P
kuelumbus
1.0M
5
Bert Base Turkish Cased Mean Nli Stsb Tr
Apache-2.0
基于土耳其语BERT的句子嵌入模型,专为语义相似度任务优化
文本嵌入
Transformers 其他

B
emrecan
1.0M
40
GIST Small Embedding V0
MIT
基于BAAI/bge-small-en-v1.5模型微调的文本嵌入模型,通过MEDI数据集与MTEB分类任务数据集训练,优化了检索任务的查询编码能力。
文本嵌入
Safetensors 英语
G
avsolatorio
945.68k
29
精选推荐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