乐趣区

关于人工智能:RAG-领域的新宠为什么-AI-圈都在谈论-Jina-ColBERT

在 RAG (检索加强生成)畛域,选对向量模型至关重要,它根本就决定了 RAG 零碎的“天花板”,也因而,向量模型的抉择总是业界的热门探讨话题。

最近,Jina AI 在 Hugging Face 上推出的 Jina-ColBERT 模型引起了 AI 圈子里不小的轰动,尤其是在 Twitter/X 上,大家都在探讨它能解决高达 8192 Token 的弱小能力,为搜寻带来了更多的可能性。

与 ColBERTv2 相比,Jina-ColBERT 在各项测试中都展示了顶尖的性能,特地在解决长文档数据集时,其体现更是显著优于 ColBERTv2。

与市场上大多数向量模型相比,Jina-ColBERT 有个显著的不同点——它采纳的是多向量搜寻技术。单向量模型会把整个文档或段落编码成一个繁多向量,而后基于余弦类似度进行匹配。而 多向量模型,如 Jina-ColBERT,则是将文本中的每个词编码成独立向量,通过迟交互计算类似度。

很多人都听过 BERT 模型,但 ColBERT 是什么呢?

先说说背景。ColBERT 基于 BERT 模型开发,师出名门斯坦福。那为啥最近又翻红了呢?原来,ColBERT 降级到 v2 版本,不仅补齐了 v1 版本在存储和扩展性上的短板,还显著晋升了性能。

再来说说 ColBERT 的家谱。之前大家没怎么留神到它,次要是因为从传统搜寻(文本匹配)过渡到向量检索的过程中,大家都忙着折腾单向量模型,把这位和 BERT 同门的 ColBERT 给疏忽了。

单向量模型是将查问和文档简化为繁多向量的示意,ColBERT 则 为每个 token 生成一个向量,并通过 MaxSim(Maximum Similarity, 最大类似度)计算得分,即它对于每个查问词,从文档中找到与之最类似的词的向量,并将这些最大类似度值相加作为最终的相关性分数。

通过 采纳 token 级别的细粒度交互,即首先将查问和文档在词粒度上逐项编码,再在查问阶段进行迟交互。 也就是说,文档侧的计算能够齐全离线进行,这一点与单向量模型的做法统一,但在解决办法上更为精密。这就使得它的 可解释性更好,在 token-level 匹配之后,咱们可能解释查问中哪个词与文档中的哪个词最匹配。

这种多向量的召回形式带来两大益处:一是逐 token 编码提供了更细粒度的表征 ,在 in-domain (畛域内) 具备很高的 MRR@10(头部排序能力)和 Recall@1k(腰尾部召回能力)。并且提供了更好的可解释性。二是提供 out-of-domain (未知领域) 更强的泛化能力,特地是在解决长尾查问或文档时,因为词粒度的惊喜表征,使得模型对于未见过的畛域有更好的性能体现。

Colbert 迟交互机制

与传统的 query-doc 全交互型 BERT 及目前风行的 Embeddings 模型相比,ColBERT 提出的 Late Interaction (迟交互)机制 有着显著的劣势。

具体来说,单向量模型是吃进一个句子,吐出一个向量,而后再基于这些向量做类似度比拟。而同样是别离编码查问和文档,ColBERT 拿模型生成的 Token Embedding 来做类似度计算,在后续阶段计算查问和文档 Token Embedding 之间的交互。这种办法既思考了匹配效率,也充分利用了上下文信息,使得 ColBERT 既能作为一个弱小的召回模型,也能够用做召回之后的重排工具。

Jina-ColBERT 的降级亮点

Jina-ColBERT 是 Jina AI 对原有 ColBERT 模型的一番降级打磨。外围改良是采纳了 jina-bert-v2-base-en 作为根底模型,从而反对一口气解决长达 8192 token 的文本。

