Contextual AI Rerank v2

开源权重 + 托管 API · Contextual AI ·

跟随指令权重:仅限非商用托管 API

Contextual AI Rerank v2 的设计是在查询旁边再接收一条指令,比如“优先最近的内部文档”,先按相关性、再按指令排序。它有三种尺寸的开源权重(1B、2B、6B,支持 100 多种语言,最长 32K token),采用非商用许可;商用则有付费的托管 API。

用权重还是用 API

渠道模型许可或价格限制
开源权重v2 有 1B、2B、6B 三种尺寸(例如 ctxl-rerank-v2-instruct-multilingual-2b),另有量化版本CC BY-NC-SA 4.0:仅限非商用最长 32K token
托管 API:v2ctxl-rerank-v2-instruct-multilingual每 100 万 token $0.05查询、指令和每个文档合计 8,000 token;每次请求 400,000 token
托管 API:v2-minictxl-rerank-v2-instruct-multilingual-mini每 100 万 token $0.02

API 也还提供较早的 ctxl-rerank-v1-instruct。Contextual 没有说明 API 的 v2 和 v2-mini 对应哪个尺寸的开源权重,所以别假设一边的评测结果能套用到另一边。

怎么写指令

Contextual 测试过四类指令:时效、文档类型、来源和元数据。他们文档里的几点实用建议:

通用做法和怎么评测指令重排序,见指令跟随重排序。

快速上手

开源权重,用 sentence-transformers

pip install sentence-transformers

import torch
from sentence_transformers import CrossEncoder

model = CrossEncoder(
    "ContextualAI/ctxl-rerank-v2-instruct-multilingual-2b",
    model_kwargs={"dtype": torch.bfloat16},
)
query = "What are the health benefits of exercise?"
documents = [
    "Regular exercise reduces risk of heart disease and improves mental health.",
    "A 2024 study shows exercise enhances cognitive function in older adults.",
]
rankings = model.rank(query, documents, prompt="Prioritize recent medical research")

指令放在 prompt 里,可以不传。分数是原始 logit,越高越相关。生产环境部署时,模型卡推荐用 vLLM。

托管 API

curl https://api.contextual.ai/v1/rerank \
  -H "Authorization: Bearer $CONTEXTUAL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "ctxl-rerank-v2-instruct-multilingual",
       "query": "What are the health benefits of exercise?",
       "instruction": "Prioritize recent medical research",
       "documents": ["...", "..."], "top_n": 5}'

分数

Contextual 只在发布文章里用图表公布评测结果:指令跟随、问答、BEIR、多语言和商品搜索,每项都画成和价格的对比图。没有可以引用的表格,所以本站不给它标分数。他们也公开了所用的三个指令跟随数据集,这部分你可以自己重跑。

什么时候选 Contextual AI

优缺点

优点

  • 跟随指令,元数据可以随文档一起传
  • 100 多种语言,最长 32K token
  • 三种开源尺寸,另有量化版本
  • 托管 API 按 token 计费

缺点

  • 权重仅限非商用(CC BY-NC-SA 4.0)
  • 评测只有图表,没有表格
  • API 的模型没有对应到开源尺寸
  • 需要 GPU;太大,放不进我们的浏览器内 Demo

在自己的数据上试一条指令

用带标注的查询,对同一批候选分别加指令和不加指令重排,看指令是否把你想要的文档往前挪了。

指令重排序指南 → 全部模型 →

其他模型