rerank()がついに文字列モデルIDに対応した話

鈴木 蓮
鈴木 蓮 20代・ ソフトウェアエンジニア
Vercel AI SDKの`[email protected]`のリリースノートを流し読みしていたら、地味に気になるアップデートがあった。

rerank()に文字列でモデルIDを渡せるようになった


`rerank()`関数が、`RerankingModel`オブジェクトだけでなく、プレーンな文字列のモデルIDを受け取れるようになった。リリースノートには`'cohere/rerank-v3.5'`という具体例が載っていて、これを見た瞬間に「あ、generateTextとかembedと同じ書き方ができるようになったのか」と腑に落ちた。

これまで自分のコードでは、`generateText`では`'openai/gpt-4o'`みたいに文字列でサクッと書けていたのに、`rerank()`だけ`RerankingModel`オブジェクトを生成してから渡す必要があった。API的に一貫性がなくて、「なんでここだけ違うんだろう」とうっすら思いながらそのまま使ってた。今回のパッチで、その気持ち悪さがなくなった感じがする。

変更前のコードはこんなイメージだった。

import { cohere } from '@ai-sdk/cohere';

const results = await rerank({
  model: cohere.reranking('rerank-v3.5'),
  values: documents,
  query: 'some query',
});

今後は`generateText`と同じノリで、こう書ける。

const results = await rerank({
  model: 'cohere/rerank-v3.5',
  values: documents,
  query: 'some query',
});

コード量としてはほんの数文字の差だけど、チームで使うときの認知コストが下がる。

自分のコードのどこを直すか


自分が今触っているRAGのパイプラインでは、retrieval後にrerankを挟んでいる。そこで`cohere.reranking()`を呼んでいる箇所がいくつかある。今すぐ壊れるわけじゃないし、既存の書き方は引き続き動く。ただ、新しく書くコードは文字列スタイルに統一したほうが後から読みやすい。

チームの他のメンバーが`generateText`のコードを読んでから`rerank()`のコードを見ると、「なぜここだけ書き方が違うんだ」と混乱することがある。コードレビューで指摘するのも若干面倒だった。今後は「モデルIDは文字列で渡す」というルールに統一できる。

こういう地味な一貫性の改善って、大きな機能追加より長期的にはコードベースの健康に効いてくると思う。パッチバージョンのリリースに含まれているあたりも、「小さいけど確実に改善」という判断が透けて見えて好感が持てる。

今回の変更はPatch Changesという扱いで、コミットIDは`f152133`。Breaking Changeではないので、既存コードをすぐ直す必要はない。ただ、新しくrerankingを実装する箇所があれば、迷わず文字列スタイルで書いていくつもりだ。

無料相談受付中

AI開発・DX推進についてお気軽にご相談ください。オンライン30分から。

無料相談を申し込む