【要約】semantic-routerとQdrantで、LLMを呼ばずに問い合わせを振り分けてみた [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者が、問い合わせの窓口を決定するプロセスにおいて、LLMの推論待ちによる遅延とコストに直面している。特に大規模なトラフィックを扱うシステムでは、以下の点が課題となる。
- ・LLMの生成待ちによる数秒単位のレイテンシ発生。
- ・大量の問い合わせ処理に伴うAPIコストの増大。
- ・雑談や無関係な質問への不要な推論リソースの消費。
// Approach
著者は、LLMの代わりにベクトル空間を利用して意味的な近さで判定する手法を検証した。具体的には、semantic-routerを核とした以下の構成を採用している。
- ・semantic-routerを用い、文をベクトル化して判定する。
- ・Qdrantをインデックスとして利用し、データの永続化を行う。
- ・閾値(score_threshold)を調整し、精度と棄却率のバランスを取る。
- ・HybridRouterにより、固有名詞による分岐も可能にする。
// Result
検証の結果、LLMと比較して圧倒的な高速化を実現したが、精度面での課題も浮き彫りになった。具体的な成果は以下の通りである。
- ・レイテンシを約11倍高速化(p50で1,048msから94msへ)。
- ・正解率はLLMの100%に対し、67.5%に留まる。
- ・閾値を0.35に設定することで、正解率を維持しつつ棄却率を大幅に向上可能。
Senior Engineer Insight
> 本技術は、全ての判断をLLMに委ねるのではなく、低コストな「一次フィルタ」として活用すべきだ。精度不足を前提とした、多段構成の設計が実戦的である。閾値の較正は、使用するエンコーダーごとに必須の工程となる。また、固有名詞の識別には、ハイブリッド検索の導入を検討せよ。これにより、ユーザー体験を損なわずに運用コストを劇的に削減できる。