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

Aug 7, 2024, 1:55 AM

今まで、Weaviate が公式に用意してくれているマルチ言語用のベクトル化モデル
cr.weaviate.io/semitechnologies/transformers-inference:sentence-transformers-paraphrase-multilingual-mpnet-base-v2
を使用していましたが、(他に原因箇所があるかもしれませんが・・・)あまり精度が高く検索できなかったので、
tohoku-nlp/bert-base-japanese-v3  ( https://huggingface.co/tohoku-nlp/bert-base-japanese-v3 ) でカスタムモデルを作成し導入します。

時間がない人向け

今回ビルドしたカスタムモデルは、ghcr で公開していますので、そちらを利用してください。
docker-compose.yml の以下 image を書き換え
  t2v-transformers:
# image: cr.weaviate.io/semitechnologies/transformers-inference:sentence-transformers-paraphrase-multilingual-mpnet-base-v2
image: ghcr.io/microaijp/transformers-inference:bert-base-japanese-v3

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



ローカルモデルの作成

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

作業用ディレクトリ作成

mkdir -p ~/weaviate/bert-base-japanese
cd ~/weaviate/bert-base-japanese
nano Dockerfile

Dockerfile

FROM semitechnologies/transformers-inference:custom

RUN apt-get update && apt-get install -y mecab libmecab-dev mecab-ipadic-utf8 && \
pip install fugashi[unidic-lite] ipadic

RUN MODEL_NAME=tohoku-nlp/bert-base-japanese-v3 ./download.py

ビルド

docker build -f Dockerfile -t microaijp/transformers-inference:bert-base-japanese-v3 .

ビルド結果確認

$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
microaijp/transformers-inference bert-base-japanese-v3 34e3429b020e About a minute ago 11.1GB

(必要に応じて)ghcr に push

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

Weaviate の設定変更&再起動

設定変更

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

  t2v-transformers:
# image: cr.weaviate.io/semitechnologies/transformers-inference:sentence-transformers-paraphrase-multilingual-mpnet-base-v2
image: ghcr.io/microaijp/transformers-inference:bert-base-japanese-v3

再起動

docker compose down
docker compose up -d

起動確認

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bdc4946a15a6 sum-transformers:facebook-bart-large-cnn-1.0.0 "/bin/sh -c 'uvicorn…" 25 minutes ago Up 25 minutes weaviate-sum-transformers-1
215cb9028550 ghcr.io/microaijp/transformers-inference:bert-base-japanese-v3 "/bin/sh -c 'uvicorn…" 25 minutes ago Up 25 minutes weaviate-t2v-transformers-1
0eb68876afaa cr.weaviate.io/semitechnologies/reranker-transformers:cross-encoder-ms-marco-MiniLM-L-6-v2 "/bin/sh -c 'uvicorn…" 25 minutes ago Up 25 minutes weaviate-reranker-transformers-1
2e23557a2f76 cr.weaviate.io/semitechnologies/weaviate:1.26.1 "/bin/weaviate --hos…" 25 minutes ago Up 25 minutes 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:50051->50051/tcp, :::50051->50051/tcp weaviate-weaviate-1
きれいに起動してくれています🍻
ベクトルデータベース Weaviate (GPU使用) を Jetson Orin Nano NX 16G で動かす (v1.26.1)
Weaviateで日本語に特化した Reranker (japanese-reranker-cross-encoder-large-v1) を使用するまでの手順解説