说明文档
answerai-colbert-small-v1
answerai-colbert-small-v1 是 Answer.AI 推出的全新概念验证模型,展示了多向量模型在使用全新的 JaColBERTv2.5 训练方案 和一些额外优化后所能达到的强大性能,即使仅有 3300 万参数。
虽然它的尺寸与 MiniLM 相当,但在常见基准测试上超越了所有此前同尺寸的模型,甚至超越了更大的流行模型,如 e5-large-v2 或 bge-base-en-v1.5。
有关此模型或其训练方式的更多信息,请访问公告博客文章。
架构
<iframe src="https://brianronan-netron-docker.hf.space?repo_id=brianronan/answerai-colbert-small-v1&filename=model.safetensors" style="width: 95%; height: 70vh; border: none;"
</iframe>
使用方法
安装
该模型是为即将到来的 RAGatouille 重构而设计的。不过,它与所有最新的 ColBERT 实现兼容!
要使用它,您可以使用 Stanford ColBERT 库或 RAGatouille。您可以通过简单地运行以下命令来安装其中一个或两者。
pip install --upgrade ragatouille
pip install --upgrade colbert-ai
如果您有兴趣将此模型用作重排序器(它的性能远超同尺寸的交叉编码器!),可以通过 rerankers 库来实现:
pip install --upgrade rerankers[transformers]
Rerankers
from rerankers import Reranker
ranker = Reranker("answerdotai/answerai-colbert-small-v1", model_type='colbert')
docs = ['Hayao Miyazaki is a Japanese director, born on [...]', 'Walt Disney is an American author, director and [...]', ...]
query = 'Who directed spirited away?'
ranker.rank(query=query, docs=docs)
RAGatouille
from ragatouille import RAGPretrainedModel
RAG = RAGPretrainedModel.from_pretrained("answerdotai/answerai-colbert-small-v1")
docs = ['Hayao Miyazaki is a Japanese director, born on [...]', 'Walt Disney is an American author, director and [...]', ...]
RAG.index(documents, index_name="ghibli")
query = 'Who directed spirited away?'
results = RAG.search(query)
Stanford ColBERT
索引
from colbert import Indexer
from colbert.infra import Run, RunConfig, ColBERTConfig
INDEX_NAME = "DEFINE_HERE"
if __name__ == "__main__":
config = ColBERTConfig(
doc_maxlen=512,
nbits=2
)
indexer = Indexer(
checkpoint="answerdotai/answerai-colbert-small-v1",
config=config,
)
docs = ['Hayao Miyazaki is a Japanese director, born on [...]', 'Walt Disney is an American author, director and [...]', ...]
indexer.index(name=INDEX_NAME, collection=docs)
查询
from colbert import Searcher
from colbert.infra import Run, RunConfig, ColBERTConfig
INDEX_NAME = "THE_INDEX_YOU_CREATED"
k = 10
if __name__ == "__main__":
config = ColBERTConfig(
query_maxlen=32 # Adjust as needed, we recommend the nearest higher multiple of 16 to your query
)
searcher = Searcher(
index=index_name,
config=config
)
query = 'Who directed spirited away?'
results = searcher.search(query, k=k)
提取向量
最后,如果您想提取单个向量,可以这样使用模型:
from colbert.modeling.checkpoint import Checkpoint
ckpt = Checkpoint("answerdotai/answerai-colbert-small-v1", colbert_config=ColBERTConfig())
embedded_query = ckpt.queryFromText(["Who dubs Howl's in English?"], bsize=16)
结果
与单向量模型对比

| Dataset / Model | answer-colbert-s | snowflake-s | bge-small-en | bge-base-en |
|---|---|---|---|---|
| Size | 33M (1x) | 33M (1x) | 33M (1x) | 109M (3.3x) |
| BEIR AVG | 53.79 | 51.99 | 51.68 | 53.25 |
| FiQA2018 | 41.15 | 40.65 | 40.34 | 40.65 |
| HotpotQA | 76.11 | 66.54 | 69.94 | 72.6 |
| MSMARCO | 43.5 | 40.23 | 40.83 | 41.35 |
| NQ | 59.1 | 50.9 | 50.18 | 54.15 |
| TRECCOVID | 84.59 | 80.12 | 75.9 | 78.07 |
| ArguAna | 50.09 | 57.59 | 59.55 | 63.61 |
| ClimateFEVER | 33.07 | 35.2 | 31.84 | 31.17 |
| CQADupstackRetrieval | 38.75 | 39.65 | 39.05 | 42.35 |
| DBPedia | 45.58 | 41.02 | 40.03 | 40.77 |
| FEVER | 90.96 | 87.13 | 86.64 | 86.29 |
| NFCorpus | 37.3 | 34.92 | 34.3 | 37.39 |
| QuoraRetrieval | 87.72 | 88.41 | 88.78 | 88.9 |
| SCIDOCS | 18.42 | 21.82 | 20.52 | 21.73 |
| SciFact | 74.77 | 72.22 | 71.28 | 74.04 |
| Touche2020 | 25.69 | 23.48 | 26.04 | 25.7 |
与 ColBERTv2.0 对比
| Dataset / Model | answerai-colbert-small-v1 | ColBERTv2.0 |
|---|---|---|
| BEIR AVG | 53.79 | 50.02 |
| DBPedia | 45.58 | 44.6 |
| FiQA2018 | 41.15 | 35.6 |
| NQ | 59.1 | 56.2 |
| HotpotQA | 76.11 | 66.7 |
| NFCorpus | 37.3 | 33.8 |
| TRECCOVID | 84.59 | 73.3 |
| Touche2020 | 25.69 | 26.3 |
| ArguAna | 50.09 | 46.3 |
| ClimateFEVER | 33.07 | 17.6 |
| FEVER | 90.96 | 78.5 |
| QuoraRetrieval | 87.72 | 85.2 |
| SCIDOCS | 18.42 | 15.4 |
| SciFact | 74.77 | 69.3 |
引用
我们很可能会在将来发布技术报告。在此期间,如果您使用此模型或其他遵循 JaColBERTv2.5 方案的模型,并希望给予我们认可,请引用 JaColBERTv2.5 期刊预印本:
@article{clavie2024jacolbertv2,
title={JaColBERTv2.5: Optimising Multi-Vector Retrievers to Create State-of-the-Art Japanese Retrievers with Constrained Resources},
author={Clavi{\'e}, Benjamin},
journal={arXiv preprint arXiv:2407.20750},
year={2024}
}
brianronan/answerai-colbert-small-v1
作者 brianronan
创建时间: 2024-08-16 01:17:41+00:00
更新时间: 2024-08-16 01:29:01+00:00
在 Hugging Face 上查看