ご利用にはKandaSearchへの
ユーザー登録(無料)が必要です
最新バージョン: 1.0.0
開発者: RONDHUIT
ダウンロード数: 4
最終更新日: 2024-06-24
Copyright: RONDHUIT Co.,LTD
最新バージョン: 1.0.0
開発者: RONDHUIT
ダウンロード数: 4
最終更新日: 2024-06-24
Copyright: RONDHUIT Co.,LTD
セマンティック検索に必要なベクトルデータ作成用のスローインデクシングツールです。JSON形式のドキュメントをHuggingFaceのモデルを使ってベクトルデータを付与しながらゆっくりSolrに登録します。
KandaSeachで必要に応じてプロジェクトおよびインスタンスを作成します。詳細手順は、KandaSearchドキュメントのプロジェクトの作成とインスタンスの作成をご参照ください。
KandaSearchのSolrにアクセスできるよう、KandaSearchドキュメントインスタンスの設定の手順に従ってIPアドレスを適切に許可してください。
インデクシング対象となるJSON形式のドキュメントを用意します。サンプルデータとして、Livedoorニュース記事からドキュメント10件を抽出し作成したJSONファイルlivedoor-10docs.json
を使用します。記事ID、ニュース記事へのURL、ニュースタイトル、記事カテゴリー、記事本文、ニュース日付のフィールドからなります。Livedoorニュースコーパスについては、KandaSearch拡張機能ライブラリのLivedoor ニュースコーパス(mini)をご参照ください。
[
{
"id":"dokujo-tsushin-4778030.txt",
"url":"http://news.livedoor.com/article/detail/4778030/","category":"dokujo-tsushin","date":"2010-05-22T14:30:00Z",
"title":"友人代表のスピーチ、独女はどうこなしている?",
"body":[" もうすぐジューン・ブライドと呼ばれる6月。... ....",""," 「お願いがあるんだけど……友人代表のスピーチ、やってくれないかな?」"]}
},
... ...
]
... ...
<field name="title" type="text_ja" indexed="true" stored="true"/>
<field name="title_vector" type="knn_vector" indexed="true" stored="true"/>
<field name="body" type="text_ja" indexed="true" stored="true" multiValued="true"/>
<field name="body_vector" type="knn_vector" indexed="true" stored="true"/>
... ...
<updateRequestProcessorChain name="get-embeddings">
<processor class="com.rondhuit.solr.update.dense.EmbeddingsProcessorFactory">
<str name="clientType">COMMUNITY_JA</str>
<str name="sourceField">body</str>
<str name="targetField">body_vector</str>
</processor>
<processor class="solr.LogUpdateProcessorFactory"/>
<processor class="solr.RunUpdateProcessorFactory"/>
</updateRequestProcessorChain>
ベクトルデータを生成しながらインデクシングを行うには、ZIPに同梱されているシェルスクリプトvector_slow_indexing.shを実行します。
本ツールを実行するには、jqコマンドとcurlコマンドをインストールする必要があります。
ご使用環境のOSやShellの種類・バージョンによっては、スクリプトが実行できない可能性があります。シンタックスエラーなどが発生した場合、ご使用環境に合わせスクリプトを適宜修正してください。
スクリプトを実行する前に、スクリプトの先頭に定義された変数を実際のKandaSearchのSolrを指すように適切に設定してください。Solr Admin URLは、KandaSearchのインスタンスオーバービューで確認できます。
JSON_DATA=/path/to/your_json_file
SOLR_URL=your_solr_url
SOLR_COLLECTION=your_solr_collection
上記を設定した上で、以下のようにスクリプトを実行します。ドキュメントサイズ、ドキュメント件数、登録失敗時のリトライ回数などにより実行時間が変動します。
$ cd data_and_script
$ ./vector_slow_indexing.sh
本スクリプトは、ベクトルデータの作成にHuggingFaceモデルを使用します。HuggingFaceの負荷を抑えるため一回のアップデートにつき、ドキュメントを一つのみ登録し、スリープを入れます。すべてのドキュメントが正常にインデクシングできるように、最大10回までリトライを行い、前回のデータ登録に失敗したドキュメントを再度インデクシングします。
1回目に全ドキュメントが登録できた実行例です。
[2024/06/24 10:46:39] Started indexing of 10 documents.
============================== 1st indexing ==============================
[dokujo-tsushin-4778030.txt] status: 0, QTime: 2357
[dokujo-tsushin-4778031.txt] status: 0, QTime: 1914
[dokujo-tsushin-4782522.txt] status: 0, QTime: 1530
[dokujo-tsushin-4788357.txt] status: 0, QTime: 1160
[dokujo-tsushin-4788362.txt] status: 0, QTime: 1594
[dokujo-tsushin-4788373.txt] status: 0, QTime: 1617
[dokujo-tsushin-4788374.txt] status: 0, QTime: 1601
[dokujo-tsushin-4788388.txt] status: 0, QTime: 1493
[dokujo-tsushin-4791665.txt] status: 0, QTime: 1417
[dokujo-tsushin-4796054.txt] status: 0, QTime: 1194
[2024/06/24 10:47:09] 10 documents succeeded.
[2024/06/24 10:47:09] 0 documents failed.
==========================================================================
[2024/06/24 10:47:09] Finished indexing of all 10 documents in 30 seconds.
リトライにより全ドキュメントが登録できた実行例です。
[2024/06/24 10:45:21] Started indexing of 10 documents.
============================== 1st indexing ==============================
[dokujo-tsushin-4778030.txt] status: 500, QTime: 6625
[dokujo-tsushin-4778031.txt] status: 500, QTime: 9402
[dokujo-tsushin-4782522.txt] status: 500, QTime: 9322
[dokujo-tsushin-4788357.txt] status: 500, QTime: 9330
[dokujo-tsushin-4788362.txt] status: 0, QTime: 6258
[dokujo-tsushin-4788373.txt] status: 0, QTime: 1143
[dokujo-tsushin-4788374.txt] status: 0, QTime: 1061
[dokujo-tsushin-4788388.txt] status: 0, QTime: 1196
[dokujo-tsushin-4791665.txt] status: 0, QTime: 1002
[dokujo-tsushin-4796054.txt] status: 0, QTime: 1216
[2024/06/24 10:46:21] 6 documents succeeded.
[2024/06/24 10:46:21] 4 documents failed.
============================== 2nd indexing ==============================
[dokujo-tsushin-4778030.txt] status: 0, QTime: 1157
[dokujo-tsushin-4778031.txt] status: 0, QTime: 1146
[dokujo-tsushin-4782522.txt] status: 0, QTime: 1199
[dokujo-tsushin-4788357.txt] status: 0, QTime: 1426
[2024/06/24 10:46:31] 4 documents succeeded.
[2024/06/24 10:46:31] 0 documents failed.
==========================================================================
[2024/06/24 10:46:31] Finished indexing of all 10 documents in 70 seconds.