手動セグメントデータモデルと同期動作

  • リリースバージョン: Australia
  • 更新日 2026年04月16日
  • 所要時間:5分
  • 手動セグメントでは、構成テーブルと検索操作に使用されるランタイムテーブルが自動的に同期される 2 つのテーブルのデータモデルが使用されます。

    データモデルの概要

    手動セグメントでは、構成とランタイムデータを分離する 2 つのテーブルアーキテクチャが使用されます。この設計により、ランタイムテーブルが検索パフォーマンスのために最適化されている間、構成テーブルが信頼できる唯一の情報源であり続けることが保証されます。

    構成テーブル: sn_query_gen_segment_table_config
    ここで手動セグメントを定義します。各レコードは、アドミニストレーターが作成および管理する 1 つのセグメント構成を表します。
    同期されたテーブル: sn_query_gen_segment
    このテーブルに直接書き込むことはありません。手動セグメント構成が作成または更新されると、ビジネスルールによってこのテーブルに自動的に同期され、検索時にクエリされます。

    構成テーブルのフィールド

    sn_query_gen_segment_table_構成テーブルには、手動セグメントを定義するための次のフィールドが含まれています。

    表 : 1. 手動セグメント構成テーブルのフィールド
    フィールド 列名 最大長 必須 目的
    テーブル名 table_name はい セグメントが適用されるテーブル (エンティティ)。セマンティックレイヤーにアクティブなエンティティが必要です。
    名前 name 255 文字 はい LLM がセマンティック検索中に照合する分かりやすい名前。
    説明 description 4,000 文字 いいえ 一般的に使用される用語を使用したオプションの説明。LLM がセグメントを適用するタイミングを理解するのに役立ちます。
    フィルター filter 4,000 文字 はい セグメントのフィルター条件を定義するエンコードクエリ。条件ビルダー (v2) を使用します。
    有効 active いいえ デフォルトは true です。false の場合、セグメントは非アクティブ化され、検索から除外されます。

    同期されたテーブルフィールド

    sn_query_gen_segmentテーブルには、検索操作に使用されるランタイムデータが含まれています。

    表 : 2. 同期されたセグメントテーブルのフィールド
    フィールド ソース
    name 手動セグメント構成からコピーしました
    description 手動セグメント構成からコピーしました
    filter 手動セグメント構成からコピーしました
    table 開始:table_name
    entity sn_query_gen_entity への解決済み参照
    source_table 常に sn_query_gen_segment_table_config
    source_id 手動セグメント構成レコードのSys_id
    active manual_segment.active AND entity.active

    同期動作

    手動セグメントは、構成テーブルとランタイムテーブル間で自動的に同期されます。同期を手動でトリガーする必要はありません。

    表 : 3. 同期トリガー
    トリガー 時期 何が起こるか
    構成のビジネスルール sn_query_gen_segment_table_configに挿入または更新 個々のレコードを sn_query_gen_segment に同期します (非同期)
    エンティティの挿入/更新 でエンティティが作成または更新された場合 active=true そのエンティティのすべてのセグメント (手動を含む) を再同期します
    週次スケジュール済みジョブ 土曜日の深夜 6 つのセグメント ソースすべてを完全同期します。孤立したレコードのクリーンアップ

    同期中、次の場合に手動セグメントが対象となります。

    1. active = true 構成レコードで
    2. 参照されるテーブルには、sn_query_gen_entity のアクティブなエンティティがあります

    いずれかの条件が満たされない場合、同期されたセグメントは非アクティブ化されます (削除されません)。

    アクティブ化と非アクティブ化

    同期されたセグメントのアクティブステータスは、 manual_segment.active AND entity.active です。

    表 : 4. アクティブ化イベントと非アクティブ化イベント
    イベント 結果
    手動セグメント構成 activefalse 同期済みセグメントが非アクティブ化されました
    手動セグメント構成 activetrue 同期されたセグメントが再アクティブ化されました (エンティティもアクティブな場合)
    エンティティ activefalse そのエンティティのすべてのセグメントが非アクティブ化されました
    手動セグメント構成が削除されました 同期されたセグメントが削除されました
    エンティティが削除されました スケジュール済みジョブによってクリーンアップされた孤立セグメント

    非アクティブ化されたセグメントは検索結果から除外されます。

    ACL 保護

    同期されたセグメントテーブルには厳格な ACL があるため、構成テーブルは信頼できる唯一の情報源であり続けます。

    • 作成: ブロック済み (admin_overrides = false):セグメントは同期を介してのみ作成できます
    • nameへの書き込み:ブロック済み:構成レコードで変更する必要があります
    • descriptionへの書き込み:ブロック済み:構成レコードで変更する必要があります

    フィルター長に関する考慮事項

    filterフィールドは最大 4,000 文字をサポートしますが、システムプロパティsn_query_gen.segments.max_filter_lengthのデフォルトは 2,000 です。このしきい値よりも長いフィルターは、LLM プロンプトに含まれている場合に切り捨てられます。

    ヒント:
    最良の結果を得るにはフィルターを簡潔にしてください。多くの条件を持つ 1 つのセグメントを作成するのではなく、複雑なセグメントを複数の焦点を絞ったセグメントに分割することを検討してください。

    ドメインセパレーション

    手動セグメントはドメインセパレーションをサポートします。特定の sys_domainでセグメント構成レコードを作成すると、同期されたセグメントはそのドメインを継承します。検索時に、セグメントはユーザーのドメインコンテキストによってフィルタリングされます。

    インスタンスでドメインセパレーションが有効になっていない場合、このフィールドは非アクティブであり、無視できます。