適用対象:
Databricks SQL
Databricks Runtime
Important
この機能は ベータ版です。 ワークスペース管理者は、[ プレビュー] ページからこの機能へのアクセスを制御できます。 Manage Azure Databricks プレビューを参照してください。
ai_prep_search()関数は、ai_parse_documentの構造化された出力を RAG ベクター検索および情報取得システム用に最適化された形式に変換します。 各入力ドキュメントについて、関数はコンテンツをセマンティック チャンクに分割し、ドキュメント タイトル、セクション ヘッダー、ページ参照などのドキュメント レベルのコンテキストで各チャンクをエンリッチし、埋め込み可能な表現を生成します。
必要条件
- Databricks Runtime 18.2 以降。
- サーバーレス コンピューティングを使用している場合は、次も必要です。
- サーバーレス環境のバージョンは 3 以上に設定する必要があります。これにより、
VARIANTなどの機能が有効になります。 - Pythonまたは SQL を使用する必要があります。 その他のサーバーレス機能と制限事項については、「 サーバーレス コンピューティングの制限事項」を参照してください。
- サーバーレス環境のバージョンは 3 以上に設定する必要があります。これにより、
-
ai_prep_search関数は、Databricks ノートブック、SQL エディター、Databricks ワークフロー、ジョブ、または Lakeflow Spark 宣言パイプラインを使用して使用できます。
構文
ai_prep_search(
parsed VARIANT,
[options MAP<STRING, STRING>]
) RETURNS VARIANT
引数
-
parsed:ai_parse_documentの構造化された出力を表すVARIANT式。 -
options: 省略可能なMAP<STRING, STRING>。 サポートされているキー:-
'version': 使用する出力スキーマのバージョン。
-
返品
ベクター検索インデックス作成用に書式設定されたドキュメント チャンクを含む VARIANT 。 出力内の各行は、1 つの入力ドキュメントを表します。
出力スキーマは次のとおりです。
{
"document": {
"contents": [
{
"chunk_id": STRING, // Unique identifier composed of the document ID and chunk position
"chunk_position": INT, // 0-based position of the chunk within the document
"chunk_content": STRING, // Raw text content of the chunk
"chunk_to_embed": STRING, // Context-enriched text prepared for embedding; see chunk_to_embed format
"pages": [
{
"page_id": INT, // Page index that this chunk appears on
"image_uri": STRING // Path to the page image for multi-modal retrieval
}
]
}
],
"pages": [
{
"id": INT, // 0-based page index
"image_uri": STRING // Path to the rendered page image, populated when
// imageOutputPath is set in ai_parse_document
}
],
"source_uri": STRING // Source document URI
},
"error_status": {...}
}
Important
関数の出力スキーマは、major.minor 形式を使用してバージョン管理されます。 Databricks は、サポートされているバージョンまたは既定のバージョンをアップグレードして、継続的な調査に基づいて改善された表現を反映する場合があります。
- マイナー バージョンのアップグレードは下位互換性があり、新しいフィールドのみが導入される場合があります。
- メジャー バージョンのアップグレードには、フィールドの追加、削除、名前変更などの破壊的変更が含まれる場合があります。
chunk_to_embed形式
chunk_to_embed フィールドは、セマンティック検索中の取得品質を向上させるために、ドキュメント レベルのコンテキストとチャンク コンテンツを結合します。 形式は次のとおりです。
注
指定されたチャンクの値のないフィールドは含まれますが、空のままです。 正確な構成は、取得品質を向上させるために、将来のバージョンで更新される可能性があります。
The following passage represents a chunk of content from a document.
- 'Content' contains raw document text
- All other fields describe document context and hierarchical information
- For visual elements like images/charts, a summary is generated as part of 'Content'
Document Title: {doc_title}
Page Header: {page_header}
Page Footer: {page_footer}
Section Header: {section_header}
Caption: {caption}
Footnote: {footnote}
Page Number: {page_number}
Content:
{chunk_content}
例示
チェーンとai_parse_document
次の例では、ai_prep_searchai_parse_documentを使用してチェーンし、Unity カタログ ボリュームに格納されている未加工ドキュメントから検索可能なチャンクを生成します。
WITH parsed_documents AS (
SELECT ai_parse_document(content) AS parsed
FROM READ_FILES('/Volumes/mydata/documents/', format => 'binaryFile')
)
SELECT ai_prep_search(parsed) AS result
FROM parsed_documents;
ベクター検索ソース テーブルを作成する
次の例では、出力を個々のチャンク行にフラット化し、Delta テーブルに書き込みます。 その後、埋め込み列としてchunk_to_embedを使用し、主キーとしてchunk_idを使用して、テーブルを Databricks Vector Search インデックスのソースとして使用できます。
WITH parsed_documents AS (
SELECT ai_parse_document(content) AS parsed
FROM READ_FILES('/Volumes/mydata/documents/', format => 'binaryFile')
),
prepped_documents AS (
SELECT ai_prep_search(parsed) AS result
FROM parsed_documents
)
SELECT
chunk.value:chunk_id::STRING AS chunk_id,
chunk.value:chunk_position::INT AS chunk_position,
chunk.value:chunk_content::STRING AS chunk_content,
chunk.value:chunk_to_embed::STRING AS chunk_to_embed,
prepped_documents.result:document.source_uri::STRING AS source_uri
FROM
prepped_documents,
LATERAL variant_explode(prepped_documents.result:document.contents) AS chunk;
結果の行には、次のスキーマがあります。
| 列名 | タイプ |
|---|---|
chunk_id |
STRING |
chunk_position |
INT |
chunk_content |
STRING |
chunk_to_embed |
STRING |
source_uri |
STRING |
マルチモーダル取得を有効にする
imageOutputPath オプションを使用してai_parse_documentが呼び出されると、レンダリングされたページイメージが Unity カタログ ボリュームに保存され、各チャンクのpages配列のimage_uriフィールドが設定されます。 これらの画像参照は、クエリ時に視覚対応モデルに渡して、テキストで完全に表現されていないブロック ダイアグラム、グラフ、テーブルなど、視覚的なコンテキストを必要とする質問に回答できます。
WITH parsed_documents AS (
SELECT ai_parse_document(
content,
map(
'imageOutputPath', '/Volumes/catalog/schema/volume/page_images/',
'descriptionElementTypes', '*'
)
) AS parsed
FROM READ_FILES('/Volumes/mydata/documents/', format => 'binaryFile')
),
prepped_documents AS (
SELECT ai_prep_search(parsed) AS result
FROM parsed_documents
)
SELECT
chunk.value:chunk_id::STRING AS chunk_id,
chunk.value:chunk_to_embed::STRING AS chunk_to_embed,
chunk.value:pages AS pages
FROM
prepped_documents,
LATERAL variant_explode(prepped_documents.result:document.contents) AS chunk;
制限事項
-
ai_prep_search関数には、入力として有効なai_parse_document出力が必要です。 他のVARIANTデータまたはサポートされていないスキーマ バージョンを渡すと、予期しない結果やエラーが発生する可能性があります。 - 最大入力サイズは、
ai_parse_documentの最大出力サイズと一致します。