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 |







