New Relicを使用すると、ドキュメント、Runbook、インシデント レトロ、さらにはソース コードをサービスに関連付けることにより、検索拡張生成 (RAG) を使用してNew Relic AIエージェントを強化できます。 このプロセスにより、 New Relic AIシステムの問題に対するインサイトを改善します。 このチュートリアルでは、組織 ID を取得し、RAG ツールを作成し、Blob API を使用してプラットフォームにドキュメントを追加する方法について説明します。
ドキュメントを追加したら、それらを RAG ツールに関連付ける関係を作成します。その後、RAG ドキュメントと RAG ツール間の関係を照会して設定を確認できます。 最後のステップは、RAG ツール自体にクエリを実行して、関連するインデックス付き情報を取得することです。
ナレッジ コネクタの詳細については、 「New Relic AI ナレッジ コネクタ」 を参照してください。
重要 次の手順を実行する前に、「組織製品管理者」権限があることを確認してください。
コンテンツのインデックス作成を開始し、New Relic AI のナレッジ コネクタのメリットを活用するには、次の手順に従ってください。
組織IDを取得する 組織 ID はアカウントを一意に識別し、作成した RAG ツール、アップロードしたドキュメント、確立した関係がNew Relic内の組織に関連付けられることを保証します。
RAG ツールとドキュメントを設定および管理するときに、NerdGraph でミューテーションとクエリを実行するには組織 ID が必要です。次のクエリを実行し、組織 ID を後の手順で使えるように保管しておきます。
サンプルクエリ RAG ツールは、New Relic 内の関連ドキュメントとリソースを整理するための専用のコンテナーとして機能します。RAG ツールの明確な名前と正確な説明は、LLM が各プロンプトに対して適切なツールを選択するのに役立ち、関連性のあるコンテキスト認識型の応答を保証します。
New Relic アカウントに新しい RAG ツールを作成するには、次のentityManagementCreateRagToolミューテーションを実行します。
${ORGANIZATION_ID} 、前の手順で取得した実際の組織 ID に置き換えてください。
成功した場合、RAG ツールに対してid受け取ります。
入力 問題の名前
データタイプ
必須ですか?
説明
ragToolEntity
オブジェクト
はい
新しい RAG ツールの設定を含む入力オブジェクト。
description
弦
はい
RAG ツールの目的を明確かつ正確に説明します。
name
弦
はい
RAG ツールの一意の名前。
scope
オブジェクト
はい
ツールが作成されるコンテキストを定義するオブジェクト。
scope.id
弦
はい
組織の一意の ID (
${ORGANIZATION_ID}
)。
scope.type
弦
はい
スコープのタイプ。
ORGANIZATION
である必要があります。
サンプル変異 entityManagementCreateRagTool (
description : "Runbooks for resolving incidents with APIs" ,
scope : { id : `$ { ORGANIZATION_ID } ` , type : ORGANIZATION }
返されたidは、後の手順でドキュメントをツールにリンクしたり、関係を検証したり、 New Relicで関連情報をツールに照会したりするときに必要になるため、保存する必要があります。
タスク2 RAG ツールにコンテキストを提供するには 2 つのオプションがあります。静的ファイルを手動でアップロードしたり、ライブドキュメント用の自動コネクタを設定したりできます。
オプションA: ドキュメントをインデックスする cloudナレッジ ベースでホストされていない PDF、Word ファイル、ローカル CSV などの静的ドキュメントがある場合は、ドキュメント ナレッジ コネクタを使用します。 この方法では、Blob API を使用して個々のファイルを New Relic に直接アップロードします。このオプションは次の場合に使用します。
**1 回限りのコンテキスト:** ほとんど変更されない特定のランブックまたはアーキテクチャ ダイアグラムをアップロードします。
ローカル データ: Wiki ではなくローカル マシン上に存在する独自のファイルまたは内部ファイルのインデックスを作成します。
エージェントテスト: 集中的なワークフローのために、特定のドキュメント セットを AI エージェントに迅速に提供します。
Blob API経由でドキュメントをアップロードする 重要 インデックスが作成されたすべてのドキュメントは、組織内のすべてのユーザーに表示されます。インデックスを作成するドキュメントが社内ポリシーに準拠していることを確認し、機密データや個人情報をアップロードしないでください。
Blob APIとその目的 Blob API は、ドキュメントやランブックなどのファイルをアカウントにアップロードするために設計された New Relic サービスです。NerdGraph は構造化データのクエリと変更に最適化されており、効率的なファイル転送には最適化されていないため、ドキュメントのアップロードには Blob API が必要です。
認証要件 ドキュメントをアップロードする権限を持つ有効なNew Relic APIキーが必要です。 Blob APIを使用してNew RelicにドキュメントをアップロードするためのAPIキーを取得するには:
New Relic アカウントにログインします。
APIキーUIページ からAPIキーを作成および管理します。
Create a key [キーの作成]をクリックし、必要な詳細を入力します (または必要な権限を持つ既存のキーを使用します)。
Create a key [キーの作成]をクリックし、生成されたキー (NRAK-XXXXXXXXXX のようになります) をコピーします。
curl bashコマンドを使用してドキュメントをアップロードする方法の例を次に示します。
入力 問題の名前
データタイプ
必須ですか?
説明
Api-Key
弦
はい
認証用のNew Relic APIキー。
NewRelic-Entity
JSONオブジェクト
はい
ドキュメントの名前など、ドキュメントに関するメタデータ。
Content-Type
弦
はい
アップロードされるファイルの形式 (例:
application/json
)。
payload
(
@incidents.json
)
ファイル
はい
アップロードするドキュメント ファイル (ファイル パスで指定)。
サンプルクエリ $ curl -X POST https://blob-api.service.newrelic.com/v1/e/organizations/ $ORGANIZATION_ID /RagDocuments \
> -H 'Api-Key: NRAK-XXXXXXXXXX' \
> -H 'NewRelic-Entity: {"name": "Runbooks for API service" }' \
> -H 'Content-Type: application/json' \
サンプル回答 レスポンス
データタイプ
説明
entityGuid
弦
アップロードされた RAG ドキュメントの一意の識別子。
blobVersionEntity
オブジェクト
アップロードされた BLOB のバージョンを表します。
"entityGuid" : "MTIyODU0NTN8TkdFUHxSQUdfRE9DVU1FTlR8MDE5NGUyOTgtYmQzMS03NzA4LWI3NzItYzQ4MTZlYjNhYThk" ,
"blobVersionEntity" : null
次のステップ ドキュメントをアップロードすると、インデックスが作成され、New Relic AI で検索および取得できるようになります。RAG ツールとの関係を作成したり、NerdGraph でドキュメントをクエリしたりするには、応答からentityGuid保存する必要があります。
NerdGraphで表現されたRAGドキュメントエンティティを表示する ドキュメントが Blob API 経由でアップロードされた後、このクエリを実行すると、アップロードが成功したこと、およびドキュメントが独自の一意の識別子とプロパティを持つ RAG ドキュメント エンティティとして適切に登録されたことが確認されます。
入力 問題の名前
データタイプ
必須ですか?
説明
id
弦
はい
取得する RAG ドキュメントの一意の GUID。
サンプルクエリ 以下のクエリで、 ${RAG_DOCUMENT_GUID}プレースホルダーを前の手順で受け取ったentityGuidに置き換えます。
id : `$ { RAG_DOCUMENT_GUID } `
... on EntityManagementRagDocumentEntity {
このクエリは、RAG ドキュメントに関する次の詳細を返します。
id: RAG ドキュメントの固有 ID。name: RAG ドキュメントの名前。blob { url }: アップロードされたドキュメントにアクセスするための URL。type: エンティティのタイプ。この場合はEntityManagementRagDocumentEntityです。RAG ツールを作成し、ドキュメントをアップロードし、アップロードが成功したことを確認したので、次のステップでは、RAG ツールと RAG ドキュメントを関連付けて、ドキュメントを New Relic AI で検索および使用できるようにします。これを行うには、 entityManagementCreateRelationshipミューテーションを実行します。
${RAG_DOCUMENT_GUID} 、Blob API 経由のドキュメントアップロードの応答からのentityGuidに置き換えます。
${RAG_TOOL_GUID} 、RAG ツール作成ミューテーションの応答からのidに置き換えます。
入力 問題の名前
データタイプ
必須ですか?
説明
relationship
オブジェクト
はい
関係の詳細を含む入力オブジェクト。
source
オブジェクト
はい
リレーションシップのソース エンティティ (RAG ドキュメント)。
source.scope
弦
はい
ソース エンティティのスコープ。
ORGANIZATION
である必要があります。
source.id
弦
はい
RAG ドキュメントの一意の GUID (
${RAG_DOCUMENT_GUID}
)。
target
オブジェクト
はい
リレーションシップのターゲット エンティティ (RAG ツール)。
target.scope
弦
はい
ターゲット エンティティのスコープ。
ORGANIZATION
である必要があります。
target.id
弦
はい
RAG ツールの一意の GUID (
${RAG_TOOL_GUID}
)。
type
弦
はい
関係のタイプ。
"INDEXED_FOR"
である必要があります。
サンプル変異 entityManagementCreateRelationship (
id : `$ { RAG_DOCUMENT_GUID } `
オプションB: Confluenceドキュメントをインデックスする 組織でドキュメント作成に Confluence を使用している場合は、Blob API を使用せずに Confluence ドキュメントを New Relic にインデックスできます。このオプションを使用すると、Confluence インスタンスを接続し、インデックスを作成して RAG ツールに関連付ける特定のドキュメントまたはスペースを選択できます。このオプションを使用すると、New Relic AI が常に Confluence ページの最新バージョンを保持するようになります。
Confluence APIを保存する コネクタでページを取得するには、Atlassian API トークンが必要です。これを New Relic シークレット マネージャーに安全に保存します。
入力 問題の名前
データタイプ
必須?
説明
description
弦
いいえ
秘密が何のために使用されるかについての簡単な概要。
キー
弦
はい
このシークレットを参照するために使用される一意の名前 (例:
CONFLUENCE_API_TOKEN
)。
名前空間
弦
はい
RAG インデクサー サービスがアクセスするには、
rag-datafetching
に設定する必要があります。
value
弦
はい
実際の Confluence API トークンの値またはパスワード。
スコープ
オブジェクト
はい
組織のコンテキストを定義します。タイプは
ORGANIZATION
である必要があります。
サンプル変異 mutation createSecretKey {
secretsManagementCreateSecret (
description : " Confluence API token for RAG indexing "
key : " CONFLUENCE_API_TOKEN "
namespace : " rag-datafetching "
scope : { id : "YOUR_ORGANIZATION_ID" , type : ORGANIZATION }
value : "YOUR_CONFLUENCE_API_TOKEN"
Confluence 統合を作成する Confluence インスタンスへの接続を定義します。これは、New Relic と Atlassian 間の橋渡しとして機能します。
入力 問題の名前
データタイプ
必須?
説明
name
弦
はい
インテグレーションの分かりやすい名前 (「Engineering Confluence」など)。
url
弦
はい
ベース Confluence URL (例:
https://example.atlassian.net/wiki
)。
コンフルエンスユーザーID
弦
はい
Atlassian API トークンに関連付けられているメール アドレスまたは ID。
秘密鍵
弦
はい
前の手順で定義したキー名 (
CONFLUENCE_API_TOKEN
)。
スコープ
オブジェクト
はい
統合のコンテキストを定義します。 タイプは
組織
に設定する必要があります。
タグ
オブジェクト
いいえ
統合を部門またはチームごとに分類するために使用されるオプションのメタデータ。
サンプル変異 entityManagementCreateConfluenceIntegration (
name : " Engineering Confluence Integration "
url : " https://your-company.atlassian.net/wiki "
confluenceUserId : " your-confluence-user-id "
secretKey : "CONFLUENCE_API_TOKEN"
scope : { id : "YOUR_ORGANIZATION_ID" , type : ORGANIZATION }
tags : { key : "department" , values : "engineering" }
インデックスロジックを構成する(RAG設定) RAG 設定エンティティを作成して、取得するコンテンツとそのチャンク方法を定義します。
入力 問題の名前
データタイプ
必須?
説明
合流統合ID
弦
はい
前の手順で作成した Confluence 統合の固有 ID。
confluenceクエリ
弦
はい
CQL (Confluence クエリ言語) フィルター (例: space = 'ENG')。
間隔秒
Int
はい
インデックス実行間隔の秒数 (たとえば、1 時間ごとに 3600)。
チャンクサイズ
Int
はい
各テキスト セグメントの最大文字数 (例: 4000)。
チャンクオーバーラップ
Int
はい
コンテキストを維持するためにテキスト セグメント間でオーバーラップする文字数 (たとえば、100)。
テキストスプリッタータイプ
イナム
はい
使用するテキスト スプリッターのタイプ (例:
MARKDOWN_TEXT_SPLITTER
)。
マークダウンテキストスプリッターオプション
オブジェクト
いいえ
どのヘッダー レベル (#、##) で分割するかなどの、マークダウン分割の設定。
トークンテキストスプリッターオプション
オブジェクト
いいえ
エンコード モデル (例:
O200K_BASE
) を含めて分割するための設定。
タグ
オブジェクト
いいえ
設定を分類するためのオプションのメタデータ (例: キー:
knowledge_category
、値:
documentation
)。
テキスト分割タイプ 次のタイプを使用して、 textSplitterType問題を定義します。
TOKEN_TEXT_SPLITTER: 正確なトークンベースの分割。
MARKDOWN_TEXT_SPLITTER: マークダウンヘッダーで分割します。
CHARACTER_TEXT_SPLITTER: 文字数で分割します。
JSON_TEXT_SPLITTER: JSON を再帰的に分割します。
TOKEN_TEXT_SPLITTERを使用する場合は、 tokenTextSplitterOptionsでエンコーディングを定義します。
O200K_BASE: GPT-4o 以降のモデルの場合 (推奨)。
CL100K_BASE: GPT-4 および GPT-3.5 用。
サンプル変異 entityManagementCreateConfluenceRagSettings (
confluenceRagSettingsEntity : {
name : " Engineering Docs RAG Settings "
scope : { id : "YOUR_ORGANIZATION_ID" , type : ORGANIZATION }
confluenceIntegrationId : " INTEGRATION_ID_FROM_STEP_3 "
confluenceQuery : " space = ENG AND type = page "
textSplitterType : MARKDOWN_TEXT_SPLITTER
markdownTextSplitterOptions : {
headersToSplitOn : " # ,##, ### "
tags : { key : "knowledge_category" , values : "documentation" }
関係を築く APPLY_TO関係を介して RAG 設定を RAG ツールにリンクすると、自動インデックス作成がアクティブになります。
入力 問題の名前
データタイプ
必須?
説明
ソースID
弦
はい
前の手順で作成された RAG 設定の ID。
t.id
弦
はい
タスク 1 で作成された RAG ツールの ID。
タイプ
弦
はい
設定からツールへの接続の場合は
APPLY_TO
に設定する必要があります。
タグ
弦
はい
関係をラベル付けするために使用されるオプションのメタデータ(例:キー: "
auto_created
"、値: "
true
")
サンプル変異 entityManagementCreateRelationship (
source : { id : "RAG_SETTINGS_ID_FROM_STEP_4" , scope : ORGANIZATION }
target : { id : "RAG_TOOL_ID_FROM_STEP_1" , scope : ORGANIZATION }
tags : { key : "auto_created" , values : "true" }
結果: 自動インデックス作成が開始 インデックス作成は自動的に行われるようになりました。
RAG 設定と RAG ツールの間にAPPLY_TO関係が作成されると、New Relic RAG インデクサー サービスは次のバックグラウンド プロセスを開始します。
サービスはconfluenceQueryを使用して、Confluence インスタンス内で一致するコンテンツを検索します。
一致するすべてのページを取得し、処理可能な形式に変換します。
コンテンツは、 chunkSize 、 chunkOverlap 、 textSplitterType設定に基づいて小さなセグメントに分割されます。
このサービスは、チャンクごとに密な埋め込みと疎な埋め込みを生成し、それらをクラウド データベース (Pinecone) にインデックス付けします。
コネクタは、AI が最新のドキュメントにアクセスできるように、定義した intervalSeconds に基づいて定期的にコンテンツのインデックスを再作成します。
関係を確立した後( INDEXED_FORを介して特定の RAG ドキュメントをリンクするか、 APPLY_TOを介して Confluence 設定を適用することによって)、関連付けを検証し、ツールをクエリできます。 これにより、社内の知識が適切にインデックス化され、New Relic AI がコンテキストに応じた回答を表示できるようになります。
RAG ツールとインデックス付きドキュメントを設定したら、RAG ツールにクエリを実行して、プロンプトに基づいて関連情報を取得できます。これにより、New Relic AI は組織のドキュメントを使用してコンテキストに応じた回答を表示できるようになります。
入力 問題の名前
データタイプ
必須ですか?
説明
prompt
弦
はい
RAG ツールで処理する自然言語クエリ。
toolId
弦
はい
書き込まれる RAG ツールの一意の GUID。
サンプルクエリ prompt : "tell me about the incident" ,
toolId : `$ { RAG_TOOL_GUID } `
レスポンスには、インデックス付けされたドキュメントからのチャンク化された一致が含まれます。これは直接使用することも、New Relic AI で要約することもできます。