Elasticsearchでunit-length vectorsのエラー

Elasticsearchでdense_vector型を利用する際に、similarityをdot_productにして、単位ベクトルにしていても、The [dot_product] similarity can only be used with unit-length vectors. Preview of invalid vector: [... みたいなエラーが発生する場合がある。しかも、1万件中数件くらいしか、発生しないので、よくわからない感じにもなる…。

単位ベクトルを以下のようにnumpyで単位ベクトルに変換していた。

embedding = embedding / np.linalg.norm(embedding)

変換の仕方に問題はないのだが、embeddingのndarrayがnp.float16だったりすると、場合によっては、今回の問題が発生する可能性がある。なので、

embedding = embedding.astype(np.float32)
embedding = embedding / np.linalg.norm(embedding)

という感じで、np.float32にしてから単位ベクトルにして、Elasticsearchに投げてあげると、エラーにならなくなる。

OllamaでGemma 7Bを試す

OllamaでGemmaが使えるようになったようなので、早速試してみる。

まず、Ollamaを試すのような感じで、Dockerで以下のような感じで立ち上げておく。

$ docker run --gpus=all -v ./ollama:/root/.ollama -p 11434:11434 --name ollama -d ollama/ollama

RTX 4060Ti 16Gを利用しているので、–gpus=allでGPUを使える状態にしている。GPUがなければ、このオプションは不要です。

次は、Gemma 7Bをpullしてみる。

$ docker exec -it ollama ollama pull gemma:7b

ollama listでみると、5.2Gという感じだが、GPUのメモリーにも乗りそう。

$ docker exec -it ollama ollama list
NAME                                 	ID          	SIZE  	MODIFIED
gemma:7b                             	430ed3535049	5.2 GB	2 days ago

あとは、ollama runして、実行してみる。

$ docker exec -it ollama ollama run gemma:7b                                                
>>> 全文検索サーバーFessとは何ですか?
Fessは、全文検索サーバーと呼ばれるソフトウェアです。これは、テキストやドキュメントなどのデータを検索するためのサーバーを提供します。

**Fessの概要:**

* **オープンソース:** Fessはオープンソースソフトウェアであり、無料で使用できます。
* **パフォーマンス:** Fessは非常に高速な検索機能を備えており、膨大な量のデータにも対応できます。
* **スケーラビリティ:** Fessはスケーラブルな設計であり、多くのユーザーやサーバーに対しても利用できます。
* **柔軟性:** Fessは柔軟な設計に基づいて、さまざまな検索機能を簡単に追加できます。
* **セキュリティ:** Fessはセキュリティ機能を備えており、ユーザーのデータを保護します。

**主な機能:**

* **全文検索:** Fessはテキスト、ドキュメントなどのデータを検索するための強力な機能を提供します。
* **データ管理:** Fessはデータを管理するための機能も備えており、検索以外にもデータの追加、削除、更新などができます。
* **統合:** Fessはさまざまなシステムと統合し、さまざまな検索機能を提供します。
* **アクセス:** Fessはいくつかのアクセス方法を提供し、ユーザーが簡単にアクセスできます。

**用途:**

Fessは、以下の用途に最適です。

* 文本検索システム
* ドキュメント管理システム
* データ分析システム
* ソフトウェアのサポートシステム
* 検索エンジン

**結論:**

Fessは、高速な検索機能、スケーラビリティ、柔軟性など、多くの特徴を持つオープンソースの全文検索サーバーです。さまざまな用途に最適な機能を備えており、多くの組織が使用しています。

日本語で7Bなので、これくらいできれば良いのかなとも思いつつ…。GPUを使えているので、レスポンスの応答速度はかなり良さそう。

Fess 14.12のリリース

Fess 14.12をリリースしました。細々とした修正をいろいろとした気はします。

最近は、ChatGPTとか使って、修正内容とかも生成しているので、GitHubのリリース内容を参照してもらえれば、わかる気がするので、いつものような修正に対するコメントはやめておこうと思います。今回は、主に改善系の対応だったと思います。

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