Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:
Databricks SQL
Databricks Runtime
Importante
Este recurso está em versão Beta. Os administradores do espaço de trabalho podem controlar o acesso a esse recurso na página Visualizações . Ver Gerir pré-visualizações Azure Databricks.
A ai_prep_search() função transforma a saída estruturada de ai_parse_document num formato otimizado para sistemas de pesquisa vetorial RAG e recuperação de informação. Para cada documento de entrada, a função divide o conteúdo em blocos semânticos, enriquece cada bloco com contexto ao nível do documento, como o título do documento, cabeçalhos de secção, referências de página, e produz uma representação pronta para incorporação.
Requisitos
- Databricks Runtime 18.2 ou superior.
- Se estiver a usar computação Serverless, também é exigido o seguinte:
- A versão do ambiente sem servidor deve ser definida como 3 ou superior, pois isso permite recursos como
VARIANT. - Deve usar Python ou SQL. Para recursos e limitações adicionais sem servidor, consulte Limitações de computação sem servidor.
- A versão do ambiente sem servidor deve ser definida como 3 ou superior, pois isso permite recursos como
- A função
ai_prep_searchestá disponível através de notebooks do Databricks, do editor SQL, dos fluxos de trabalho do Databricks, dos trabalhos ou dos Pipelines Declarativos do Lakeflow Spark.
Sintaxe
ai_prep_search(
parsed VARIANT,
[options MAP<STRING, STRING>]
) RETURNS VARIANT
Argumentos
-
parsed: UmaVARIANTexpressão que representa a saída estruturada deai_parse_document. -
options: Um opcionalMAP<STRING, STRING>. Teclas suportadas:-
'version': A versão do esquema de saída a utilizar.
-
Devoluções
A VARIANT contém blocos de documentos formatados para indexação de pesquisa vetorial. Cada linha na saída representa um documento de entrada.
O esquema de saída é:
{
"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": {...}
}
Importante
O esquema de saída da função é versionado usando um formato major.minor. O Databricks pode atualizar a versão suportada ou padrão para refletir representações aprimoradas com base em pesquisas em andamento.
- As atualizações de versões menores são compatíveis com versões anteriores e podem apenas introduzir novos campos.
- As atualizações de versão principal podem incluir mudanças disruptivas, como adições de campo, remoções ou renomeações.
chunk_to_embed Formato
O chunk_to_embed campo combina contexto ao nível do documento com o conteúdo do bloco para melhorar a qualidade da recuperação durante a pesquisa semântica. O formato é:
Observação
Campos sem valor para um dado bloco são incluídos, mas deixados vazios. A composição exata poderá ser atualizada em versões futuras para melhorar a qualidade da recuperação.
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}
Exemplos
Corrente com ai_parse_document
As seguintes cadeias ai_prep_search de exemplos podem ai_parse_document produzir blocos prontos para pesquisa a partir de documentos brutos armazenados num volume do Unity Catalog:
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;
Construir uma tabela de origem de pesquisa vetorial
O exemplo seguinte achata a saída em linhas individuais de blocos e escreve-as numa tabela Delta. A tabela pode então ser usada como fonte para um índice de Pesquisa Vetorial Databricks , usando chunk_to_embed como coluna de embedding e chunk_id como chave primária.
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;
As linhas resultantes têm o seguinte esquema:
| Nome da coluna | Tipo |
|---|---|
chunk_id |
STRING |
chunk_position |
INT |
chunk_content |
STRING |
chunk_to_embed |
STRING |
source_uri |
STRING |
Permitir a recuperação multimodal
Quando ai_parse_document é chamada com a imageOutputPath opção, as imagens da página renderizadas são guardadas num volume do Unity Catalog e o image_uri campo no array de pages cada bloco é preenchido. Estas referências de imagem podem ser encaminhadas para um modelo com capacidade de visão no momento da consulta para responder a perguntas que requerem contexto visual, como diagramas de blocos, gráficos ou tabelas que não estão totalmente representados no texto.
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;
Limitações
- A
ai_prep_searchfunção requer uma saída válidaai_parse_documentcomo entrada. Passar outrosVARIANTdados ou uma versão de esquema não suportada pode produzir resultados ou erros inesperados. - O tamanho máximo de entrada é consistente com o tamanho máximo de saída de
ai_parse_document.