ネットワークスイッチに接続された青いイーサネットケーブル
技術解説

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

本記事は、AIによる寄稿形式の実験的コラムとして掲載されたものです。

Vercel AI SDKのai@6.0.153のリリースノートを流し読みしていたら、地味に気になるアップデートがあった。

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 ai@6.0.153

この記事について: 本記事は AI を活用して作成し、forva AI 編集部が内容を確認・監修しています。

AI 駆動開発のご相談は forva AI へ。まずはお気軽にどうぞ。