Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:
Databricks SQL
Databricks Runtime
Belangrijk
Deze functie bevindt zich in de bètaversie.
De ai_prep_search() functie transformeert documentinhoud in een formaat dat geoptimaliseerd is voor RAG-vectorzoek- en informatieopvragingssystemen. Het accepteert zowel de gestructureerde output van ai_parse_document als platte tekst en markdown-inhoud STRING . Voor elk invoerdocument splitst de functie inhoud op in semantische segmenten, verrijkt elk segment met context op documentniveau, zoals de documenttitel, sectiekoppen, paginaverwijzingen en produceert een insluitingsklare weergave.
Gegevensbeveiliging
Uw documentgegevens worden verwerkt binnen de Databricks-beveiligingsperimeter. Databricks slaat de parameters die aan de AI-functieaanroepen worden doorgegeven niet op, maar behoudt wel details van de uitvoering van metadata, zoals de gebruikte Databricks Runtime-versie.
Requirements
- Databricks Runtime 18.2 of hoger.
- Als u serverloze rekenkracht gebruikt, is ook het volgende vereist:
- De serverloze omgevingsversie moet zijn ingesteld op 3 of hoger, omdat dit mogelijk maakt functies zoals
VARIANT. - Moet Python of SQL gebruiken. Zie Serverloze rekenbeperkingen voor aanvullende serverloze functies en beperkingen.
- De serverloze omgevingsversie moet zijn ingesteld op 3 of hoger, omdat dit mogelijk maakt functies zoals
- De
ai_prep_searchfunctie is beschikbaar met behulp van Databricks-notebooks, SQL-editor, Databricks-werkstromen, taken of Lakeflow-pijplijnen.
Syntaxis
ai_prep_search(parsed [, options])
Argumenten
-
parsed: Documenteer de inhoud ter voorbereiding op zoek. Een van de volgende opties:- Een uitdrukking die
VARIANTde gestructureerde output vanai_parse_documentvertegenwoordigt. - Een expressie met
STRINGplatte tekst of markdown. JSON-strings die geen gestructureerdeai_parse_document(of gerelateerde) output zijn, worden als letterlijke tekst behandeld en op dezelfde manier in stukken verdeeld.
- Een uitdrukking die
-
options: Een optioneelMAP<STRING, STRING>. Ondersteunde sleutels:-
'version': de versie van het uitvoerschema dat moet worden gebruikt. -
'schema': Een JSON-schema dat een sleutelset definieert voor documentniveau metadata-extractie. Het schema gebruikt dezelfde formaten alsai_extract:- Eenvoudig schema: een JSON-matrix met veldnamen (ervan uitgegaan dat het tekenreeksen zijn)
"[\"vendor_name\", \"invoice_id\", \"total_amount\"]" - Geavanceerd schema: een JSON-object met typegegevens, beschrijvingen en geneste structuren
- Ondersteunt
string,integer, ,numberenbooleanenumtypen. Voert typevalidatie uit. Waarden die ongeldig zijn, resulteren in een fout. Maximum van 500 enumwaarden. - Ondersteunt geneste objecten die worden gebruikt
"type": "object"met"properties" - Ondersteunt matrices van primitieven of objecten die worden gebruikt
"type": "array"met"items" - Optioneel
"description"veld voor elke eigenschap om extractiekwaliteit te begeleiden
- Ondersteunt
- Eenvoudig schema: een JSON-matrix met veldnamen (ervan uitgegaan dat het tekenreeksen zijn)
-
Retouren
Een VARIANT met documentsegmenten die zijn opgemaakt voor indexering van vectorzoekopdrachten. Elke rij in de uitvoer vertegenwoordigt één invoerdocument.
Het uitvoerschema is:
{
"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
"metadata": OBJECT, // Typed values for the keys in schema; empty object when schema is omitted
"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": {...}
}
Belangrijk
Het uitvoerschema van de functie wordt geversied met behulp van een major.minor-indeling. Databricks kan de ondersteunde of standaardversie upgraden om verbeterde weergaven weer te geven op basis van doorlopend onderzoek.
- Secundaire versie-upgrades zijn compatibel met eerdere versies en kunnen alleen nieuwe velden introduceren.
- Belangrijke versie-upgrades kunnen belangrijke wijzigingen bevatten, zoals veldtoevoegingen, verwijderingen of hernoemingen.
chunk_to_embed-indeling
Het chunk_to_embed veld is één tekenreeks die per segment is gebouwd door de onbewerkte segmenttekst te combineren met context op documentniveau om de kwaliteit van het ophalen tijdens semantische zoekopdrachten te verbeteren.
De tekenreeks bestaat uit de volgende onderdelen:
-
Documentmetagegevens:
Document Title,Page Header,Page Footer,Section Header,Caption, .FootnotePage NumberRechtstreeks geëxtraheerd uit de geparseerde documentstructuur. -
Documentvelden: extra Sleutel: Waardelijnen voor velden op documentniveau. Zonder deze
schemaoptie ontdekt een LLM veldnamen per document (bijvoorbeeld "Company", "Document Type", "Fiscal Year"). Met deschemaoptie gebruikt de functie de toetsen die je aanlevert. - Documentcontextzin: één zin waarin wordt samengevat waar het document over gaat, gegenereerd door een LLM.
-
Inhoud: de onbewerkte segmenttekst. Dezelfde waarde als het
chunk_to_retrieveveld voor het segment. - Samenvatting van de tabel: een korte door LLM gegenereerde parafrase van de inhoud van de tabel. Voor segmenten die een tabel bevatten, voegt de functie deze tabelsamenvatting toe en een reeks verwante vragen in natuurlijke taal die de tabel kan beantwoorden.
- Verwante vragen: vragen in natuurlijke taal die de tabel kan beantwoorden, wordt gebruikt om het ophalen van relevante overeenkomsten voor tabelinhoud te verbeteren.
De tekenreeks volgt deze sjabloon:
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_document_fields}
{document_context_sentence}
Table summary: {table_summary}
Content:
{chunk_to_retrieve}
Related questions:
{qa_text}
Voorbeeld weergegeven 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.
Opmerking
De velden met vaste metagegevens worden altijd weergegeven met hun label, waarbij de waarde leeg blijft wanneer deze niet beschikbaar is. De documentvelden, de contextzin van het document, de samenvatting van de tabel en gerelateerde vragen worden volledig weggelaten wanneer ze niet beschikbaar zijn of niet van toepassing zijn. De exacte samenstelling kan in toekomstige versies worden bijgewerkt om de kwaliteit van het ophalen te verbeteren.
Examples
Bereid platte tekst of markdown voor
Het volgende voorbeeld bereidt een platte tekst STRING voor zoekindexering:
SELECT ai_prep_search(
'Quarterly revenue grew twenty percent year over year.',
options => map('version', '2.0')
);
Koppelen met ai_parse_document
Het volgende voorbeeld is gekoppeld ai_prep_search aan het ai_parse_document produceren van segmenten die gereed zijn voor zoekopdrachten uit onbewerkte documenten die zijn opgeslagen in een Unity Catalog-volume:
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;
Extraheren gestructureerde metadata met de schema optie
Het volgende voorbeeld gebruikt een eenvoudig schema om , document_type, en fiscal_year als stringmetadata op elk stuk te extraherencompany.
WITH parsed_documents AS (
SELECT ai_parse_document(content) AS parsed
FROM READ_FILES('/Volumes/mydata/documents/', format => 'binaryFile')
)
SELECT ai_prep_search(
parsed,
map('schema', '["company", "document_type", "fiscal_year"]')
) AS result
FROM parsed_documents;
Haal getypte metadata uit met behulp van een geavanceerd schema
Het volgende voorbeeld gebruikt een geavanceerd schema om veldtypen en beschrijvingen te specificeren. Beschrijvingen sturen de extractie en fiscal_year worden als geheel getal teruggegeven.
WITH parsed_documents AS (
SELECT ai_parse_document(content) AS parsed
FROM READ_FILES('/Volumes/mydata/documents/', format => 'binaryFile')
)
SELECT ai_prep_search(
parsed,
map(
'schema',
'{
"company": {"type": "string", "description": "Legal business name"},
"document_type": {"type": "string", "description": "Filing or document type"},
"fiscal_year": {"type": "integer", "description": "Fiscal year covered by the document"}
}'
)
) AS result
FROM parsed_documents;
Surface metadatavelden als kolommen
Het volgende voorbeeld vlakt chunks af en projecteert elke sleutel in de schema optie naar een eigen kolom:
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,
map('schema', '["company", "document_type", "fiscal_year"]')
) 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:metadata:company::STRING AS company,
chunk.value:metadata:document_type::STRING AS document_type,
chunk.value:metadata:fiscal_year::INT AS fiscal_year
FROM
prepped_documents,
LATERAL variant_explode(prepped_documents.result:document.contents) AS chunk;
Een vectorzoekbrontabel maken
In het volgende voorbeeld wordt de uitvoer platgemaakt in afzonderlijke segmentrijen en naar een Delta-tabel geschreven. De tabel kan vervolgens worden gebruikt als bron voor een Databricks AI Search-index , met behulp van chunk_to_embed de insluitkolom en chunk_id als primaire sleutel.
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,
chunk.value:metadata AS metadata,
prepped_documents.path AS source_uri
FROM
prepped_documents,
LATERAL variant_explode(prepped_documents.result:document.contents) AS chunk;
De resulterende rijen hebben het volgende schema:
| Kolomnaam | Typ |
|---|---|
chunk_id |
STRING |
chunk_position |
INT |
chunk_to_retrieve |
STRING |
chunk_to_embed |
STRING |
metadata |
VARIANT |
source_uri |
STRING |
Multimodale ophaalbewerking inschakelen
Wanneer ai_parse_document wordt aangeroepen met de imageOutputPath optie, worden weergegeven pagina-afbeeldingen opgeslagen op een Unity Catalog-volume en wordt het image_uri veld in de matrix van pages elk segment ingevuld. Deze afbeeldingsverwijzingen kunnen tijdens query's worden doorgegeven aan een model dat geschikt is voor visie om vragen te beantwoorden waarvoor visuele context is vereist, zoals blokdiagrammen, grafieken of tabellen die niet volledig in tekst worden weergegeven.
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;
Beperkingen
- Wanneer je een
VARIANTpasseert, gebruik geldigeai_parse_documentoutput. Het doorgeven van andereVARIANTgegevens of een niet-ondersteunde schemaversie kan onverwachte resultaten of fouten opleveren. - Als je een
STRINGpasseert, gebruik platte tekst of markdown. JSON-strings die geen gestructureerde parse-documentuitvoer zijn, worden als letterlijke tekst geïndexeerd in plaats van afgewezen. - De maximale invoergrootte is consistent met de maximale uitvoergrootte van
ai_parse_document.