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-Pipelines verfügbar.
Syntax
ai_prep_search(parsed [, options])
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_to_retrieve": 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 ist eine einzelne Zeichenfolge, die pro Block erstellt wird, indem der rohe Textabschnitt mit dem Kontext auf Dokumentebene kombiniert wird, um die Abrufqualität während der semantischen Suche zu verbessern.
Die Zeichenfolge besteht aus den folgenden Teilen:
-
Dokumentmetadaten:
Document Title, ,Page Header,Page FooterSection Header,Caption, ,Footnote.Page NumberExtrahiert direkt aus der analysierten Dokumentstruktur. - LlM-discovered document fields: additional Key: Value lines for document-level fields auto-discovered by an LLM, such as "Company", "Document Type", "Fiscal Year", "Patient ID" or "Contract Number". Die Feldnamen werden nach Dem Modell pro Dokument ausgewählt und variieren je nach Dokument.
- Dokumentkontextsatz: Ein einzelner Satz, der zusammenfasst, worum es im Dokument geht, generiert von einer LLM.
-
Inhalt: der unformatierte Text. Derselbe Wert wie das
chunk_to_retrieveFeld für den Block. - Tabellenzusammenfassung: eine kurze LLM-generierte Paraphrase des Tabelleninhalts. Bei Blöcken, die eine Tabelle enthalten, fügt die Funktion diese Tabellenzusammenfassung und eine Reihe verwandter Fragen in natürlicher Sprache an, die die Tabelle beantworten kann.
- Verwandte Fragen: Fragen in natürlicher Sprache, die die Tabelle beantworten kann, wird verwendet, um den Abrufrückruf für Tabelleninhalte zu verbessern.
Die Zeichenfolge folgt dieser Vorlage:
Document Title: {doc_title}
Page Header: {page_header}
Page Footer: {page_footer}
Section Header: {section_header}
Caption: {caption}
Footnote: {footnote}
Page Number: {page_number}
{additional_llm_discovered_fields}
{document_context_sentence}
Table summary: {table_summary}
Content:
{chunk_to_retrieve}
Related questions:
{qa_text}
Beispiel gerendert chunk_to_embed
Document Title: Acme Corp 2024 Annual Report
Page Header:
Page Footer:
Section Header: Risk Factors
Caption:
Footnote:
Page Number: 14
Company: Acme Corp
Document Type: 10-K
Fiscal Year: 2024
Acme Corp's 2024 annual report covering financial performance and risk disclosures across global operating segments.
Content:
Our business faces a number of risks, including competition from established providers, evolving regulatory requirements, and concentration in a small number of large customers.
Hinweis
Die festen Metadatenfelder werden immer mit ihrer Beschriftung gerendert, wobei der Wert leer gelassen wird, wenn er nicht verfügbar ist. Die llM-ermittelten Felder, der Dokumentkontextsatz, die Tabellenzusammenfassung und verwandte Fragen werden vollständig weggelassen, wenn sie nicht verfügbar oder nicht zutreffend sind. Die genaue Zusammensetzung kann in zukünftigen Versionen aktualisiert werden, um die Abrufqualität zu verbessern.
Beispiele
Kette mit ai_parse_document
Im folgenden Beispiel werden Suchvorgänge aus rohen Dokumenten, die in einem Unity-Katalogvolume gespeichert sind, miteinander ai_prep_search verkettetai_parse_document:
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 AI 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
path,
ai_parse_document(content) AS parsed
FROM READ_FILES('/Volumes/mydata/documents/', format => 'binaryFile')
),
prepped_documents AS (
SELECT
path,
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_to_retrieve::STRING AS chunk_to_retrieve,
chunk.value:chunk_to_embed::STRING AS chunk_to_embed,
prepped_documents.path 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_to_retrieve |
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.