🚀 基于HooshvareLab/bert - base - parsbert - uncased的句子转换器
本项目基于sentence - transformers框架,微调自[HooshvareLab/bert - base - parsbert - uncased](https://huggingface.co/HooshvareLab/bert - base - parsbert - uncased)模型,专注于增强检索增强生成(RAG)系统的性能。它能够将句子和段落映射到768维的密集向量空间,在问答系统、聊天机器人和内容生成等各类应用中,能高效检索上下文相关信息,生成准确且连贯的回复。
🚀 快速开始
本模型可直接使用,也可集成到检索增强生成(RAG)系统中。下面将分别介绍这两种使用方式。
✨ 主要特性
- 向量映射:将句子和段落映射到768维的密集向量空间。
- 上下文感知:能有效检索上下文相关信息。
- 应用广泛:适用于问答系统、聊天机器人和内容生成等多种NLP应用。
📦 安装指南
直接使用
若要直接使用该模型,需安装sentence - transformers
库:
pip install -U sentence-transformers
集成到RAG系统
若要将模型集成到RAG系统中,除了sentence - transformers
库,还需安装transformers
库:
pip install -U sentence-transformers transformers
💻 使用示例
基础用法
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("myrkur/sentence-transformer-parsbert-fa")
sentences = [
'پرتغالی، در وطن اصلی خود، پرتغال، تقریباً توسط ۱۰ میلیون نفر جمعیت صحبت می\u200cشود. پرتغالی همچنین به عنوان زبان رسمی برزیل، بیش از ۲۰۰ میلیون نفر در آن کشور و همچنین کشورهای همسایه، در شرق پاراگوئه و در شمال اروگوئه، سخنگو دارد، که کمی بیش از نیمی از جمعیت آمریکای جنوبی را تشکیل می\u200cدهند؛ بنابراین پرتغالی پرسخنگوترین زبان رسمی رومی در یک کشور واحد است. این زبان در شش کشور آفریقایی زبان رسمی است (آنگولا، دماغه سبز، گینه بیسائو، موزامبیک، گینه استوایی و سائوتومه و پرنسیپ) و توسط ۳۰ میلیون نفر از ساکنان آن قاره به عنوان زبان نخست گویش می\u200cشود. در آسیا، پرتغالی با سایر زبان\u200cها در تیمور شرقی و ماکائو رسمی است، در حالی که بیشتر پرتغالی\u200cزبانان در آسیا - حدود ۴۰۰٫۰۰۰ نفر - به دلیل بازگشت مهاجرت ژاپنی\u200cهای برزیل ساکن ژاپن هستند. در آمریکای شمالی ۱٫۰۰۰٫۰۰۰ نفر به پرتغالی به عنوان زبان نخست خود صحبت می\u200cکنند. پرتغالی در اقیانوسیه به دلیل شمار سخنگویانش در تیمور شرقی، پس از فرانسوی، دومین زبان رومی است که بیش از همه گویش می\u200cشود. نزدیکترین خویشاوند آن، گالیسی، دارای وضعیت رسمی در جامعه خودمختار گالیسیا در اسپانیا، همراه با اسپانیایی است.',
'در حدود اواخر کدام قرن پیش از میلاد سکاهای کوچ\u200cنشین در مرزهای شرقی اشکانیان پیشروی کردند؟',
'عباس جدیدی که بود؟',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
高级用法
集成到RAG系统
from sentence_transformers import SentenceTransformer, util
import torch
model = SentenceTransformer("myrkur/sentence-transformer-parsbert-fa")
corpus = [
'پرتغالی، در وطن اصلی خود، پرتغال، تقریباً توسط ۱۰ میلیون نفر جمعیت صحبت میشود...',
'اشکانیان حدود دو قرن بر ایران حکومت کردند...',
'عباس جدیدی، کشتیگیر سابق ایرانی است...',
]
corpus_embeddings = model.encode(corpus, convert_to_tensor=True)
query = "عباس جدیدی که بود؟"
query_embedding = model.encode(query, convert_to_tensor=True)
top_k = 5
hits = util.semantic_search(query_embedding, corpus_embeddings, top_k=top_k)
hits = hits[0]
for hit in hits:
print(f"Score: {hit['score']:.4f}")
print(corpus[hit['corpus_id']])
📚 详细文档
模型详情
属性 |
详情 |
模型类型 |
句子转换器 |
基础模型 |
[HooshvareLab/bert - base - parsbert - uncased](https://huggingface.co/HooshvareLab/bert - base - parsbert - uncased) |
最大序列长度 |
512个标记 |
输出维度 |
768个标记 |
相似度函数 |
余弦相似度 |
完整模型架构
SentenceTransformer(
(0): Transformer({'max_seq_length': 512, 'do_lower_case': False}) with Transformer model: BertModel
(1): Pooling({'word_embedding_dimension': 768, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False, 'include_prompt': True})
)
🔧 技术细节
本模型微调自HooshvareLab/bert - base - parsbert - uncased
,通过特定的训练方法,使其能够将句子和段落映射到768维的密集向量空间。在训练过程中,使用了Gholamreza/pquad
数据集,损失函数为SoftmaxLoss
。通过这种方式,模型能够学习到句子和段落之间的语义关系,从而在检索任务中表现出色。
📄 许可证
本项目采用apache - 2.0
许可证。
🔗 联系信息
如有疑问或需要进一步的信息,请联系: