Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
funktion
gäller för:
Databricks SQL
Databricks Runtime
Viktigt!
Den här funktionen finns i Beta. Arbetsyteadministratörer kan styra åtkomsten till den här funktionen från sidan Förhandsversioner . Se Hantera Azure Databricks förhandsversioner.
Funktionen ai_prep_search() omvandlar strukturerade utdata ai_parse_document från till ett format som är optimerat för RAG-vektorsökning och informationshämtningssystem. För varje indatadokument delar funktionen upp innehållet i semantiska segment, berikar varje segment med kontext på dokumentnivå, till exempel dokumentrubrik, avsnittsrubriker, sidreferenser och skapar en inbäddningsklar representation.
Requirements
- Databricks Runtime 18.2 eller senare.
- Om du använder serverlös beräkning krävs även följande:
- Den serverlösa miljöversionen måste vara inställd på 3 eller senare, eftersom detta aktiverar funktioner som
VARIANT. - Måste använda antingen Python eller SQL. Ytterligare serverlösa funktioner och begränsningar finns i Begränsningar för serverlös beräkning.
- Den serverlösa miljöversionen måste vara inställd på 3 eller senare, eftersom detta aktiverar funktioner som
- Funktionen
ai_prep_searchär tillgänglig med Databricks Notebooks, SQL-redigerare, Databricks-arbetsflöden, jobb eller Lakeflow Spark deklarativa pipelines.
Syntax
ai_prep_search(
parsed VARIANT,
[options MAP<STRING, STRING>]
) RETURNS VARIANT
Arguments
-
parsed: EttVARIANTuttryck som representerar strukturerade utdata förai_parse_document. -
options: Ett valfrittMAP<STRING, STRING>. Nycklar som stöds:-
'version': Den version av utdataschemat som ska användas.
-
Retur
Ett VARIANT innehållande dokumentsegment som är formaterade för vektorsökningsindexering. Varje rad i utdata representerar ett indatadokument.
Utdataschemat är:
{
"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": {...}
}
Viktigt!
Utdataschemat för funktionen versioneras med ett major.minor-format. Databricks kan uppgradera den version som stöds eller standardversionen för att återspegla förbättrade representationer baserat på pågående forskning.
- Delversionsuppgraderingar är bakåtkompatibla och kanske bara introducerar nya fält.
- Större versionsuppgraderingar kan omfatta icke-bakåtkompatibla ändringar, till exempel fälttillägg, borttagningar eller namnbyten.
chunk_to_embed format
Fältet chunk_to_embed kombinerar kontext på dokumentnivå med segmentinnehållet för att förbättra hämtningskvaliteten under semantisk sökning. Formatet är:
Anmärkning
Fält utan värde för ett visst segment inkluderas men lämnas tomma. Den exakta kompositionen kan uppdateras i framtida versioner för att förbättra hämtningskvaliteten.
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}
Exempel
Kedja med ai_parse_document
Följande exempel kedjar ai_prep_search med ai_parse_document för att skapa sökklara segment från rådata som lagras i en Unity Catalog-volym:
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;
Skapa en källtabell för vektorsökning
I följande exempel plattas utdata ut till enskilda segmentrader och skrivs till en Delta-tabell. Tabellen kan sedan användas som källa för ett Databricks Vector Search-index , med som chunk_to_embed inbäddningskolumn och chunk_id som primärnyckel.
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;
De resulterande raderna har följande schema:
| Kolumnnamn | Type |
|---|---|
chunk_id |
STRING |
chunk_position |
INT |
chunk_content |
STRING |
chunk_to_embed |
STRING |
source_uri |
STRING |
Aktivera multimodal hämtning
När ai_parse_document anropas med imageOutputPath alternativet sparas återgivna sidbilder till en Unity Catalog-volym och image_uri fältet i varje segments matris fylls pages i. Dessa bildreferenser kan skickas till en visionskompatibel modell vid frågetillfället för att besvara frågor som kräver visuell kontext, till exempel blockdiagram, diagram eller tabeller som inte är helt representerade i text.
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;
Begränsningar
- Funktionen
ai_prep_searchkräver giltigaai_parse_documentutdata som indata. Att skicka andraVARIANTdata eller en schemaversion som inte stöds kan ge oväntade resultat eller fel. - Den maximala indatastorleken överensstämmer med den maximala utdatastorleken
ai_parse_documentför .