JSON形式のログを変換する

FessをDockerで動かすと、ECS形式のJSONとして、ログが出力されます。人がパッと見て理解はしにくいので、ただのログファイルのように変換するには、jqを利用して、変換すると見やすくなると思います。

cat fess-crawler.log | jq -r '."@timestamp" + " " + ."log.level" + " " + .message' 

OpenAI互換APIも使えるllama-cpp-python

OpenAIのAPIは有料なので気軽に使うにはちょっと厳しいので、気軽に使う方法がないかなと言うときに良さそうなのが、llama-cpp-pythonというのがあります。Llama2とか、いい感じのものも増えてきていますし、これと合わせて使うと、気軽に試したりすることができます。

llama.cppで、量子化してたりして、利用する環境に合わせたサイズのモデルを事前に準備しておくと良いです。事前に準備しておいたら、llama-cpp-pythonは

pip install llama-cpp-python

でインストールすることができます。GPU環境とかであれば、ドキュメントを参考にして、cuBlasなどを有効にして、インストールしてください。

あとは、

python3 -m llama_cpp.server --model models/7B/ggml-model.bin

みたいな感じで、モデルを指定すれば起動できます。–portとか、オプションもいろいろとあるので、指定すれば、一部の層をGPUに置いたりとか、できたりで便利です。

OpenAIのライブラリ経由とかで使う場合は、OPENAI_API_BASE環境変数とかで、http://localhost:8000/v1とか指定すれば、差し替えて使えることもできると思います。

補足:llama.cppにもserverコマンドでAPI化できるのですが、これはllama-cpp-pythonほど、実装されていなかったので、まだ使えなかった…。

Fess 14.10.0のリリース

Fess 14.10.0をリリースしました。Fessとしては、特に大きな変更はないのですが、OpenSearch 2.9でmapping char filterが辞書ファイルに#で始まるコメントを許可しないという破壊的な変更が入っているため、OpenSearchをアップグレードする際には注意が必要になります。Fessで利用しているmapping.txtで、#の行を削除しないと、fessインデックスがopenできない状態になります。

という感じですが、14.10の変更を見ていくと、

#2758はデータストアクロールで、インデクシングするURLに#を含めると、検索結果でリンクが機能しないという問題があるのを対応しました。

#2759はデータストアクロールでは設定パラメーターで指定するような値が利用できないので、パラメーターの入力されたものを利用できるようにしました。CSVリストクロールなどのときに、CrawlerClientが指定されたURLにアクセスするときのパラメーターとして渡せるようになりました。

#2760はAzureADを認証として利用して、AzureADを利用したファイルシステムのクロールするときに認証情報が異なるので、それに対応するようにしました。

#2762はFessのアップグレード処理関連の更新です。今回はmapping.txtの問題があるので、アップグレードを実行すると、mapping.txtから#〜を削除してくれる機能を追加してあります。なので、OpenSearch 2.9でfessインデックスが起動できないときには、アップグレードを実行すると、mapping.txtの問題を修正してくれます。

という感じで、OpenSearch 2.9のmapping char filterの処理が変更された問題はありますが、何かあれば、フォーラムをご利用ください。