CodeBuildのAmazonLinux2023でmysqlクライアントを使う

CodeBuildでmysqlコマンドを利用したかったのだが、標準では入っていないので、入れる必要がある。aws/codebuild/amazonlinux2-aarch64-standard:3.0みたいなAmazonLinux 2023のイメージを使うと入っていないので、インストールする必要があるけど、buildspec.ymlには以下のような感じで書いておけば良い。

phases:
install:
commands:
- dnf install -y mariadb105

mysqlを入れるのではなくて、mariadb105を入れておけば、mysqlコマンドが使えるようになった。

Fess 14.13.0のリリース

Fess 14.13.0をリリースしました。今回は、特に大きな変更はなく、OpenSearch 2.13に対応したくらいでしょうか。あとは、依存しているライブラリたちを細々と更新してあります。

ちょっと変更した点としては、フォーラムで上がっていた話で、クロール設定からクロールジョブを作ると、スクリプトにsessionIdの指定が入るのですが、これをすると、データストアクロールで前回クロールデータを削除することができないので、sessionIdが入らないようにテンプレートを修正したりしました。

その他、何かあれば、フォーラムをご利用ください。

ANN検索プロダクトの速度比較

手元の環境でも、ANN検索ができるオープンソースプロダクトの検索について、応答時間を比較してみる。この分野は、進化が速いので、現時点での参考くらいにしかならないと思いますが…。

比較を簡単に実行できるようにcodelibs/search-ann-benchmarkを作成しているが、GitHub Actionsで実行した結果をまとめてみる。

利用するデータは、768次元の10万件のベクトルをHNSWでインデクシングして、1万件のクエリーを投げて、平均応答時間を出すようにしてます。1回の検索で10件, 100件, 400件を取得した場合の応答時間です。GitHub Actionsでの実行環境は以下のとおりです。

  • OS: Ubuntu 22.04.4 LTS
  • CPU Model: AMD EPYC 7763 64-Core Processor
  • Memory: 15981 MB
  • Docker: 24.0.9

実行結果は以下でした。

10件100件400件
Elasticsearch 8.12.22.74269.850336.4273
Milvus 2.4.0-rc.14.129225.051267.5851
OpenSearch 2.12.01.794211.909238.9887
Qdrant 1.8.20.4475720.6266441.22407
Vespa 8.319.91.96562.26674.6405
Weaviate 1.24.45.718236.650111.8378
ベクトル検索の平均応答時間(ミリ秒)

今回、安定して速いのは、Qdrantでした。Vespaももっとチューニングとかすれば、もう少し改善するかもしれません。Lucene系は取得件数が増えるほど、劣化する現象がありますが、毎回見る現象ですね。

この結果は、参考までにという感じで、search-ann-benchmarkをcloneすれば、手元の環境でも実行できると思うので、興味があればお試しください。その他、補足的なコメントをまとめておくと、

  • 設定をチューニングすれば、改善余地はあるかも
  • HNSWで同じような設定値にはしているが、この辺もデータ数などによって、見直したほうが良いかも
  • 量子化を適用したものもありますが、結果の精度も比較したい
  • PG Vectorなど、対象にできていないものも追加したい
  • 実行結果は自動で収集して、一覧できるようにしたい

という感じで、まだまだツッコミどころもあったりするので、気になるところはプルリクとかもらえると嬉しいです。