ai-search-rag について
ServiceNow の AI Search と検索拡張生成(RAG)を設定、調整するためのスキルです。コンテンツソース、ランキング、インデックス、回答生成、品質監視を扱います。
主な機能
- 01検索対象のコンテンツソース設定
- 02検索プロファイルとフィールド重みの設定
- 03RAG回答とインデックスの調整
- 04検索結果ランキングの設定
- 05分析データとフィードバックの監視
活用シーン
- 01ナレッジ記事を使ったRAGの設定
- 02企業内検索の関連性改善
- 03フィードバックによる検索品質の確認
MCP 対応
SN-Query-Table、SN-Create-Record、SN-Update-Record などの ServiceNow MCP ツールで検索設定を調査、管理する方法を説明します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ happy-technologies-llc/ happy-platform-skills --skill ai-search-ragインストール後、Claude Code で/ai-search-ragを入力して読み込まれたか確認します。
詳細
RAG 設定による AI Search
概要
このスキルでは、検索拡張生成(RAG)を使用した ServiceNow AI Search の設定と最適化について説明します。
- 検索ソース(ナレッジベース、カタログアイテム、サービスポータルのコンテンツ)の作成と設定
- 検索動作とソースの優先順位を定義する検索プロファイルの設定
- 質の高い検索結果を得るための結果ランキングと関連性の調整
- 検索されたナレッジコンテンツから回答を生成する RAG の有効化
- 最適な検索のための検索インデックスとフィールド設定の管理
- フィードバックループと分析による検索品質の調整
- AI Search と Now Assist および Virtual Agent の統合
使用する場面: ナレッジベース全体を対象に AI を活用した検索を設定する場合、エンタープライズコンテンツから生成回答を作成するために RAG を設定する場合、または ServiceNow の検索結果の品質を最適化する場合に使用します。
前提条件
- ロール:
admin、search_admin、またはnow_assist_admin - プラグイン:
com.snc.ai_search(AI Search)、com.snc.generative_ai_controller(Generative AI Controller)、sn_gen_ai(Generative AI) - アクセス権: sn_ai_search_source、sn_ai_search_profile、sn_gen_ai_config テーブル
- 知識: 検索の概念(インデックス作成、ランキング、関連性)とナレッジ管理の基本を理解していること
- 関連スキル: 会話型 AI については
genai/now-assist-qa、KB コンテンツについてはknowledge/article-generation
手順
ステップ 1:利用可能なナレッジソースを評価する
検索可能にし、RAG で利用できるコンテンツを特定します。
MCP アプローチ:
Use SN-Query-Table on kb_knowledge_base:
- query: active=true
- fields: sys_id,title,description,kb_version,active,article_count
- limit: 20
既存のナレッジ記事を確認します:
Use SN-Query-Table on kb_knowledge:
- query: workflow_state=published^kb_knowledge_base=<kb_sys_id>
- fields: sys_id,short_description,kb_knowledge_base,workflow_state,sys_updated_on
- limit: 20
REST アプローチ:
GET /api/now/table/kb_knowledge_base
?sysparm_query=active=true
&sysparm_fields=sys_id,title,description,active
&sysparm_limit=20
ステップ 2:検索ソースを作成する
検索ソースは、AI Search がコンテンツを取得する場所を定義します。
ナレッジベース検索ソース:
MCP アプローチ:
Use SN-Create-Record on sn_ai_search_source:
- name: "IT Knowledge Base"
- description: "Primary IT support knowledge articles"
- source_type: "knowledge"
- source_table: "kb_knowledge"
- source_condition: "workflow_state=published^kb_knowledge_base=<kb_sys_id>"
- active: true
- enable_rag: true
- rag_content_field: "text"
- search_fields: "short_description,text,meta"
- display_fields: "short_description,kb_category,sys_updated_on"
REST アプローチ:
POST /api/now/table/sn_ai_search_source
Body: {
"name": "IT Knowledge Base",
"description": "Primary IT support knowledge articles",
"source_type": "knowledge",
"source_table": "kb_knowledge",
"source_condition": "workflow_state=published",
"active": true,
"enable_rag": true,
"rag_content_field": "text"
}
カタログアイテム検索ソース:
Use SN-Create-Record on sn_ai_search_source:
- name: "Service Catalog Items"
- description: "Available service catalog offerings"
- source_type: "catalog"
- source_table: "sc_cat_item"
- source_condition: "active=true^hide_sp=false"
- active: true
- enable_rag: false
- search_fields: "name,short_description,description"
- display_fields: "name,short_description,category"
インシデント解決策検索ソース:
Use SN-Create-Record on sn_ai_search_source:
- name: "Resolved Incidents"
- description: "Previously resolved incidents for pattern matching"
- source_type: "table"
- source_table: "incident"
- source_condition: "state=6^close_notes!=NULL^universal_requestISNOTEMPTY"
- active: true
- enable_rag: true
- rag_content_field: "close_notes"
- search_fields: "short_description,description,close_notes"
ステップ 3:検索プロファイルを設定する
検索プロファイルは、検索するソースと結果のランキング方法を制御します。
MCP アプローチ:
Use SN-Create-Record on sn_ai_search_profile:
- name: "IT Support Search"
- description: "Search profile for IT help desk agents and self-service"
- active: true
- default_profile: false
- rag_enabled: true
- max_results: 10
- rag_max_sources: 5
- rag_confidence_threshold: 0.7
- search_sources: "<kb_source_sys_id>,<catalog_source_sys_id>,<incident_source_sys_id>"
REST アプローチ:
POST /api/now/table/sn_ai_search_profile
Body: {
"name": "IT Support Search",
"description": "Search profile for IT help desk agents and self-service",
"active": true,
"rag_enabled": true,
"max_results": 10,
"rag_max_sources": 5,
"rag_confidence_threshold": 0.7
}
ステップ 4:検索フィールドの重み付けを設定する
フィールド設定では、関連性スコアへの各フィールドの寄与を制御します。
MCP アプローチ:
Use SN-Create-Record on sn_ai_search_field_config:
- search_source: "<kb_source_sys_id>"
- field_name: "short_description"
- boost_factor: 3.0
- searchable: true
- displayable: true
- order: 100
Use SN-Create-Record on sn_ai_search_field_config:
- search_source: "<kb_source_sys_id>"
- field_name: "text"
- boost_factor: 1.0
- searchable: true
- displayable: false
- order: 200
Use SN-Create-Record on sn_ai_search_field_config:
- search_source: "<kb_source_sys_id>"
- field_name: "meta"
- boost_factor: 2.0
- searchable: true
- displayable: false
- order: 300
ブースト係数の目安:
| ブーストレベル | 値 | 使用例 |
|---|---|---|
| 高 | 3.0-5.0 | タイトル、短い説明 -- 主な一致フィールド |
| 中 | 1.5-2.5 | タグ、メタデータ、カテゴリ -- 補助的な一致フィールド |
| 標準 | 1.0 | 本文、全コンテンツ -- 幅広い一致 |
| 低 | 0.5 | コメント、メモ -- 補足情報 |
ステップ 5:RAG の回答生成を設定する
検索したコンテンツから回答を生成する生成 AI 設定を行います。
MCP アプローチ:
Use SN-Create-Record on sn_gen_ai_config:
- name: "AI Search RAG Configuration"
- description: "Controls how RAG generates answers from search results"
- active: true
- llm_provider: "now_llm"
- model: "default"
- temperature: 0.3
- max_tokens: 500
- system_prompt: "You are a helpful IT support assistant. Answer questions using only the provided context. If the context does not contain enough information, say so clearly. Always cite the source article."
- context_window: 4000
- enable_citations: true
- citation_format: "inline"
REST アプローチ:
POST /api/now/table/sn_gen_ai_config
Body: {
"name": "AI Search RAG Configuration",
"description": "Controls how RAG generates answers from search results",
"active": true,
"llm_provider": "now_llm",
"temperature": 0.3,
"max_tokens": 500,
"enable_citations": true
}
RAG における温度設定の目安:
| 温度 | 動作 | 使用例 |
|---|---|---|
| 0.0-0.2 | 非常に事実に忠実で、決定的 | ポリシーの検索、コンプライアンスに関する回答 |
| 0.3-0.5 | バランスが取れており、おおむね事実に忠実 | IT サポート、トラブルシューティングのガイダンス |
| 0.6-0.8 | より創造的で、多様な言い回し | コンテンツの提案、おすすめ |
| 0.9-1.0 | 非常に創造的 | RAG には推奨されません |
ステップ 6:検索インデックス設定を行う
最適な検索のために、コンテンツのインデックス作成方法を制御します。
MCP アプローチ:
Use SN-Create-Record on sn_ai_search_index:
- search_source: "<kb_source_sys_id>"
- name: "KB Article Index"
- index_type: "full_text"
- active: true
- rebuild_schedule: "daily"
- chunk_size: 500
- chunk_overlap: 50
- embedding_model: "default"
REST アプローチ:
POST /api/now/table/sn_ai_search_index
Body: {
"search_source": "<kb_source_sys_id>",
"name": "KB Article Index",
"index_type": "full_text",
"active": true,
"rebuild_schedule": "daily",
"chunk_size": 500,
"chunk_overlap": 50
}
チャンク分割戦略の目安:
| コンテンツタイプ | チャンクサイズ | オーバーラップ | 理由 |
|---|---|---|---|
| 短い KB 記事 | 300-500 | 30-50 | 記事全体の文脈を保持する |
| 長いドキュメント | 500-800 | 50-100 | 文脈と具体性のバランスを取る |
| FAQ コンテンツ | 200-300 | 20-30 | Q&A の組み合わせを維持する |
| ポリシー文書 | 800-1200 | 100-150 | セクション単位の文脈を維持する |
Step 7:結果のランキングを設定する
MCP アプローチ:
Use SN-Create-Record on sn_ai_search_result_config:
- search_profile: "<profile_sys_id>"
- name: "IT Support Ranking"
- ranking_model: "hybrid"
- semantic_weight: 0.6
- keyword_weight: 0.3
- recency_weight: 0.1
- personalization: true
- active: true
ランキングモデルのオプション:
| モデル | 説明 | 最適な用途 |
|---|---|---|
| keyword | 従来のキーワード/BM25 マッチング | 完全一致の用語検索、エラーコード |
| semantic | ベクトルベースの意味的類似性 | 自然言語での質問 |
| hybrid | キーワード検索とセマンティック検索の組み合わせ | 汎用(推奨) |
Step 8:Virtual Agent と Now Assist に統合する
AI Search を会話型インターフェイスに接続します。
Virtual Agent の検索ソース:
Use SN-Create-Record on sys_cs_ai_search_source:
- name: "VA AI Search Integration"
- search_profile: "<profile_sys_id>"
- active: true
- auto_summarize: true
- fallback_action: "transfer_to_agent"
- confidence_threshold: 0.65
- max_results_shown: 3
REST アプローチ:
POST /api/now/table/sys_cs_ai_search_source
Body: {
"name": "VA AI Search Integration",
"search_profile": "<profile_sys_id>",
"active": true,
"auto_summarize": true,
"fallback_action": "transfer_to_agent",
"confidence_threshold": 0.65
}
Step 9:検索品質を監視する
検索分析データを照会して、パフォーマンスを把握します。
MCP アプローチ:
Use SN-Query-Table on sn_ai_search_log:
- query: search_profile=<profile_sys_id>^sys_created_on>javascript:gs.daysAgo(7)
- fields: sys_id,query_text,result_count,click_through,feedback_score,rag_generated
- limit: 50
- orderBy: sys_created_on
- orderDirection: desc
RAG の回答品質を追跡します:
Use SN-Query-Table on sn_ai_search_feedback:
- query: search_profile=<profile_sys_id>^rating<3
- fields: sys_id,query_text,answer_text,rating,feedback_comment
- limit: 20
Step 10:調整と最適化を行う
分析データに基づいて、検索設定を調整します。
信頼度しきい値を調整する:
Use SN-Update-Record on sn_ai_search_profile:
- sys_id: "<profile_sys_id>"
- rag_confidence_threshold: 0.75
フィールドのブーストを更新する:
Use SN-Update-Record on sn_ai_search_field_config:
- sys_id: "<field_config_sys_id>"
- boost_factor: 4.0
インデックスの再構築を開始する:
Use SN-Update-Record on sn_ai_search_index:
- sys_id: "<index_sys_id>"
- rebuild_requested: true
ツールの使用方法
| ツール | 目的 | 使用するタイミング |
|---|---|---|
| SN-Query-Table | 既存のソース、プロファイル、分析データを検索する | 発見と監視 |
| SN-Create-Record | ソース、プロファイル、フィールド設定を作成する | 初期設定と拡張 |
| SN-Update-Record | ランキング、しきい値、インデックスを調整する | 最適化とメンテナンス |
| SN-Get-Table-Schema | 設定フィールドを確認する | 利用可能な設定の把握 |
ベストプラクティス
- ナレッジベースから始めます。主要な RAG ソースとして使用します。構造化され、精選されたコンテンツが含まれているためです
- ハイブリッドランキングを使用し、セマンティック検索とキーワード検索を組み合わせて最良の結果を得ます
- 最初は保守的な信頼度しきい値(0.7 以上)を設定し、必要な場合にのみ下げます
- RAG の Temperature は低く(0.2~0.4)設定し、事実の正確性を保ちます
- 引用を有効にし、ユーザーが回答をソース資料と照合できるようにします
- コンテンツを適切なサイズに分割します。小さすぎると文脈が失われ、大きすぎると関連性が薄まります
- タイトルフィールドの重みを本文の 3~5 倍に設定し、結果の関連性を高めます
- クリック率とフィードバックスコアを監視し、品質上の課題を特定します
- ナレッジベースの更新後は定期的にインデックスを再構築し、コンテンツを最新の状態に保ちます
- 検索ログから実際のユーザークエリを使ってテストし、ランキングの変更を検証します
トラブルシューティング
| 問題 | 原因 | 解決方法 |
|---|---|---|
| 検索結果が返されない | 検索ソースが非アクティブ、または一致するコンテンツがない | ソースがアクティブであり、コンテンツが source_condition と一致することを確認します |
| RAG の回答が幻覚を含む | Temperature が高すぎる、またはコンテキストが不足している | Temperature を下げ、rag_max_sources を増やし、コンテンツの品質を確認します |
| 関連性の低い結果が上位に表示される | フィールドのブーストの重みが正しく設定されていない | タイトル/説明のブーストを増やし、本文のブーストを減らします |
| 検索が遅い | インデックスが大きい、または検索対象のソースが多すぎる | source_condition の範囲を限定し、chunk_size を最適化し、max_results を減らします |
| RAG の回答に引用がない | 生成 AI 設定で引用が有効になっていない | sn_gen_ai_config で enable_citations=true を設定します |
| インデックスが古い | 再構築スケジュールの頻度が低すぎる | 手動で再構築するか、rebuild_schedule の頻度を上げます |
| 結果が重複する | 同じコンテンツが複数のソースからインデックスに登録されている | ソースの重複排除を追加するか、source_condition フィルターの範囲を狭めます |
例
例 1:IT セルフサービスの AI Search
従業員向けセルフサービスポータルに AI Search を設定します:
- ソース: IT ナレッジベース(公開済みの記事)、サービスカタログ(有効なアイテム)、FAQ ナレッジベース
- プロファイル: RAG を有効にしたセルフサービス、最大 5 件の結果、信頼度しきい値 0.7
- ランキング: ハイブリッドモデル、semantic_weight=0.6、keyword_weight=0.3、recency=0.1
- RAG 設定: Temperature 0.3、最大 500 トークン、インライン引用を有効化
- 統合: 自動要約を有効にした Virtual Agent、ライブエージェントへのフォールバック
例 2:RAG による HR ポリシー検索
HR ポリシーに関する質問向けに AI Search を設定します。
- ソース: HR ナレッジベース(ポリシー文書)、HR カタログ(申請フォーム)
- プロファイル: 厳格な RAG を適用した HR 専用設定(ポリシーの正確性を高めるため、temperature は 0.1)
- チャンク分割: 800 トークン、オーバーラップ 100(ポリシーのセクションの文脈を保持)
- フィールドブースト: ポリシータイトル 5.0 倍、セクション見出し 3.0 倍、本文 1.0 倍
- ガードレール: システムプロンプトでポリシーの正確な引用を要求し、法的文言の言い換えを禁止します
例 3:複数のソースを対象にした技術ナレッジ検索
複数の技術ナレッジベースを対象に AI Search を設定します。
- ソース: インフラストラクチャ KB、アプリケーション KB、セキュリティ KB、解決済みのインシデント
- プロファイル: 自然言語クエリ向けに、セマンティックの重みを高くした(0.7)テクニカルサポート設定
- チャンク分割: 技術記事向けに 500 トークン、オーバーラップ 50
- ランキング: 変化の速い技術コンテンツに対応するため、新しい記事を優先(recency_weight=0.2)
- モニタリング: 評価の低い回答を毎週追跡し、見落としをもとに再トレーニングします
関連スキル
genai/now-assist-qa- AI Search の結果を利用する会話型 AIgenai/skill-kit-custom- AI Search を呼び出せるカスタムスキルknowledge/article-generation- 検索対象となるナレッジコンテンツの管理reporting/executive-dashboard- 検索分析ダッシュボードの構築