# LLMでソート
ブログ「ジョイジョイジョイ」(著者: [[佐藤竜馬]])による、LLM を比較関数(コンパレータ)として使うソートの解説記事(2026-02-09)。ソートアルゴリズムの古典的理論と LLM の特性を結合する研究潮流をサーベイ的に整理している。
## 核心的主張
LLM を比較関数として用いることで、従来の数値比較では扱えない「好み・優劣・関連性」などの主観的・曖昧な概念に基づいたソートが可能になる。Python の `functools.cmp_to_key` を利用すると既存ソートアルゴリズムにプラグアンドプレイで組み込める。ただし LLM 特有の呼び出しコストモデル・非推移的応答・位置バイアスが従来想定と異なるため、LLM 専用のアルゴリズム設計が必要である。
## 応用例
- **論文の好み順ソート**: 好みを記述したプロンプトで ICLR 2026 オーラル論文をランキング
- **経済ニュースの楽観度ソート**: 295 件を 2324 回比較・約 2 分半・GPT-5-mini 使用 0.85 ドル
- 政治家のイデオロギー分類、バグ報告の重大度ソート等への応用が想定される
## ランキング手法の 4 分類
### リストワイズ法(listwise)
すべてのアイテムを一度に LLM に入力し、番号付きで並べ替えを出力させる方法。代表手法は **RankGPT**(Sun+ EMNLP 2023)。
- 利点: 1 回の呼び出しで完結、文脈に基づく相互比較が可能
- 欠点: アイテム数増加で出力が不安定(欠落・重複・パース失敗)、数百件を超えると実用困難
- 折衷: **スライディングウィンドウ法** — ウィンドウ幅 $w$ 個を LLM に入力し、$w/2$ ずつスライドしてソート。$O(n/w)$ 回の呼び出しで近似整列を実現(Sun+ EMNLP 2023)
### ポイントワイズ法(pointwise)
各アイテムを独立に入力し、1〜5 のスコアを出力させる方法。スコアの確率重みづけ(Liu+ EMNLP 2023)でタイを減らす改善がある。
$\text{score}(x) = \sum_{i=1}^{5} i \times P(\text{LLM が }i\text{ を出力} \mid x)$
- 利点: $n$ 回の呼び出し、アイテム数が増えても破綻しにくい
- 欠点: 絶対尺度の設計が難しく、呼び出しごとに基準がずれる問題がある
### ペアワイズ法(pairwise)
2 つのアイテムを提示してどちらが優れるかを問う方法。本記事冒頭の Python コード例がこれに該当する。
- 利点: 絶対評価より比較が容易、既存ソートアルゴリズムの理論成果を活用できる
- 位置バイアス対策: `llm(a, b)` と `llm(b, a)` の両方を呼び出し、結果が一致する場合のみ優劣を確定する(Qin+ NAACL 2024)
### セットワイズ法(setwise)
$c$ 個のアイテムをまとめて比較し「最も良いもの」などを問う方法。
- $c$ 個の比較も 1 回の呼び出しで完結するため、LLM の呼び出しコスト構造に適合する
- **$(c-1)$ 分ヒープ**: 二分ヒープを $(c-1)$ 分ヒープに拡張し、親と全子を一度に比較することで呼び出し回数を約半分に削減(Zhuang+ SIGIR 2024)
## 矛盾への対処
LLM の応答は順序の 3 公理(反対称性・推移性・完全性)を保証しない。
- **位置バイアス**: 先に置かれた選択肢が有利になる(Zheng+ NeurIPS Datasets 2023 が GPT-4 で実証)。双方向呼び出しによるタイ検出で緩和可能
- **推移性の欠如**: 非推移的な比較結果の処理は**フィードバックアーク集合問題(feedback arc set problem on tournaments)**(Ailon+ JACM 2008)に帰着する。この問題は NP 困難だが、**KwikSort**(ランダムピボットのクイックソート)が期待近似度 3 の近似アルゴリズムになることが証明されている
## 並列実行と呼び出しコスト削減
- クイックソートはピボットと各要素の比較をすべて並列発行でき、$O(\log n)$ 回のバッチ呼び出しで完了可能
- ヒープソートは前回比較結果が確定してから次の比較対象が決まるため、バッチ化が困難
## 予測付きソート(Sorting with Predictions)
Bai+ NeurIPS 2023 が提案する理論フレームワーク。低コストな「汚い」比較関数(ルールベース等)を前段に置き、本命の LLM 比較関数の呼び出しを最小限に抑える。
- 予測が良い場合: $O(n)$ 回の LLM 呼び出しでソート完了
- 予測が最悪の場合: $O(n \log n)$ 回の比較でソートできるという理論保証を維持
## 実用的な推奨
著者による推奨:
1. **スライディングウィンドウ法**: 検索結果リランキングのように上位精度が重要で、厳密な全体順序が不要な場合
2. **クイックソート(KwikSort)**: 経済ニュースのスタンスや政治イデオロギーのように両端の並びも重要な場合。非推移性への理論保証と並列実行の両方に対応する点で LLM と相性が良い
## 引用文献
- Sun+ EMNLP 2023 — RankGPT(リストワイズ法、スライディングウィンドウ法)
- Liu+ EMNLP 2023 — スコアの確率重みづけ(ポイントワイズ法改善)
- Zheng+ NeurIPS Datasets 2023 — LLM 位置バイアスの実証
- Qin+ NAACL 2024 — 双方向呼び出しによる位置バイアス緩和
- Zhuang+ SIGIR 2024 — $(c-1)$ 分ヒープによるセットワイズ法
- Ailon+ JACM 2008 — フィードバックアーク集合問題と KwikSort の近似保証
- Bai+ NeurIPS 2023 — Sorting with Predictions