あいまい検索用のベクトルテンプレートを用意する
概要
コンテンツをベクトルデータに変換することで、あいまい検索を実装できます。
検索キーワードとベクトルデータ化されたコンテンツとのベクトル間距離を利用することで、関連度の高い順にコンテンツをレスポンスします。
これにより、使用する単語の揺れがある場合の検索や、文章による検索が可能になります。
本ドキュメントではコンテンツに登録した社内文書を、あいまい検索します。
学べること
以下の手順でベクトルテンプレートの設定と確認をします。
コンテンツの準備をする
AIを有効にする
[AI/RAG] -> [ベクトルデータ]をクリックします。

AIの項目を有効にして、[更新する]をクリックします。

コンテンツ定義を追加する
ベクトル検索をする対象となるコンテンツ定義を登録します。
コンテンツ定義一覧の画面から[追加]をクリックします。

以下の内容で設定をします。
全般
| 項目 | 設定 |
|---|---|
| 名前 | 社内文書 |

項目設定
| 項目 | Slug | 項目名 | 項目設定 |
|---|---|---|---|
| ext_1 | なし | WYSIWYG | WYSIWYG |

検索設定
| 項目 | 設定 |
|---|---|
| ベクトルデータに変換する | 有効にする |
| 埋め込みモデル | text-embedding-3-small(OpenAI) |
| キーワードテンプレート(AI/Vector) | デフォルトのまま |

設定ができたら[追加する]をクリックしてコンテンツ定義を追加します。
ベクトルテンプレートを設定する
テンプレートの確認
デフォルトでは、以下がベクトルデータへの変換対象となるテンプレートが入力されています。
- topics_id
- slug
- タイトル
- 内容
- カテゴリ
- 全ての拡張項目のテキスト部分
初期状態に戻したい場合は空で更新することで、自動的にデフォルトテンプレートが入力されます。
テンプレートの修正
任意の項目をテンプレートから除外したり、関連するメンバー情報をテンプレートに追加したりしたい場合は、テンプレートを修正します。
本チュートリアルではデフォルトのまま進めます。
リファレンス
利用できる変数は以下の通りです。
| 変数名 | 型 | 説明 |
|---|---|---|
| $details | Object | コンテンツ詳細 |
| $ext_config | Object | コンテンツ拡張設定 |
Smartyの記述によって出力された文章がベクトルテンプレートとなります。
修正の例は以下のドキュメントも参照してください。
動作の確認をする
コンテンツを追加して、Swagger UIから検索結果を確認します。
コンテンツを追加する
コンテンツ一覧の画面から[追加]をクリックします。

ここでは例として以下の3コンテンツを追加しました。
リモートワークガイドライン

福利厚生ガイドブック

連絡先

ベクトルテンプレートを確認する
追加されたコンテンツの編集画面で、[その他] ボタンをクリックして選択肢が表示します。 [ベクトルテンプレート]をクリックすると、出力されたテンプレートを確認することが出来ます。

反映完了まで[ベクトルテンプレート]の選択肢が表示されません。
テンプレート、サマリー、インデックスの確認ができます。

ベクトル検索用エンドポイントを用意する
エンドポイントの設定方法を参考に、ベクトル検索用のエンドポイントを作成します。
今回はパス・モデルを以下のように設定します。
- パス: vector_search
- カテゴリー: コンテンツ
- モデル:Topics, v1
- オペレーション:list
- topics_group_id:42 (コンテンツ定義を追加するで採番されたID)

Swagger UIで確認する
Swagger UI画面から[ベクトル検索用エンドポイントを用意する]で追加したエンドポイントにリクエストします。
vector_searchの項目に在宅勤務と入力し、Executeをクリックします。

コンテンツには在宅勤務の文字は登録されていませんが、関連度の高いリモートワークガイドラインのドキュメントがリストの最初にレスポンスされます。

vector_distanceの項目が検索文字列とのベクトル間距離を表し、小さい順にレスポンスされます。
関連ドキュメント
サポート
お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。