ベクターデータベース¶
ベクターデータベースは、ドキュメントの埋め込みを保存し、LLMプロンプトに関連するコンテキストを取得することで、RAG(検索拡張生成)ワークフローを可能にします。 ベクターデータベースを使用すると、ドキュメントからナレッジベースを作成し、生成AIアプリケーションでコンテキストを考慮した回答を提供するために利用できます。
デプロイをベクターデータベースとして検証する¶
デプロイをベクターデータベースとして使用する前に、datarobot.CustomModelVectorDatabaseValidationを使用して検証します。
import datarobot as dr
validation = dr.CustomModelVectorDatabaseValidation.create(
deployment_id=deployment.id,
name="My Vector Database",
prompt_column_name="query",
target_column_name="citations",
wait_for_completion=True
)
if validation.validation_status == "PASSED":
print("Vector database validation passed!")
サポートされている埋め込みの取得¶
datarobot.VectorDatabase.get_supported_embeddings()を使用して、利用可能な埋め込みモデルを表示します。
supported = dr.genai.VectorDatabase.get_supported_embeddings()
print(f"Default embedding model: {supported.default_embedding_model}")
for model in supported.embedding_models:
print(f" {model.name}: {model.description}")
特定のデータセットに対して推奨される埋め込みを取得することもできます。
dataset = dr.Dataset.get(dataset_id)
supported = dr.genai.VectorDatabase.get_supported_embeddings(dataset_id=dataset.id)
print(f"Default embedding: {supported.default_embedding_model}")
サポートされているテキストチャンキング設定の取得¶
利用可能なテキストチャンキングオプションを表示するには:
chunking_configs = dr.genai.VectorDatabase.get_supported_text_chunkings()
for config in chunking_configs.text_chunking_configs:
print(f"Chunking config: {config}")
ベクターデータベースの作成¶
ドキュメントを含むデータセットからベクターデータベースを作成します。 ベクターデータベースを作成する際は、以下を指定する必要があります。
dataset_id:作成に使用するデータセットのID。chunking_parameters:ドキュメントの分割と埋め込み方法を定義するパラメーター(埋め込みモデル、チャンキング方法、チャンクサイズ、オーバーラップ率など)。name:ベクターデータベースの任意のわかりやすい名前。use_case:ベクターデータベースをリンクさせる任意のユースケース。
dataset = dr.Dataset.upload("documents.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
)
vector_db = dr.genai.VectorDatabase.create(
dataset_id=dataset.id,
name="Document Knowledge Base",
chunking_parameters=chunking_params,
use_case=use_case_id
)
vector_db
ベクターデータベースの更新¶
ドキュメントを追加するか、既存のベクターデータベースを更新します。
new_dataset = dr.Dataset.upload("updated_documents.csv")
updated_vector_db = dr.genai.VectorDatabase.create(
dataset_id=new_dataset.id,
parent_vector_database_id=vector_db.id,
update_llm_blueprints=True
)
ベクターデータベースをLLMブループリントにリンクする¶
RAG用にベクターデータベースをLLMブループリントに関連付けます。
vector_db = dr.genai.VectorDatabase.get(vector_db_id)
blueprint = dr.genai.LLMBlueprint.get(blueprint_id)
blueprint.update(
vector_database=vector_db.id,
vector_database_settings={
"max_documents_retrieved_per_prompt": 3
}
)
ベクターデータベースの一覧表示と管理¶
すべてのベクターデータベースをリストします。
all_dbs = dr.genai.VectorDatabase.list()
print(f"Found {len(all_dbs)} vector database(s):")
for db in all_dbs:
print(f" - {db.name} (ID: {db.id}, Status: {db.execution_status})")
ユースケースでベクターデータベースをフィルターします。
use_case = dr.UseCase.get(use_case_id)
use_case_dbs = dr.genai.VectorDatabase.list(use_case=use_case)
ベクターデータベースの詳細を取得します。
vector_db = dr.genai.VectorDatabase.get(vector_db_id)
print(f"Name: {vector_db.name}")
print(f"Size: {vector_db.size} bytes")
print(f"Status: {vector_db.execution_status}")
print(f"Chunks count: {vector_db.chunks_count}")
ベクターデータベースを削除します。
vector_db.delete()
ベクターデータベースをデータセットとしてエクスポートする¶
ベクターデータベースをデータセットとしてエクスポートするには:
vector_db = dr.genai.VectorDatabase.get(vector_db_id)
export_job = vector_db.submit_export_dataset_job()
exported_dataset_id = export_job.dataset_id