🚀 基於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
許可證。
🔗 聯繫信息
如有疑問或需要進一步的信息,請聯繫: