Azure Cognitive Search で現在プレビュー中のセマンティック検索機能の一つである、セマンティックランキングに用いられている Microsoft 製の Turing モデルがアップデートされました。セマンティックランキングは BM25 ベースのキーワード検索のリランカーとして用いられており、モデルのアップデートに合わせて @search.rerankerScore
の分布も変更されています。
現状以下のような更新がかかっております。
- モデルのアップデートによる精度向上
-
@search.rerankerScore
の分布が変更 - 検索結果に複数の言語のドキュメントが混在している場合、フィールドの言語アナライザーに指定した言語以外のドキュメントも上位に表示するように変更
- セマンティックランキング生成用のトークンが 128→256 に拡張
- 昔のモデルは使えない
モデルのアップデートによる精度向上
古いモデルが上書きされてしまっているので、比較ができない状況です…
以前デモで実施したセマンティック検索の結果を見る限り、確かにランキングは変化しています。
1. 古いモデルのセマンティックランキング
- 源頼家-7.txt:
@search.rerankerScore
: 1.4289 - 北条義時-3.txt:
@search.rerankerScore
: 1.0621
2. 新しいモデルのセマンティックランキング
ランキングが明確に変わりました。@search.rerankerScore
も 1.0 くらい増えています。
- 北条政子-8.txt:
@search.rerankerScore
: 2.5723 - 八田知家-0.txt:
@search.rerankerScore
: 2.4946
セマンティックアンサーの結果およびスコアは変化がありません(score: 0.7744)が、ランキングの中にセマンティックアンサーに選ばれたドキュメントが含まれるようになっています。このように明確に変わったため、アプリケーションにセマンティックランカーの @search.rerankerScore
を閾値として用いている場合は再試験が必要です。
言語アナライザー依存から非依存への変更
検索結果に複数の言語のドキュメントが混在している場合、フィールドの言語アナライザーに指定した言語以外のドキュメントも上位に表示するように変更されました。これは例えば en.lucene
が指定されたフィールドに日本語コンテンツが存在している場合でも、クエリーに近ければ上位に持ってきてくれるということです。
セマンティックランキング生成用のトークンが 128→256 に拡張
セマンティックランキングを生成するためにはセマンティック構成を作成する必要があります。この機能はインデックス内のどのフィールドがセマンティック検索に最も重要であるかをモデルに伝える役割を担っています。この時指定するフィールドの言語アナライザーがコンテンツをトークン化するのですが、これまで 128 トークンまでしか含められないという制限がありました。この制限が 2 倍の 256 トークンへ拡張されたため、ランキング生成に使えるトークンが増えたことによる精度の向上が期待されます。
ここでのトークンは、言語アナライザーによる分割単位のことで、例えば ja.lucene
場合「源実朝の趣味って何?」は「源実朝」「趣味」「何」の 3 トークンに分割されます。それでも、256 トークンって少ない気がしますが、content フィールドは特に。。。
参考