rerank()が文字列IDに対応。地味だけど助かる変更

鈴木 蓮
鈴木 蓮 20代・ ソフトウェアエンジニア
Vercel AI SDKの`[email protected]`がリリースされた。パッチアップデートなので大きなサプライズはないけど、地味に嬉しい変更が入っていた。

`rerank()`関数で、プレーンな文字列のモデルIDが使えるようになった。具体的には`'cohere/rerank-v3.5'`みたいな文字列を直接渡せる。これまでは`RerankingModel`オブジェクトを作って渡す必要があった。

何が変わったか、コードで確認する



実際にどう変わるかというと、こんな感じ。

// 以前はこうしないといけなかった
const model = cohere.reranking('rerank-v3.5');
await rerank({ model, query, values });

// 今はこれでいける
await rerank({ model: 'cohere/rerank-v3.5', query, values });

`generateText`や`embed`では前から文字列IDが使えていた。それなのに`rerank()`だけオブジェクトが必要で、微妙に一貫性がなかった。今回でその統一感が取れた形になる。

自分のコードを見返すと、rerankを使っている箇所でモデルオブジェクトをわざわざ先に定義していた。それが1行で書けるようになるのは、読みやすさという意味で普通に嬉しい。

なぜこれが気になるか



最近、RAGのパイプラインを個人開発のプロジェクトに組み込んでいる。検索精度を上げるために`rerank()`を試し始めたタイミングだった。

Cohereのrerank-v3.5は評判がいいので使いたかった。でもちょうど「なんでここだけオブジェクト渡しなんだろう」と思いながら書いていたので、このアップデートのタイミングはちょうど良かった。

こういう小さな一貫性の修正って、ドキュメントを読んでいるときに混乱する原因になる。「generateTextは文字列でいけるのに、rerankは違うのか」ってなると、初学者だけじゃなく自分みたいに使い始めたばかりの人間も詰まる。地味だけどちゃんと直してくれているのは好印象だと思っている。

PRを出す側の視点から言うと、こういう「APIの一貫性を揃える系」の変更はレビューで承認されやすいし、影響範囲も明確で追いやすい。コントリビュートの入り口としてもいいなと思いながら見ていた。

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



実際にやることはシンプルだ。rerankを使っている箇所でモデルオブジェクトを定義しているなら、文字列に置き換えられないか確認するだけでいい。

ただ、モデルを設定ファイルから読み込んでいる場合は少し注意が必要だ。文字列にするとTypeScriptの型チェックが変わる場面があるかもしれない。型エラーが出たらそこで調整する感じで対応するつもり。

あと今回のリリースでコミット数が346件あることも確認した。`[email protected]`は`main`ブランチとの差分がそれだけある。パッチでもこれだけ積み重なっているのを見ると、アクティブに開発されているのがわかる。

今週末、RAGパイプラインの該当箇所をこの書き方に直してみるつもりだ。

無料相談受付中

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

無料相談を申し込む