表題のとおり、Elasticsearch 8.8 のリリース内容が興味深かったので記事にしておきます。
リリースノートはこちら
- Elasticsearch 8.8 introduces out-of-the-box semantic search | Elastic Blog
- What’s new in 8.8 | Elasticsearch Guide [8.8] | Elastic
個人的に気になったのが、
- Elastic Learned Sparse EncodeR (ELSER) をリリース
- ELSER はElastic が独自に開発した、機械学習モデルで、従来はユーザーが検索のために適宜fine tune したりモデルを自前で用意するなど、気軽にハイブリッド検索を試すことは難しいのが現状だった。
- それを解決するために提供されるのが ELSERで、Elastic Cloud のプレミアムを契約していればボタンポチッで利用可能になるらしい。
- NOTE: これはElastic Cloud を使う理由になるので、良い機能開発ですね。素晴らしい。
- それを解決するために提供されるのが ELSERで、Elastic Cloud のプレミアムを契約していればボタンポチッで利用可能になるらしい。
- 検索の関連性ベンチマークでもBM25と比べるとスコアはほぼすべてのデータセットで優位な成果を出している。(この結果を出すの素晴らしいですね) Improving information retrieval in the Elastic Stack: Introducing Elastic Learned Sparse Encoder, our new retrieval model | Elastic Blog
- 実際問題、自前でモデルを作成して、調整してというのはかなり手間がかかるので、Elastic Cloud さえ契約しておけば、ゼロコストでセマンティック検索を試せるというのはかなり魅力的に見えます。しかもモデルの利用に当たってライセンスの心配が不要。これ重要ですね。
- 詳細はこちらの記事にかかれています。Introducing Elastic Learned Sparse Encoder: Elastic’s AI model for semantic search | Elastic Blog
- ELSER はElastic が独自に開発した、機械学習モデルで、従来はユーザーが検索のために適宜fine tune したりモデルを自前で用意するなど、気軽にハイブリッド検索を試すことは難しいのが現状だった。
- Elasticsearch の最大次元数が2048次元に!
- Increase max number of vector dims to 2048 by mayya-sharipova · Pull Request #95257 · elastic/elasticsearch
- OpenAI API で提供されるベクトルの次元数は1024次元以上で、Lucene側の制約によって扱うことができなかった1が、多くの要望によって2048次元まで拡張されたとのこと。これは良い意味で Elasticsearch っぽくないというか、かなり意外な動きで驚きました。競合のOpenSearchはすでにOpenAI API を扱えるので、その点をなんとかしたいという意欲が感じ取れて非常に好感触です。
- Reciprocal Rank Fusion (RRF) 2 という複数のランキングを統合する手法がビルトインで利用可能に
- 利用用途としては、BM25のランキングとベクトル検索でのランキングを統合したいときが挙げられる。過去の自分のブログ記事でもハイブリッド検索(BM25とベクトル検索の融合)3を試したが、各ランキングスコアの統合はどうすればいいか正直分からなかったので、こんな手法があるなんて知らなかったので非常に面白い
Footnotes
-
前にこの議論について解説記事を書きました。 今でも lucene のメーリングリストで激論が繰り広げられています。 現在 Lucene の KNN ベクトルの最大次元数は1024次元 だが、それを2048次元に変更できないかという議論 ↩