Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:
Databricks SQL
Databricks Runtime
Von Bedeutung
Dieses Feature befindet sich in der Betaversion. Arbeitsbereichsadministratoren können den Zugriff auf dieses Feature über die Vorschauseite steuern. Siehe Manage Azure Databricks Previews.
Die ai_prep_search() Funktion wandelt die strukturierte Ausgabe in ai_parse_document ein Format um, das für RAG-Vektorsuch- und Informationsempfangssysteme optimiert ist. Für jedes Eingabedokument teilt die Funktion Inhalte in semantische Blöcke auf, erweitert jeden Block durch Kontext auf Dokumentebene, z. B. Den Dokumenttitel, Abschnittsüberschriften, Seitenverweise und erzeugt eine einbettbare Darstellung.
Anforderungen
- Databricks Runtime 18.2 oder höher.
- Wenn Sie Serverless Compute verwenden, ist auch Folgendes erforderlich:
- Die serverlose Umgebungsversionsnummer muss auf 3 oder höher festgelegt werden, da dies Funktionen wie
VARIANTermöglicht. - Muss entweder Python oder SQL verwenden. Weitere serverlose Features und Einschränkungen finden Sie unter Serverless Compute-Einschränkungen.
- Die serverlose Umgebungsversionsnummer muss auf 3 oder höher festgelegt werden, da dies Funktionen wie
- Die
ai_prep_searchFunktion ist mit Databricks-Notizbüchern, SQL-Editor, Databricks-Workflows, Aufträgen oder Lakeflow Spark Declarative Pipelines verfügbar.
Syntax
ai_prep_search(
parsed VARIANT,
[options MAP<STRING, STRING>]
) RETURNS VARIANT
Argumente
-
parsed: EinVARIANTAusdruck, der die strukturierte Ausgabe vonai_parse_document. -
options: OptionalMAP<STRING, STRING>. Unterstützte Schlüssel:-
'version': Die Version des zu verwendenden Ausgabeschemas.
-
Rückkehr
A VARIANT containing document chunks formatted for vector search indexing. Jede Zeile in der Ausgabe stellt ein Eingabedokument dar.
Das Ausgabeschema lautet:
{
"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": {...}
}
Von Bedeutung
Das Funktionsausgabeschema wird mit einem Major.Minor-Format versioniert. Databricks aktualisieren möglicherweise die unterstützte oder Standardversion, um verbesserte Darstellungen basierend auf fortlaufender Forschung widerzuspiegeln.
- Nebenversionsupgrades sind abwärtskompatibel und führen möglicherweise nur neue Felder ein.
- Hauptversionsupgrades können einschneidende Änderungen wie das Hinzufügen, Entfernen oder Umbenennen von Feldern umfassen.
chunk_to_embed Format
Das chunk_to_embed Feld kombiniert den Kontext auf Dokumentebene mit dem Blockinhalt, um die Abrufqualität während der semantischen Suche zu verbessern. Das Format lautet:
Hinweis
Felder ohne Einen Wert für einen bestimmten Block werden eingeschlossen, aber leer gelassen. Die genaue Zusammensetzung kann in zukünftigen Versionen aktualisiert werden, um die Abrufqualität zu verbessern.
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}
Beispiele
Kette mit ai_parse_document
Im folgenden Beispiel werden Suchvorgänge aus rohen Dokumenten, die in einem Unity-Katalogvolume gespeichert sind, miteinander ai_parse_document verkettetai_prep_search:
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;
Erstellen einer Vektorsuchquelltabelle
Im folgenden Beispiel wird die Ausgabe in einzelne Datenabschnittszeilen vereinfacht und in eine Delta-Tabelle geschrieben. Die Tabelle kann dann als Quelle für einen Databricks Vector Search-Index verwendet werden, indem chunk_to_embed sie als Einbettungsspalte und chunk_id als Primärschlüssel verwendet wird.
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;
Die resultierenden Zeilen weisen das folgende Schema auf:
| Spaltenname | Typ |
|---|---|
chunk_id |
STRING |
chunk_position |
INT |
chunk_content |
STRING |
chunk_to_embed |
STRING |
source_uri |
STRING |
Aktivieren des multi modalen Abrufs
Wenn ai_parse_document mit der imageOutputPath Option aufgerufen wird, werden gerenderte Seitenbilder in einem Unity-Katalogvolume gespeichert, und das image_uri Feld im Array der einzelnen Blöcke pages wird aufgefüllt. Diese Bildverweise können zur Abfragezeit an ein sehfähiges Modell übergeben werden, um Fragen zu beantworten, die visuellen Kontext erfordern, z. B. Blockdiagramme, Diagramme oder Tabellen, die nicht vollständig in Text dargestellt sind.
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;
Einschränkungen
- Für die
ai_prep_searchFunktion ist eine gültigeai_parse_documentAusgabe als Eingabe erforderlich. Das Übergeben andererVARIANTDaten oder einer nicht unterstützten Schemaversion kann zu unerwarteten Ergebnissen oder Fehlern führen. - Die maximale Eingabegröße entspricht der maximalen Ausgabegröße von
ai_parse_document.