Jacolbert
模型概述
模型特點
模型能力
使用案例
🚀 JaColBERT:日語文檔檢索模型
JaColBERT是一款基於ColBERT的日語專用文檔檢索模型,它在文檔檢索任務上超越了以往常見的日語模型,接近多語言模型的性能,展現了基於ColBERT模型的強大泛化潛力。
🚀 快速開始
若您想了解如何使用該模型,請查看下方的使用說明部分!
✨ 主要特性
- 性能優越:超越了以往用於文檔檢索的常見日語模型,接近多語言模型的性能,即便評估數據集對於本模型是域外數據,而對於多語言模型是域內數據。
- 泛化能力強:展示了基於ColBERT的模型在應用於日語時的強大泛化潛力。
- 數據高效:僅在單個數據集的1000萬個三元組上進行訓練,就能取得不錯的效果。
📦 安裝指南
JaColBERT使用ColBERT + RAGatouille運行。您可以通過運行以下命令來安裝它及其所有必要的依賴項:
pip install -U ragatouille
有關如何將RAGatouille與ColBERT模型結合使用的更多示例,您可以查看GitHub倉庫中的examples
部分。
💻 使用示例
基礎用法
如果您想在不構建索引的情況下使用JaColBERT,非常簡單,您只需加載模型,對一些文檔進行encode()
操作,然後使用search_encoded_documents()
進行搜索:
from ragatouille import RAGPretrainedModel
RAG = RAGPretrainedModel.from_pretrained("bclavie/JaColBERT")
RAG.encode(['document_1', 'document_2', ...])
RAG.search_encoded_documents(query="your search query")
後續調用encode()
會將新文檔添加到現有的內存集合中。如果您想清空它,只需運行RAG.clear_encoded_docs()
。
高級用法
索引構建
為了使ColBERT使用的後期交互檢索方法生效,您必須首先構建索引。可以將其想象成使用嵌入模型(如e5)對所有文檔進行嵌入,並將它們存儲在向量數據庫中。索引構建是最慢的步驟,但檢索速度極快。默認設置的效果相當不錯:
from ragatouille import RAGPretrainedModel
RAG = RAGPretrainedModel.from_pretrained("bclavie/JaColBERT")
documents = [ "マクドナルドのフライドポテトの少量のカロリーはいくつですか?マクドナルドの小さなフライドポテトのカロリーマクドナルドのウェブサイトには、次のように記載されています。フライドポテトの小さな註文で230カロリーケチャップで25カロリー、ケチャップパケットで15カロリー。",]
RAG.index(name="My_first_index", collection=documents)
默認情況下,索引文件存儲在.ragatouille/colbert/indexes/{index_name}
。
搜索
一旦您創建了索引,搜索就同樣簡單!如果您在同一會話中且RAG
仍處於加載狀態,您可以直接搜索新創建的索引。否則,您需要從磁盤加載它:
RAG = RAGPretrainedModel.from_index(".ragatouille/colbert/indexes/My_first_index")
然後進行查詢:
RAG.search(query="What animation studio did Miyazaki found?")
> [{'content': 'In April 1984, Miyazaki opened his own office in Suginami Ward, naming it Nibariki.\n\n\n=== Studio Ghibli ===\n\n\n==== Early films (1985–1996) ====\nIn June 1985, Miyazaki, Takahata, Tokuma and Suzuki founded the animation production company Studio Ghibli, with funding from Tokuma Shoten. Studio Ghibli\'s first film, Laputa: Castle in the Sky (1986), employed the same production crew of Nausicaä. Miyazaki\'s designs for the film\'s setting were inspired by Greek architecture and "European urbanistic templates".',
'score': 25.90448570251465,
'rank': 1,
'document_id': 'miyazaki',
'document_metadata': {'entity': 'person', 'source': 'wikipedia'}},
{'content': 'Hayao Miyazaki (宮崎 駿 or 宮﨑 駿, Miyazaki Hayao, Japanese: [mijaꜜzaki hajao]; born January 5, 1941) is a Japanese animator, filmmaker, and manga artist. A co-founder of Studio Ghibli, he has attained international acclaim as a masterful storyteller and creator of Japanese animated feature films, and is widely regarded as one of the most accomplished filmmakers in the history of animation.\nBorn in Tokyo City in the Empire of Japan, Miyazaki expressed interest in manga and animation from an early age, and he joined Toei Animation in 1963. During his early years at Toei Animation he worked as an in-between artist and later collaborated with director Isao Takahata.',
'score': 25.572620391845703,
'rank': 2,
'document_id': 'miyazaki',
'document_metadata': {'entity': 'person', 'source': 'wikipedia'}},
[...]
]
📚 詳細文檔
模型介紹
歡迎使用JaColBERT版本1,這是JaColBERT的初始版本,它是一款基於ColBERT的日語專用文檔檢索模型。該模型在文檔檢索任務上的表現優於以往常見的日語模型,接近多語言模型的性能。不過,JaColBERT目前只是初始版本,僅在單個數據集的1000萬個三元組上進行了訓練,希望能展示這種方法的強大潛力。
本模型卡片上的信息較為簡略,旨在提供一個概述。如需更多信息,請參考技術報告。
為何在RAG應用中使用類似ColBERT的方法?
大多數檢索方法都存在明顯的權衡:
- 傳統稀疏方法:如BM25,是強大的基線方法,但不利用任何語義理解,因此存在性能上限。
- 交叉編碼器檢索方法:功能強大,但在大型數據集上成本過高,因為它們必須針對每個已知文檔處理查詢才能輸出分數。
- 密集檢索方法:在向量數據庫中使用密集嵌入,輕量級且性能良好,但數據效率不高(通常需要數億甚至數十億的訓練示例對才能達到最先進的性能),並且在很多情況下泛化能力較差。
ColBERT及其變體(包括JaColBERT)旨在綜合各種方法的優點:通過將文檔表示為本質上的“嵌入袋”,我們可以在比交叉編碼器低得多的計算成本下獲得卓越的性能和強大的域外泛化能力。
訓練
訓練數據
該模型在MMARCO的日語子集上進行訓練,並增加了難負樣本。包括難負樣本的數據可在Hugging Face數據集上獲取。目前,我們沒有在其他數據集上進行訓練或數據增強,希望在未來的工作中進行,也支持有意這樣做的從業者(請隨時聯繫我)。
訓練方法
JColBERT在8個NVIDIA L4 GPU上進行了一個epoch的訓練(對每個三元組進行一次遍歷),總訓練時間約為10小時。
JColBERT基於東北大學優秀的bert-base-japanese-v3進行初始化,並受益於名古屋大學在構建強大的日語SimCSE模型等方面的工作。
我們嘗試了多種訓練設置,包括不同的批量大小(每個GPU 8、16、32)和學習率(3e - 6、5e - 6、1e - 5、2e - 5)。使用5e - 6的學習率獲得了最佳結果,使用3e - 6時結果也非常接近。任何更高的學習率在早期評估中都會導致性能下降,因此被捨棄。在所有情況下,我們都應用了等於總步數10%的熱身步驟。
應用了批次內負損失,並且沒有使用任何蒸餾方法(使用現有模型的分數)。
結果
以下表格概述了與以往僅日語模型和當前多語言最先進模型(multilingual - e5)相比的結果。 值得注意的是,JaColBERT在所有三個數據集上都是域外評估,而JSQuAD對於e5部分是域內(英語版本),MIRACL和Mr.TyDi對於e5完全是域內,這可能是e5表現出色的原因。在實際應用中,我希望通過適度、快速(>2小時)的微調可以縮小差距。 (確切的評估方法和代碼請參考技術報告。*表示最佳單語言/域外結果。加粗表示總體最佳結果。_斜體_表示任務對模型是域內的。)
JSQuAD | MIRACL | MrTyDi | Average | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
R@1 | R@5 | R@10 | R@3 | R@5 | R@10 | R@3 | R@5 | R@10 | R@{1|3} | R@5 | R@10 | ||||
JaColBERT | 0.906* | 0.968* | 0.978* | 0.464* | 0.546* | 0.645* | 0.744* | 0.781* | 0.821* | 0.705* | 0.765* | 0.813* | |||
m - e5 - large (in - domain) | 0.865 | 0.966 | 0.977 | 0.522 | 0.600 | 0.697 | 0.813 | 0.856 | 0.893 | 0.730 | 0.807 | 0.856 | |||
m - e5 - base (in - domain) | 0.838 | 0.955 | 0.973 | 0.482 | 0.553 | 0.632 | 0.777 | 0.815 | 0.857 | 0.699 | 0.775 | 0.820 | |||
m - e5 - small (in - domain) | 0.840 | 0.954 | 0.973 | 0.464 | 0.540 | 0.640 | 0.767 | 0.794 | 0.844 | 0.690 | 0.763 | 0.819 | |||
GLuCoSE | 0.645 | 0.846 | 0.897 | 0.369 | 0.432 | 0.515 | 0.617 | 0.670 | 0.735 | 0.544 | 0.649 | 0.716 | |||
sentence - bert - base - ja - v2 | 0.654 | 0.863 | 0.914 | 0.172 | 0.224 | 0.338 | 0.488 | 0.549 | 0.611 | 0.435 | 0.545 | 0.621 | |||
sup - simcse - ja - base | 0.632 | 0.849 | 0.897 | 0.133 | 0.177 | 0.264 | 0.454 | 0.514 | 0.580 | 0.406 | 0.513 | 0.580 | |||
sup - simcse - ja - large | 0.603 | 0.833 | 0.889 | 0.159 | 0.212 | 0.295 | 0.457 | 0.517 | 0.581 | 0.406 | 0.521 | 0.588 | |||
fio - base - v0.1 | 0.700 | 0.879 | 0.924 | 0.279 | 0.358 | 0.462 | 0.582 | 0.649 | 0.712 | 0.520 | 0.629 | 0.699 |
🔧 技術細節
詳細報告請參考arXiv報告。
📄 許可證
本模型採用MIT許可證。
引用
如果您想引用這項工作,請引用技術報告:
@misc{clavié2023jacolbert,
title={JaColBERT and Hard Negatives, Towards Better Japanese-First Embeddings for Retrieval: Early Technical Report},
author={Benjamin Clavié},
year={2023},
eprint={2312.16144},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
信息表格
屬性 | 詳情 |
---|---|
推理 | false |
數據集 | bclavie/mmarco-japanese-hard-negatives、unicamp-dl/mmarco |
語言 | 日語 |
任務類型 | 句子相似度 |
標籤 | ColBERT |
基礎模型 | cl-tohoku/bert-base-japanese-v3 |
許可證 | MIT |
庫名稱 | RAGatouille |







