検索拡張生成

RAGを使用して、大規模なナレッジベースでエージェントを強化します。

概要

**検索拡張生成(RAG)**を使用すると、エージェントは会話中に大規模なナレッジベースへアクセスして活用できます。ドキュメント全体をコンテキストウィンドウに読み込む代わりに、RAGはユーザーのクエリごとに最も関連性の高い情報だけを取得するため、次のことが可能になります。

  • プロンプトに収まりきらないほど大規模なナレッジベースにアクセス
  • ナレッジに基づいた、より正確な応答を提供
  • ソース資料を参照してハルシネーションを削減
  • 複数の専門エージェントを作成せずにナレッジを拡張

RAGは、大量のドキュメント、技術マニュアル、または従来のプロンプトの コンテキストウィンドウの制限を超える広範なナレッジベースを参照する必要があるエージェントに最適です。 RAGを使用すると、エージェントの応答時間に約250msのわずかなレイテンシーが追加されます。

この動画は以前のバージョンのダッシュボードで収録されています。RAGの設定手順は 変わりませんが、一部のインターフェース要素は異なる場合があります。

RAGの仕組み

RAGを有効にすると、エージェントは次の手順でユーザーのクエリを処理します。

  1. クエリ処理:ユーザーの質問を分析し、最適な検索のために再構成します。
  2. 埋め込みの生成:処理済みのクエリを、ユーザーの質問を表すベクトル埋め込みに変換します。
  3. 検索:ナレッジベースから意味的に最も類似したコンテンツを検索します。
  4. 応答生成:会話のコンテキストと取得した情報の両方を使用して、エージェントが応答を生成します。

このプロセスにより、ユーザーのクエリに関連する情報がLLMに渡され、事実に基づいた正確な回答を生成できます。

ガイド

前提条件

エージェントでRAGを有効にする

エージェントの設定でナレッジベースセクションに移動し、RAGを使用オプションをオンにします。必要に応じて、詳細設定タブで埋め込みモデル、ドキュメントチャンクの最大数、ベクトル距離の最大値を設定します。

埋め込みモデルの選択を含むRAG設定オプション

ナレッジベースのインデックス作成

ナレッジベース内の各ドキュメントは、RAGで使用する前にインデックスを作成する必要があります。この 処理は、RAGが有効なエージェントにドキュメントを追加すると自動的に行われます。

大規模なドキュメントでは、インデックス作成に数分かかる場合があります。インデックスのステータスは ナレッジベースのリストで確認できます。

ドキュメントの使用モードを設定する(任意)

ナレッジベース内のドキュメントごとに、使用方法を選択できます。

  • 自動(デフォルト):クエリに関連する場合にのみドキュメントを取得します
  • プロンプト:関連性にかかわらず、ドキュメントを常にシステムプロンプトに含めます
ナレッジベース内のドキュメント使用モードのオプション

多数のドキュメントを「プロンプト」モードに設定すると、コンテキストの上限を超える場合があります。重要な情報にのみ このオプションを慎重に使用してください。

RAG有効化済みエージェントをテストする

設定を保存したら、ナレッジベースに関連する質問をしてエージェントをテストしてください。エージェントはドキュメントから特定の情報を取得して参照できるようになります。

使用制限

公平なリソース配分のため、ElevenLabsではサブスクリプションティアに応じて、ワークスペースごとにRAG用にインデックスを作成できるドキュメントの合計サイズを制限しています。

制限は次のとおりです。

サブスクリプションティアドキュメント合計サイズの上限注記
無料1MB非アクティブな状態が続くとインデックスが削除される場合があります。
スターター2MB
クリエイター20MB
プロ100MB
スケール500MB
ビジネス1GB
エンタープライズ1GBティアおよび契約に応じて、より高い上限を利用できます。

注:

  • これらの制限は、RAGインデックス自体の内部ストレージサイズ(大幅に大きくなる場合があります)ではなく、RAG用にインデックスを作成するドキュメントの合計元ファイルサイズに適用されます。
  • 500バイト未満のドキュメントはRAG用にインデックスを作成できず、代わりに自動的にプロンプトで使用されます。

API実装

APIを通じてRAGを実装することもできます。

from elevenlabs import ElevenLabs
import time
# Initialize the ElevenLabs client
elevenlabs = ElevenLabs(api_key="your-api-key")
# First, index a document for RAG
document_id = "your-document-id"
embedding_model = "e5_mistral_7b_instruct"
# Trigger RAG indexing
response = elevenlabs.conversational_ai.knowledge_base.document.compute_rag_index(
documentation_id=document_id,
model=embedding_model
)
# Check indexing status
while response.status not in ["SUCCEEDED", "FAILED"]:
time.sleep(5) # Wait 5 seconds before checking status again
response = elevenlabs.conversational_ai.knowledge_base.document.compute_rag_index(
documentation_id=document_id,
model=embedding_model
)
# Then update agent configuration to use RAG
agent_id = "agent_7101k5zvyjhmfg983brhmhkd98n6"
# Get the current agent configuration
agent_config = elevenlabs.conversational_ai.agents.get(agent_id=agent_id)
# Enable RAG in the agent configuration
agent_config.agent.prompt.rag = {
"enabled": True,
"embedding_model": "e5_mistral_7b_instruct",
"max_documents_length": 10000
}
# Update document usage mode if needed
for i, doc in enumerate(agent_config.agent.prompt.knowledge_base):
if doc.id == document_id:
agent_config.agent.prompt.knowledge_base[i].usage_mode = "auto"
# Update the agent configuration
elevenlabs.conversational_ai.agents.update(
agent_id=agent_id,
conversation_config=agent_config.agent
)