EXTENSIONS

セマンティック検索に必要なベクトルデータ作成用のスローインデクシングツール
無料

ご利用にはKandaSearchへの
ユーザー登録(無料)が必要です

Misc
セマンティック検索に必要なベクトルデータ作成用のスローインデクシングツール

最新バージョン: 1.1.0

開発者: RONDHUIT

ダウンロード数: 6

最終更新日: 2024-12-07

Copyright: RONDHUIT Co.,LTD

最新バージョン: 1.1.0

開発者: RONDHUIT

ダウンロード数: 6

最終更新日: 2024-12-07

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月。... ....",""," 「お願いがあるんだけど……友人代表のスピーチ、やってくれないかな?」"]}
  },
  ... ...
]
  • インデクシング対象フィールド、ベクトルデータのソースフィールドおよびターゲットフィールドが定義されたmanaged-schemaを用意します。サンプルとして、Livedoorニュースコーパスを検索対象とする、KandaSearch拡張機能ライブラリLivedoorニュース(embeddings) configuration(Solr 9)のmanaged-schemaを使用します。
  ... ...
  <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>
  • 上記Solrコンフィグを使ってコレクションを作成します。サンプルとして、Livedoorニュースコーパスを検索対象とするコレクションを作成します。詳細手順は、KandaSearch拡張機能ライブラリのLivedoorニュース(embeddings) configuration(Solr 9)をご参照ください。

インデクシング

ベクトルデータを生成しながらインデクシングを行うには、ZIPに同梱されているシェルスクリプトvector_slow_indexing.shを実行します。

本ツールを実行するには、jqコマンドとcurlコマンドをインストールする必要があります。

ご使用環境のOSやShellの種類・バージョンによっては、スクリプトが実行できない可能性があります。シンタックスエラーなどが発生した場合、ご使用環境に合わせスクリプトを適宜修正してください。

以下のパラメータを指定し、スクリプトを実行します。

  • json-data: インデクシング対象のJSONデータファイル
  • solr-url: Solr管理URL(KandaSearchのインスタンスオーバービューで確認できます)
  • solr-collection : データ登録先のSolrコレクション
$ cd data_and_script
$ ./vector_slow_indexing.sh  --json-data <json> --solr-url <url> --solr-collection <collection>

本スクリプトは、ベクトルデータの作成にHuggingFaceモデルを使用します。HuggingFaceの負荷を抑えるため一回のアップデートにつき、ドキュメントを一つのみ登録し、スリープを入れます。すべてのドキュメントが正常にインデクシングできるように、最大10回までリトライを行い、前回のデータ登録に失敗したドキュメントを再度インデクシングします。

  • 1回目に全ドキュメントが登録できた実行例です。

※ ドキュメントサイズ、ドキュメント件数、登録失敗時のリトライ回数などにより実行時間が変動します。


-------------------------- Arguments --------------------------
JSON Data File  : ./livedoor-10docs.json
Solr URL        : https://mydomain.c.kandasearch.nl/solr
Solr Collection : mycore
---------------------------------------------------------------

[2024/12/07 14:23:40] Started indexing of 10 documents.

================================================ 1st indexing ================================================
[dokujo-tsushin-4778030.txt] status:  0, QTime: 11737, Done:     1/10, Remaining:0hours, 1minutes,45seconds.
[dokujo-tsushin-4778031.txt] status:  0, QTime:   460, Done:     2/10, Remaining:0hours, 0minutes, 3seconds.
[dokujo-tsushin-4782522.txt] status:  0, QTime:   533, Done:     3/10, Remaining:0hours, 0minutes, 3seconds.
[dokujo-tsushin-4788357.txt] status:  0, QTime:   433, Done:     4/10, Remaining:0hours, 0minutes, 2seconds.
[dokujo-tsushin-4788362.txt] status:  0, QTime:   405, Done:     5/10, Remaining:0hours, 0minutes, 2seconds.
[dokujo-tsushin-4788373.txt] status:  0, QTime:   537, Done:     6/10, Remaining:0hours, 0minutes, 2seconds.
[dokujo-tsushin-4788374.txt] status:  0, QTime:   571, Done:     7/10, Remaining:0hours, 0minutes, 1seconds.
[dokujo-tsushin-4788388.txt] status:  0, QTime:   501, Done:     8/10, Remaining:0hours, 0minutes, 1seconds.
[dokujo-tsushin-4791665.txt] status:  0, QTime:   408, Done:     9/10, Remaining:0hours, 0minutes, 0seconds.
[dokujo-tsushin-4796054.txt] status:  0, QTime:   445, Done:    10/10, Remaining:0hours, 0minutes, 0seconds.
---------------------------------------------------------------
[2024/12/07 14:24:10] 10 documents succeeded.
[2024/12/07 14:24:10] 0 documents failed.
---------------------------------------------------------------

[2024/12/07 14:24:10] Finished indexing of all 10 documents in 30 seconds.
  • リトライにより全ドキュメントが登録できた実行例です。

-------------------------- Arguments --------------------------
JSON Data File  : ./livedoor-10docs.json
Solr URL        : https://mydomain.c.kandasearch.nl/solr
Solr Collection : mycore
---------------------------------------------------------------

[2024/12/07 14:13:27] Started indexing of 10 documents.

================================================ 1st indexing ================================================
[dokujo-tsushin-4778030.txt] status:  0, QTime:  1658, Done:     1/10, Remaining:0hours, 0minutes,14seconds.
[dokujo-tsushin-4778031.txt] status:  0, QTime:   584, Done:     2/10, Remaining:0hours, 0minutes, 4seconds.
[dokujo-tsushin-4782522.txt] status:  0, QTime:   511, Done:     3/10, Remaining:0hours, 0minutes, 3seconds.
[dokujo-tsushin-4788357.txt] status:  0, QTime:   575, Done:     4/10, Remaining:0hours, 0minutes, 3seconds.
[dokujo-tsushin-4788362.txt] status:  0, QTime:   501, Done:     5/10, Remaining:0hours, 0minutes, 2seconds.
[dokujo-tsushin-4788373.txt] status:  0, QTime:   686, Done:     6/10, Remaining:0hours, 0minutes, 2seconds.
[dokujo-tsushin-4788374.txt] status:  0, QTime:   464, Done:     7/10, Remaining:0hours, 0minutes, 1seconds.
[dokujo-tsushin-4788388.txt] status:500, QTime: 20045, Done:     8/10, Remaining:0hours, 0minutes,40seconds.
[dokujo-tsushin-4791665.txt] status:  0, QTime:  1218, Done:     9/10, Remaining:0hours, 0minutes, 1seconds.
[dokujo-tsushin-4796054.txt] status:  0, QTime:   455, Done:    10/10, Remaining:0hours, 0minutes, 0seconds.
---------------------------------------------------------------
[2024/12/07 14:14:08] 9 documents succeeded.
[2024/12/07 14:14:08] 1 documents failed.
---------------------------------------------------------------
================================================ 2nd indexing ================================================
[dokujo-tsushin-4788388.txt] status:  0, QTime:   511, Done:     1/10, Remaining:0hours, 0minutes, 4seconds.
---------------------------------------------------------------
[2024/12/07 14:14:10] 1 documents succeeded.
[2024/12/07 14:14:10] 0 documents failed.
---------------------------------------------------------------

[2024/12/07 14:14:10] Finished indexing of all 10 documents in 43 seconds.

お見積もり・詳細は KandaSearch チームに
お気軽にお問い合わせください。

お問い合わせ