21st June 2025 at 10:02pm
(01) RAG ChatBotの実装(簡易版)で作ったRag ChatBotを使って、思いのほか、ちゃんと動作したのですが、キーワードでの質問が今ひとつです。
「~について教えて」みたいな非常に短い質問は苦手なのです。
生成AIに現況を聞いてみたことろ
SentenceTransformer + FAISS によるRAGの特性
- ✅ 得意なこと:
- 文脈のある質問に対しては、文書の意味をベクトル化して検索するため、関連度の高い文書を引き当てられる。
- ❌ 苦手なこと:
- 単語ベース(キーワードベース)の質問。(例:「~とは?」のような短文や、専門用語だけがポツンとあるような質問)
なぜなら SentenceTransformerは意味ベースの検索なので、単語そのものと類似する文書ベクトルがあまり無いとヒットしない。
生成AIに解決策を聞いてみたところ
解決アプローチはいくつかあるようです。私のスクリプトでは以下の手法が使えそうです。
- キーワード検索とのハイブリッド
- 意味検索(FAISS)と、キーワード検索(LuceneやElasticsearch/BM25など)を組み合わせる。
- SentenceTransformerのモデルの見直し
- 検索や質問応答のようなタスクで高い精度を発揮するモデル(e5系モデル:multilingual-e5-base<small、large>)だとうまくいく場合があります。