Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция
Область применения: Databricks SQL
Databricks Runtime
Это важно
Эта функция доступна в бета-версии.
Функция ai_parse_document()
вызывает модель генерированного искусственного интеллекта из API модели Databricks Foundation для извлечения структурированного содержимого из неструктурированных документов.
Требования
Это важно
Модель, обеспечивающая эту функцию, является частью семейства моделей Ламы и доступна через API Mosaic AI Model Serving Foundation. Для получения информации о том, какие модели Llama доступны на Databricks и о лицензионных условиях и политиках, регулирующих использование этих моделей, см. раздел Лицензии и условия разработчика применимых моделей. Если модели появляются в будущем, которые лучше работают в соответствии с внутренними тестами Databricks, Databricks может изменить модели и обновить документацию.
- Рабочая область в одном из поддерживаемых регионов:
eastus
, ,eastus2
westus
илиcentralus
northcentralus
. - Включено бета-версия агента ИИ Мозаики.
- Databricks Runtime 16.4 LTS или более поздней версии.
- При использовании бессерверных вычислений также требуется следующее:
- Должен быть совместим с Databricks Runtime 16.4 или более поздней версии.
- Версия бессерверной среды должна иметь значение 2, так как это обеспечивает такие
VARIANT
функции. - Должен использовать Python или SQL. Дополнительные бессерверные функции и ограничения см. в разделе об ограничениях бессерверных вычислений.
- Эта
ai_parse_document
функция доступна с помощью записных книжек Databricks, редактора SQL, рабочих процессов Databricks, заданий или декларативных конвейеров Lakeflow. - Сведения о выставлении счетов см. на странице цен на бета-продукты .
Безопасность данных
Данные документа обрабатываются в периметре безопасности Databricks. Databricks не сохраняет параметры, передаваемые в ai_parse_document function
вызовы, но сохраняет сведения о выполнении метаданных, например используемую версию databricks Runtime.
Поддерживаемые форматы входных файлов
Входные файлы данных должны храниться в виде BLOB-данных в байтах, то есть в столбце двоичного типа в фрейме данных или в таблице Delta. Если исходные документы хранятся в томе каталога Unity, столбец двоичного типа можно создать с помощью средства чтения формата Spark binaryFile
.
Поддерживаются следующие форматы файлов:
- Формат pdf
- JPG / JPEG
- PNG
Синтаксис
ai_parse_document(content)
ai_parse_document(content, Map("version" -> "1.0"))
Аргументы
-
content
BINARY
: выражение, представляющее входные данные массива байтов. -
version
: версия выходной схемы, поддерживаемая: "1.0".
Возвраты
Функция ai_parse_document
извлекает метаданные контекстного макета из документа, например page_number
, header
. footer
Он также извлекает содержимое документа, например текстовые абзацы или таблицы, и представляет его в markdown. Выходные данные являются типом VARIANT
.
Это важно
Схема выходных данных функции версионируется с использованием основного и дополнительного формата, например "1.0". Databricks может обновить поддерживаемую или по умолчанию версию, чтобы отразить улучшенные представления на основе текущих исследований.
- Дополнительные обновления версий являются обратно совместимыми и могут вводить только новые поля.
- Обновления основных версий могут включать критические изменения, такие как дополнения полей, удаление или переименование.
Ниже приведена схема выходных данных:
{
"document": {
"pages": [
{
"id": INT, // 0-based page index
"page_number": STRING, // Extracted page number (NULL if not found)
"header": STRING, // Extracted page header (NULL if not found)
"footer": STRING, // Extracted page footer (NULL if not found)
"content": STRING // Text content (markdown) of the entire page
}
],
"elements": [
{
"id": INT, // 0-based element index
"type": STRING, // Supported: text, table, figure
"content": STRING, // Text content (markdown) of the target element
"page_id": INT // 0-based page index where the element appears
}
],
},
"corrupted_data": [
{
"malformed_response": STRING // The response in malformed json format
"page_id": INT // 0-based page index
}
],
"error_status": [
{
"error_message": STRING // The detailed error message
"page_id": INT // 0-based page index
}
],
"metadata": {
"version": STRING, // The version of the output schema
"backend_id": STRING // The backend id where the document is parsed
}
}
Примеры
В следующем примере используется ai_parse_document
для извлечения макетов документов в качестве VARIANT
выходных данных.
SQL
SELECT
path,
ai_parse_document(content)
FROM READ_FILES('/Volumes/path/to/source/file.pdf', format => 'binaryFile');
Питон
from pyspark.sql.functions import *
df = spark.read.format("binaryFile") \
.load("/Volumes/path/to/source/file.pdf") \
.withColumn(
"parsed",
ai_parse_document("content"))
display(df)
язык программирования Scala
import org.apache.spark.sql.functions._
val df = spark.read.format("binaryFile")
.load("/Volumes/path/to/source/file.pdf")
.withColumn(
"parsed",
ai_parse_document($"content"))
display(df)
В следующем примере используется ai_parse_document
для разделения каждого поля верхнего уровня выходных данных, например, document.pages
, document.elements
, corrupted_data
, error_status
и metadata
в отдельные столбцы.
SQL
WITH corpus AS (
SELECT
path,
ai_parse_document(content) AS parsed
FROM
READ_FILES('/Volumes/path/to/source/file.pdf', format => 'binaryFile')
)
SELECT
path,
parsed:document:pages,
parsed:document:elements,
parsed:corrupted_data,
parsed:error_status,
parsed:metadata
FROM corpus;
Питон
from pyspark.sql.functions import *
df = spark.read.format("binaryFile") \
.load("/Volumes/path/to/source/file.pdf") \
.withColumn(
"parsed",
ai_parse_document("content")) \
.withColumn(
"parsed_json",
parse_json(col("parsed").cast("string"))) \
.selectExpr(
"path",
"parsed_json:document:pages",
"parsed_json:document:elements",
"parsed_json:corrupted_data",
"parsed_json:error_status",
"parsed_json:metadata")
display(df)
язык программирования Scala
import com.databricks.sql.catalyst.unstructured.DocumentParseResultV1_0
import org.apache.spark.sql.functions._
val df = spark.read.format("binaryFile")
.load("/Volumes/path/to/source/file.pdf")
.withColumn(
"parsed",
ai_parse_document($"content").cast(DocumentParseResultV1_0.SCHEMA))
.select(
$"path",
$"parsed.*")
display(df)
Ограничения
- Хотя Databricks постоянно работает над улучшением всех его возможностей, LLM являются новыми технологиями и могут привести к ошибкам.
- Функция
ai_parse_document
может занять некоторое время для извлечения содержимого документа при сохранении структурных сведений, особенно для документов, содержащих очень плотное содержимое или содержимое с низким разрешением. В некоторых случаях для выполнения функции может потребоваться некоторое время, или она может игнорировать содержимое. Databricks постоянно работает над улучшением задержки. - См. поддерживаемые форматы входных файлов. Databricks приветствует отзывы о том, какие дополнительные форматы наиболее важны для вашей организации.
- Настройка модели, которая используется в
ai_parse_document
, или использование модели, предоставленной клиентом дляai_parse_document
, не поддерживается. - Базовая модель может не работать оптимально при работе с изображениями с текстом из не латинских алфавитов, таких как японский или корейский.
- Документы с цифровыми подписями могут не обрабатываться точно.