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 [, options])
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_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": {...}
}
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 är en enskild sträng som skapats per segment genom att kombinera rå segmenttexten med kontext på dokumentnivå för att förbättra hämtningskvaliteten under semantisk sökning.
Strängen består av följande delar:
-
Dokumentmetadata:
Document Title,Page Header,Page Footer,Section Header,Caption,Footnote,Page Number. Extraheras direkt från den tolkade dokumentstrukturen. - LLM-identifierade dokumentfält: ytterligare Nyckel: Värderader för fält på dokumentnivå som identifieras automatiskt av en LLM, till exempel "Företag", "Dokumenttyp", "Räkenskapsår", "Patient-ID" eller "Kontraktsnummer". Fältnamnen väljs per dokument av modellen och varierar mellan olika dokument.
- Dokumentkontext mening: en enda mening som sammanfattar vad dokumentet handlar om, genereras av en LLM.
-
Innehåll: den råa segmenttexten. Samma värde som fältet
chunk_to_retrieveför segmentet. - Tabellsammanfattning: en kort LLM-genererad parafras för tabellinnehållet. För segment som innehåller en tabell lägger funktionen till den här tabellsammanfattningen och en uppsättning relaterade frågor på naturligt språk som tabellen kan besvara.
- Relaterade frågor: frågor på naturligt språk som tabellen kan besvara, som används för att förbättra hämtningen av tabellinnehåll.
Strängen följer den här mallen:
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}
Exempel som återges 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.
Anmärkning
De fasta metadatafälten återges alltid med etiketten, med värdet tomt när det inte är tillgängligt. LLM-identifierade fält, dokumentkontext, tabellsammanfattning och relaterade frågor utelämnas helt när de inte är tillgängliga eller inte tillämpliga. Den exakta kompositionen kan uppdateras i framtida versioner för att förbättra hämtningskvaliteten.
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 AI Search-index , med som chunk_to_embed inbäddningskolumn och chunk_id som primärnyckel.
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;
De resulterande raderna har följande schema:
| Kolumnnamn | Type |
|---|---|
chunk_id |
STRING |
chunk_position |
INT |
chunk_to_retrieve |
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 .