这一改良意味着,无论是凑合那些短小精悍的文本,还是那些简明扼要、须要深度了解的搜寻工作,Jina-ColBERT 都能轻松应答。甚至在很多状况下,尤其长文本场景下,都能比 ColBERT v2 模型做得更好。

咱们在 BEIR 数据集上,比照测试了 Jina-ColBERT,和原版 ColBERTv2,以及单向量模型 Jina-Embeddings-v2-base-en 模型的能力。

Dataset ColBERTv2 jina-colbert-v1-en jina-embeddings-v2-base-en
Arguana 46.5 49.4 44.0
Climate-Fever 18.1 19.6 23.5
DBPedia 45.2 41.3 35.1
FEVER 78.8 79.5 72.3
FiQA 35.4 36.8 41.6
HotpotQA 67.5 65.9 61.4
NFCorpus 33.7 33.8 32.5
NQ 56.1 54.9 60.4
Quora 85.5 82.3 88.2
SCIDOCS 15.4 16.9 19.9
SciFact 68.9 70.1 66.7
TREC-COVID 72.6 75.0 65.9
Webis-touch2020 26.0 27.0 26.2
Average 51.7 52.6 51.6

从这个表里,咱们能看到 Jina-ColBERT 的亮眼体现,各项测试里,它都能和 ColBERTv2 一较高下。

值得一提的是,Jina-ColBERT 只用了 MSMARCO 数据集来训练,而 Jina-Embeddings-v2-base-en 应用了更宽泛的训练数据,后者在某些特定工作上体现得更好。

咱们还特地在专为长文本设计的新 LoCo Benchmark 上进行了测评,能够看到 Jina-ColBERT 在解决那些超出 ColBERTv2 惯例上下文长度的场景时,体现更是杰出。

Dataset ColBERTv2 jina-colbert-v1-en jina-embeddings-v2-base-en
LoCo 74.3 83.7 85.4

总的来说,Jina-ColBERT 在各项基准测试中都体现出和 ColBERTv2 相媲美的性能,当在文本的上下文更长时,它的体现就更胜一筹了。

如果你想在 RAG(检索加强生成)畛域挑选出适合向量模型,这里有几条倡议,帮你决定哪个最合适。

  1. 如果你偏好简略的单向量存储与检索,并且可能承受肯定水平的精确度就义,那么 Jina-Embeddings-v2 是个不错的抉择。
  2. 对于那些谋求细颗粒度检索、关注模型在 out-of-domain(未知领域)的体现、以及须要模型可解释性的用户来说,Jina-ColBERT 会是更优选。
  3. 你也能够设计一个分阶段的检索流程:首先用 Jina-Embeddings-v2 疾速召回候选文档,接着用 Jina-ColBERT 进行更细颗粒度的从新排序。
  4. 请留神,目前 Jina-ColBERT 仅反对英文内容的解决。

轻松上手:Jina-ColBERT 入门指南

上手 Jina-ColBERT 很简略,因为它是基于 ColBERT 模型优化的,你能够轻松地在现有反对 ColBERT 的平台上应用,比方 Vespa、RAGatouille、fastRAG 和 LangChain 等,只需将原模型名称换成 jina-colbert-v1-en。此外,咱们还提供了一个专门的 Colab Notebook,供大家疾速上手。

Notebook: https://colab.research.google.com/drive/1-5WGEYPSBNBg-Z0bGFys…

想要疾速利用到我的项目里的话,举荐应用 RAGatouille,它做了很好的封装,能够更轻松用 ColBERT 构建 RAG Pipeline。

更多内容请拜访 https://huggingface.co/jinaai/jina-colbert-v1-en。

展望未来:Jina-ColBERT 的新动向

咱们正踊跃评估 Jina-ColBERT 作为 Reranker 的成果,并打算增加更多应用示例。同时,咱们也将致力在更多数据集上进行微调,以进一步晋升 Jina-ColBERT 的性能,并优化其存储性能。

退出移动版