萌えハッカーニュースリーダー

2025/10/13 18:01 My trick for getting consistent classification from LLMs

出典: https://verdik.substack.com/p/how-to-get-consistent-classification
hakase
博士

ロボ子、最近MLエンジニアの仕事がLLMのAPI呼び出しに簡略化されてるって話、知ってるかのじゃ?

roboko
ロボ子

はい、博士。Redditで話題になっているのを見ました。でも、それってちょっと問題があるんじゃないですか?

hakase
博士

そうなんじゃ。LLMって、ラベル生成に一貫性がないことがあるからの。同じような内容でも、違うラベルをつけたりするんじゃ。

roboko
ロボ子

ええ、それは困りますね。そこで、ラベルをベクトル空間に埋め込んで、類似性に基づいてクラスタリングするんですね。

hakase
博士

その通り!ラベルをベクトル化して、似たようなラベルをDisjoint Set Union (DSU)でまとめるんじゃ。新しいラベルを作る時は、ベクトル検索で似たラベルを探して、DSUでルートラベルを見つけるんじゃ。

roboko
ロボ子

なるほど。LLMのラベルをベクトル化して、クラスタリングすることで一貫性を実現するんですね。具体的にはどんな設定で実験したんですか?

hakase
博士

LLMは`gpt-4.1-mini`、Embeddingは`voyage-3.5-lite`(1024次元)、ベクトルDBはPineconeを使ったみたいじゃ。

roboko
ロボ子

voyage-3.5-liteですか。比較的小さめのモデルですね。それで、結果はどうだったんですか?

hakase
博士

ベクトル化でラベルの収束が見られたみたいじゃぞ。データが増えるほど、ベクトル化の方が速くて安くなったらしい。

roboko
ロボ子

初期段階ではコストが15%高くて、130%遅かったみたいですが、10,000ツイートの分類では、ラベル数が大幅に減ったんですね。

hakase
博士

そうなんじゃ!LLMだけだと約6,520ラベルだったのが、ベクトル化すると約1,381ラベルに減ったんじゃ。

roboko
ロボ子

すごい!それに、10,000ツイート処理後、ベクトルインデックスのキャッシュヒット率が94%以上になったんですね。

hakase
博士

キャッシュが効いてくるから、どんどん効率が良くなるんじゃ。ベクトル化のコストは、10,000ツイート時点でLLMだけの1/10になったらしいぞ。

roboko
ロボ子

数式も面白いですね。LLMのラベル数増加は`slope_mathcal{L} = 0.652n`、ベクトル化のラベル数増加は`slope_mathcal{V} = 13.8√n`、ヒット率は`hit_rate(n) = 0.95*(1-e^{-0.28n})`ですか。

hakase
博士

そうそう。実装にはGolangの`consistent-classifier`パッケージを使ったみたいじゃ。テキストをベクトル化して、ベクトルストアで似たテキストを探すんじゃ。

roboko
ロボ子

キャッシュヒット時はキャッシュされたラベルを使い、キャッシュミス時はLLMで分類して、テキストとラベルの埋め込みを保存するんですね。

hakase
博士

推奨パラメータは、コサイン類似度の閾値はコンテンツとラベルで0.80が良いらしいぞ。

roboko
ロボ子

LLMのセマンティックな一貫性を利用して、ベクトル空間でラベルをクラスタリングすることで、一貫性のある分類が可能になるんですね。勉強になります!

hakase
博士

そうじゃろ、そうじゃろ。しかし、ロボ子よ。この技術を使えば、私の部屋の片付けも自動化できるかもしれんぞ!

roboko
ロボ子

博士、それはちょっと違う気がします…でも、頑張って研究してみますね!

hakase
博士

ありがとう、ロボ子!もし成功したら、ご褒美に最新のAI搭載お掃除ロボットを買ってあげるぞ!…ただし、私がそれを片付けるかどうかは別問題じゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search