エンドツーエンドのRAGアプリケーションワークフロー¶
この例では、LLMブループリント、ベクターデータベース、モデレーション、およびテストを組み合わせて、完全なRAG(検索拡張生成)アプリケーションを構築する方法を示します。 このワークフローでは、本番環境に対応した生成AIアプリケーションのすべてのコンポーネントを統合する方法を示します。
プレイグラウンドの作成¶
プレイグラウンドは、LLM設定を試行するためのワークスペースです。 すべてのLLMブループリントはプレイグラウンドに関連付けられている必要があります。
import datarobot as dr
playground = dr.genai.Playground.create(
name="RAG Application Playground",
use_case=use_case.id
)
LLMを選択¶
DataRobotが提供する利用可能なLLMから選択します。 ユースケースでフィルターしたり、モデルの機能に基づいて選択したりできます。
llms = dr.genai.LLMDefinition.list()
llm = [l for l in llms if 'gpt-4' in l.name.lower()][0]
ベクターデータベースを構築¶
ドキュメントをデータセットとしてアップロードし、適切なチャンキングパラメーターを使用してベクターデータベースを作成します。 ベクターデータベースには、RAG用のドキュメントの埋め込みが保存されます。
dataset = dr.Dataset.upload("company_docs.csv")
supported = dr.genai.VectorDatabase.get_supported_embeddings(dataset_id=dataset.id)
from datarobot.models.genai.vector_database import ChunkingParameters
chunking_params = ChunkingParameters(
embedding_model=supported.default_embedding_model,
chunking_method="semantic",
chunk_size=500,
chunk_overlap_percentage=10
)
use_case = dr.UseCase.get(use_case_id)
vector_db = dr.genai.VectorDatabase.create(
dataset_id=dataset.id,
use_case=use_case.id,
name="Company Knowledge Base",
chunking_parameters=chunking_params
)
LLMブループリントの作成¶
LLMとベクターデータベースを組み合わせて、RAG対応のブループリントを作成します。 システムプロンプトやその他のLLM設定を行います。
blueprint = dr.genai.LLMBlueprint.create(
playground=playground.id,
name="RAG Customer Support",
description="RAG-enabled customer support assistant",
llm=llm.id,
llm_settings={
"system_prompt": "You are a customer support assistant. Use the provided context to answer questions accurately.",
"temperature": 0.7
},
vector_database=vector_db.id,
vector_database_settings={
"max_documents_retrieved_per_prompt": 3
}
)
カスタムモデルの登録¶
ブループリントをカスタムモデルバージョンとして登録し、デプロイして本番環境で使用できるようにします。
custom_model_version = blueprint.register_custom_model()
モデレーションの追加¶
安全で適切な回答を確実にするために、コンテンツフィルターを設定します。 モデレーションにより、問題のあるコンテンツをブロックしたり、警告を表示したりできます。
template = dr.ModerationTemplate.list()[0]
moderation = dr.ModerationConfiguration.create(
template_id=template.id,
name="Content Safety",
description="Filter inappropriate content",
stages=[dr.ModerationGuardStage.PROMPT, dr.ModerationGuardStage.RESPONSE],
entity_id=custom_model_version.id,
entity_type=dr.ModerationGuardEntityType.CUSTOM_MODEL_VERSION,
intervention=dr.ModerationIntervention.BLOCK
)
チャットによる対話¶
RAGアプリケーションと対話するためのチャットセッションを作成します。 チャットでは、コンテキストを考慮した回答のために会話履歴が保持されます。
chat = dr.genai.Chat.create(
name="Customer Support Session",
llm_blueprint=blueprint.id
)
prompt = dr.genai.ChatPrompt.create(
chat=chat.id,
text="What is your return policy?"
)
prompt.text
prompt.result_text