Smart Stock Notes

Smart Stock Notesを始めました。

Smart Stock Notesは、生成AIが企業情報や様々な指標を元に企業情報を分析して、そのレポートを公開していくサイトです。個人投資家などが、この辺の情報を調べて理解しようとすると、かなりの労力が必要になりますし、そもそも企業を見つけるのも大変です。Smart Stock Notesは、プッシュ型の発信にはなりますが、上場会社の各種情報を整理して、公開していきます。まぁ、個人的にこのような情報が欲しいから、というのがありますが…。

上記のように、企業情報を効率よく欲しいという目的もありますが、もう一つの目的としては、LLMが同じ問題に対して、どのような結果を出力するのかを比較したい、というのもあります。LLMのベンチマーク比較で、点数を比較する情報だけだと、実際どうなのかがよくわからないので、違いを体感するというのも、重要かなと。

Smart Stock Notes上では、各LLMをAIアシスタント(Ginny, Noa, Charlotteの3人?)と呼んで、3つの生成AIを導入しています。その3つは有償のAPIを利用していますが、ollamaとかで、ローカルで実行するLLMのものも追加はしたいところです。

あとは、そのうち、サイトのデザインとかは見直したいなとは考えています。現状は、サイトのデザインにかける時間がなかったので、WordPressにあるものを適当に使っているだけなので…。そのほかにも、プロンプトもちょっと複雑になっている気がするので、プロンプトのチューニングも必要だったり。

そんな感じで、少しずつ進化させながら、運用していこうと思いますので、よろしくお願いします。

Fess 15に向けて

Lucene 10がリリースされ、OpenSearchも2.18のロードマップがなくなり、3.0に向かっている感じがするので、Fessも14から15に向けて、進んでいこうと思います。

何か変わるのか?というのは、たぶん、見た目は大して変えないと思います。しかし、内部実装的なところでは、サーブレットのバージョンを上げていく必要がり、それに伴うjavaxからjakartaパッケージに変える、という対応をしていきます。なので、依存ライブラリたちがいろいろと上がっていく感じになります。

とはいえ、この作業自体は、今年の初めに準備済みなので、それがようやく出番が来たみたいな感じです。そんな感じで、準備はしていたので、細々と更なる更新をするだけかなと思います。

ということで、githubのfessのmasterブランチは、15系に変わりました。

引き続きよろしくお願いしますー。

Dense Retrievalを実装してみる

検索のシンプルな実装を作ってみる系の話です。simple-spladeとか、ちょこちょこ作れるときに作ってみたりしているけど、基本に返って、シンプルなDenseなベクトル検索用の実装を作ってみるかな、と思い始めたのがsimple-dense-retrievalです。

いつものように利用しているデータはESCIのAmazonの商品検索データです。テキストのembeddingには、multilingual-e5-smallをベースにモデルを作る感じです。

ESCIのデータをダウンロードしておけば、python main.pyで学習してモデルができる感じです。query_encoderとdocuemnt_encoderという形で、モデルを保存します。

推論用APIも用意しておこうと思い、今回はTorchServeを利用してます。torchserveの中に置いてあります。query_encoderとdocument_encoderのMARファイルを作って、それをTorchServeのDockerで読み込んで利用するみたいな感じです。

モデルのチューニングの余地は結構ありそうな気がしますが、気が向いたときに調整するかもしれませんが、simple-〜は仕組みの理解のための作っている感じなので、これをベースにいろいろと考えるための叩き台みたいな感じの想定です。

そんな感じですが、simple-dense-retrievalで他にやってみたいこととしては、TorchServe以外にも推論APIはあるので、Triton Inference Serverとかでも動くようにしたいところではあります。ですが、これをするには、model.pyをリファクタリングしないと無理そうなので、これは諦め気味…。他には、実際にOpenSearchとかにインデックスして、検索して試せるようにするとかはできそうな気がするので、これはやってみたい気はしてます。