Weaviateで日本語に特化した Reranker (japanese-reranker-cross-encoder-large-v1) を使用するまでの手順解説

Aug 7, 2024, 4:23 AM

今まで、Weaviate が公式に用意してくれている ms-marco-MiniLM-L-6-v2 を使用していましたが、日本語においては?あまり精度が高くないように感じたので、日本語に特化したモデルを使用したカスタムイメージを作っていきます。

時間がない人向け

今回ビルドしたカスタムモデルは、ghcr で公開していますので、そちらを利用してください。
docker-compose.yml の以下 image を書き換え
  reranker-transformers:
# image: cr.weaviate.io/semitechnologies/reranker-transformers:cross-encoder-ms-marco-MiniLM-L-6-v2
image: ghcr.io/microaijp/reranker-transformers:japanese-reranker-cross-encoder-large-v1

docker compose で再起動すれば完了です。
docker compose donw
docker compose up -d

japanese-reranker-cross-encoder とは

Yuichi Tateno (舘野 祐一)さんが作成してくださった、日本語に特化したリランカーモデルです。

https://secon.dev/entry/2024/04/02/070000-japanese-reranker-release/
日本語に特化した形で学習されたRerankerがほとんど無かったので、日本語を適切に学習させた Reranker ファミリーを作りました。小さいモデルから大きなモデルまで揃っています。
とのことです。
https://secon.dev/entry/2024/04/02/080000-japanese-reranker-tech-report/
に性能の評価結果が掲載されています。

なんだかすごい人ですね。憧れます。

ローカルモデルの作成

参考URL: https://github.com/weaviate/reranker-transformers

作業用ディレクトリ作成

mkdir -p ~/weaviate/japanese-reranker-cross-encoder-large-v1
cd ~/weaviate/japanese-reranker-cross-encoder-large-v1
nano Dockerfile

Dockerfile

FROM semitechnologies/reranker-transformers:custom
RUN apt-get update && apt-get install -y mecab libmecab-dev mecab-ipadic-utf8 && \
pip install fugashi[unidic-lite] ipadic
RUN MODEL_NAME=hotchpotch/japanese-reranker-cross-encoder-large-v1 ./download.py

ビルド

docker build -f Dockerfile -t microaijp/reranker-transformers:japanese-reranker-cross-encoder-large-v1 .

ビルド結果確認

$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
microaijp/reranker-transformers japanese-reranker-cross-encoder-large-v1 e6d1910b5731 2 minutes ago 11.2GB

(必要に応じて)ghcr に push

リポジトリ名などは書き換えてご利用ください。
echo "ghp_XXXXXXXXXXXXXXXXX" | sudo docker login ghcr.io -u microaijp --password-stdin
sudo docker tag microaijp/reranker-transformers:japanese-reranker-cross-encoder-large-v1 ghcr.io/microaijp/reranker-transformers:japanese-reranker-cross-encoder-large-v1
sudo docker push ghcr.io/microaijp/reranker-transformers:japanese-reranker-cross-encoder-large-v1

Weaviate の設定変更&再起動

設定変更

インストール手順は「ベクトルデータベース Weaviate を試す。Docker で起動〜簡単なテストまで(Nvidia GPU使用)」を参考にしてください。
cd ~/weaviate
nano docker-compose.yml

  reranker-transformers:
# image: cr.weaviate.io/semitechnologies/reranker-transformers:cross-encoder-ms-marco-MiniLM-L-6-v2
image: ghcr.io/microaijp/reranker-transformers:japanese-reranker-cross-encoder-large-v1

再起動

docker compose down
docker compose up -d

起動確認

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
67000872e187 sum-transformers:facebook-bart-large-cnn-1.0.0 "/bin/sh -c 'uvicorn…" About a minute ago Up About a minute weaviate-sum-transformers-1
51aad710e49c ghcr.io/microaijp/transformers-inference:bert-base-japanese-v3 "/bin/sh -c 'uvicorn…" About a minute ago Up About a minute weaviate-t2v-transformers-1
5b3685c4f2b0 ghcr.io/microaijp/reranker-transformers:japanese-reranker-cross-encoder-large-v1 "/bin/sh -c 'uvicorn…" About a minute ago Up About a minute weaviate-reranker-transformers-1
149f867f4068 cr.weaviate.io/semitechnologies/weaviate:1.26.1 "/bin/weaviate --hos…" About a minute ago Up About a minute 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:50051->50051/tcp, :::50051->50051/tcp weaviate-weaviate-1
きれいに起動してくれています🍻

Weaviateで日本語のベクトル検索を実現する方法:カスタムモデル( tohoku-nlp/bert-base-japanese-v3 )の導入手順