Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:
Databricks SQL
Databricks Runtime
Importante
Esse recurso está em Beta. Os administradores do workspace podem controlar o acesso a esse recurso na página Visualizações . Consulte Manage Azure Databricks visualizações.
A ai_prep_search() função transforma a saída estruturada em ai_parse_document um formato otimizado para sistemas de pesquisa de vetor RAG e recuperação de informações. Para cada documento de entrada, a função divide o conteúdo em partes semânticas, enriquece cada parte com contexto no nível do documento, como o título do documento, cabeçalhos de seção, referências de página e produz uma representação pronta para inserção.
Requisitos
- Databricks Runtime 18.2 ou superior.
- Se você estiver usando a computação sem servidor, o seguinte também será necessário:
- 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 obter 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
ai_prep_searchfunção está disponível usando notebooks do Databricks, editor SQL, fluxos de trabalho do Databricks, trabalhos ou Pipelines Declarativos do Lakeflow Spark.
Sintaxe
ai_prep_search(parsed [, options])
Argumentos
-
parsed: umaVARIANTexpressão que representa a saída estruturada deai_parse_document. -
options: um opcionalMAP<STRING, STRING>. Chaves com suporte:-
'version': a versão do esquema de saída a ser usado.
-
Devoluções
Um VARIANT bloco de documento que contém partes formatadas para indexação de pesquisa de vetor. 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_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": {...}
}
Importante
O esquema de saída da função é versionado usando um formato principal.secundária. O Databricks pode atualizar a versão com suporte ou padrão para refletir representações aprimoradas com base em pesquisas em andamento.
- 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 principais podem incluir alterações significativas, como adições de campo, remoções ou renomeações.
formato chunk_to_embed
O chunk_to_embed campo é uma única cadeia de caracteres criada por parte combinando o texto de parte bruta com o contexto no nível do documento para melhorar a qualidade da recuperação durante a pesquisa semântica.
A cadeia de caracteres é composta pelas seguintes partes:
-
Metadados do documento:
Document Title, ,Page Header,Page Footer,Section Header,Caption, ,Footnote.Page NumberExtraído diretamente da estrutura de documentos analisada. - Campos de documento descobertos por LLM: chave adicional: linhas de valor para campos de nível de documento descobertos automaticamente por uma LLM, como "Empresa", "Tipo de Documento", "Ano Fiscal", "ID do Paciente" ou "Número do Contrato". Os nomes de campo são escolhidos por documento pelo modelo e variam entre documentos.
- Frase de contexto do documento: uma única frase resumindo do que se trata o documento, gerada por uma LLM.
-
Conteúdo: o texto da parte bruta. Mesmo valor que o
chunk_to_retrievecampo da parte. - Resumo da tabela: uma breve parafrasea gerada por LLM do conteúdo da tabela. Para partes que contêm uma tabela, a função acrescenta este resumo da tabela e um conjunto de perguntas relacionadas à linguagem natural que a tabela pode responder.
- Perguntas relacionadas: perguntas em linguagem natural que a tabela é capaz de responder, usadas para melhorar o recall de recuperação para o conteúdo da tabela.
A cadeia de caracteres segue este modelo:
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}
Exemplo renderizado 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.
Observação
Os campos de metadados fixos são sempre renderizados com seu rótulo, com o valor deixado vazio quando não disponível. Os campos descobertos por LLM, a frase de contexto do documento, o resumo da tabela e as perguntas relacionadas são omitidos inteiramente quando não estão disponíveis ou não são aplicáveis. A composição exata pode ser atualizada em versões futuras para melhorar a qualidade da recuperação.
Exemplos
Encadear com ai_parse_document
O exemplo a seguir é encadeado ai_prep_searchai_parse_document para produzir partes prontas para pesquisa de documentos brutos armazenados em um volume do Catálogo do Unity:
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;
Criar uma tabela de origem de pesquisa de vetor
O exemplo a seguir nivela a saída em linhas de partes individuais e as grava em uma tabela Delta. Em seguida, a tabela pode ser usada como uma fonte para um índice de Pesquisa de IA do Databricks , usando chunk_to_embed como a coluna de inserção e chunk_id como a chave primária.
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;
As linhas resultantes têm o seguinte esquema:
| Nome da coluna | Tipo |
|---|---|
chunk_id |
STRING |
chunk_position |
INT |
chunk_to_retrieve |
STRING |
chunk_to_embed |
STRING |
source_uri |
STRING |
Habilitar a recuperação multi modal
Quando ai_parse_document é chamado com a opção, as imageOutputPath imagens de página renderizadas são salvas em um volume do Catálogo do Unity e o image_uri campo na matriz de pages cada parte é preenchido. Essas referências de imagem podem ser passadas para um modelo com capacidade de visão no momento da consulta para responder a perguntas que exigem contexto visual, como diagramas de bloco, gráficos ou tabelas que não estão totalmente representadas 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 saída válidaai_parse_documentcomo entrada. Passar outrosVARIANTdados ou uma versão de esquema sem suporte 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.