7. Solrのベクトル検索機能の利用¶
ここでは Solr をベクトルデータベースとして利用する手順について紹介します。intra-mart Accel Platform では、IM-Copilot for Accel Platform が提供する生成AI活用基盤を使用して Solr をベクトルデータベースとして利用できます。IM-Copilot for Accel Platform の利用方法については、「IM-Copilot 利用ガイド」を参照してください。コラム
Solr はバージョン 9.0 からベクトル検索機能をサポートしています。ベクトル検索機能についての詳しい情報は、Apache Software Foundation の Web サイトでご確認ください。
7.1. 前提条件¶
intra-mart Accel Platform のバージョンは 2024 Autumn(Jasmine) 以降である必要があります。
IM-Juggling において、IM-Copilot モジュール と IM-ContentsSearch モジュール を選択している必要があります。
- リリースノートに記載されているシステム要件を満たしている必要があります。
- 詳細は「リリースノート」の「Apache Solr システム要件」を参照してください。
7.2. Solrのセットアップ¶
Solr のセットアップ手順については「Solrのセットアップ」を参照してください。
7.3. コアの追加・削除¶
弊社から提供しているセットアップ資材の Solr 環境は、初期状態で default_vector というベクトルデータベース用のコアが設定されています。また、_iapdefault_vector というベクトルデータベース用のコンフィグセットも用意しています。独自にコアを追加する場合、コンフィグセットに _iapdefault_vector を指定することで、ベクトルデータベース用のコアを追加できます。
Windowsの場合
C:\solr\bin> solr.cmd create -c %CORE_NAME% -d _iapdefault_vectorLinuxの場合
/usr/local/solr/bin/solr create -c %CORE_NAME% -d _iapdefault_vectorコアの追加や削除の詳細については「コアの追加・削除」を参照してください。
7.4. コアごとの設定¶
コアごとに下記の設定を行うことが可能です。
7.4.1. 基本設定(solrconfig.xml)¶
弊社から提供しているセットアップ資材に含まれるベクトルデータベース用の<solrconfig.xml>は IM-Copilot 用の設定が記述されています。<solrconfig.xml>は %SOLR_HOME%/server/solr/%コア名%/conf ディレクトリ内に保存されています。以下に記載する項目以外の内容は変更しないでください。
インデックス保存ディレクトリ
インデックスが保存される場所です。初期状態では %SOLR_HOME%/server/solr/%コア名%/data ディレクトリに保存されます。相対パスで指定した場合はアプリケーションサーバを起動したディレクトリによってカレントディレクトリが変わるため、絶対パスでの指定を推奨します。<dataDir>${solr.data.dir:}</dataDir>
7.4.2. スキーマの設定(schema.xml)¶
弊社から提供しているセットアップ資材に含まれるベクトルデータベース用の<schema.xml>は IM-Copilot 用のスキーマ定義が記述されています。<schema.xml>は %SOLR_HOME%/server/solr/%コア名%/conf ディレクトリ内に保存されています。IM-Copilot の生成AI活用基盤で使用するフィールドの定義が記載されているため、必要がない限り以下に記載する項目以外の内容は変更しないでください。
テキストフィールド定義
テキストを格納するフィールド定義は、言語毎に定義しています。intra-mart Accel Platform が標準でサポートする日本語・英語・中国語(簡体字)のフィールド定義を用意していますが、新たに言語を追加した場合は、対象言語のフィールド定義を追加する必要があります。なお、追加するフィールド名には text_[ロケールマスタのロケール ID(すべて小文字)] を設定してください。
ドイツ語(de)を追加した場合の例:
schema.xml
<fieldType name="text_de" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="false" enableGraphQueries="false"> <analyzer> ... </analyzer> </fieldType> <field name="text_de" type="text_de" indexed="true" stored="true" />コラム
intra-mart Accel Platform に新たに言語を追加する方法については、「言語追加ガイド」を参照してください。
アナライザ定義
日本語以外の言語を使用する場合は、適宜アナライザの設定を調整してください。
セットアップ資材に含まれるアナライザ定義:
schema.xml
<analyzer> <tokenizer class="solr.JapaneseTokenizerFactory" mode="search" userDictionary="userdict_ja.txt" /> <filter class="solr.JapaneseBaseFormFilterFactory" /> <filter class="solr.JapanesePartOfSpeechStopFilterFactory" tags="stoptags_ja.txt" /> <filter class="solr.CJKWidthFilterFactory" /> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_ja.txt" /> <filter class="solr.JapaneseKatakanaStemFilterFactory" minimumLength="4" /> <filter class="solr.LowerCaseFilterFactory" /> </analyzer>コラム
Solr のアナライザについての詳しい情報は、Apache Software Foundation の Web サイトでご確認ください。
注意
- ベクトルの次元数について
埋め込みベクトルを格納するフィールドタイプ knn_vector には、ベクトルの次元数を設定する属性 vectorDimension を定義しています。セットアップ資材に含まれる vectorDimension 属性には、IM-Copilot の埋め込みアクションのデフォルトのモデルが出力する埋め込みベクトルの次元数と同じ 1536 が設定されています。モデルが生成する埋め込みベクトルの次元数と格納先フィールドの次元数が異なる場合、ベクトルデータを格納できなくなりますので、必要がない限り変更しないでください。
セットアップ資材に含まれる knn_vector フィールドタイプ定義:
<fieldType name="knn_vector" class="solr.DenseVectorField" vectorDimension="1536" similarityFunction="euclidean"/>