Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:
Databricks SQL
Databricks Runtime
Это важно
Эта функция доступна в бета-версии. Администраторы рабочей области могут управлять доступом к этой функции на странице "Предварительные версии ". См. предварительные версии Manage Azure Databricks.
Эта функция преобразует содержимое ai_prep_search() документа в формат, оптимизированный для систем векторного поиска и информационного поиска RAG. Он принимает либо структурированный вывод, ai_parse_document либо обычный текст и разметочный STRING контент. Для каждого входного документа функция разбивает содержимое на семантические блоки, расширяет каждый блок с контекстом уровня документа, таким как название документа, заголовки разделов, ссылки на страницы и создает представление, готовое для внедрения.
Безопасность данных
Данные документа обрабатываются в периметре безопасности Databricks. Databricks не хранит параметры, передаваемые в вызовы функций AI, но сохраняет детали запуска метаданных, такие как используемая версия Databricks Runtime.
Требования
- Databricks Runtime 18.2 или более поздней версии.
- При использовании бессерверных вычислений также требуется следующее:
- Версия бессерверной среды должна иметь значение 3 или более поздней, так как это обеспечивает такие функции, как
VARIANT. - Необходимо использовать Python или SQL. Дополнительные бессерверные функции и ограничения см. в разделе об ограничениях бессерверных вычислений.
- Версия бессерверной среды должна иметь значение 3 или более поздней, так как это обеспечивает такие функции, как
- Эта
ai_prep_searchфункция доступна с помощью записных книжек Databricks, редактора SQL, рабочих процессов, заданий или конвейеров Lakeflow.
Синтаксис
ai_prep_search(parsed [, options])
Аргументы
-
parsed: Документируйте содержимое для подготовки к поиску. Один из следующих продуктов:- Выражение
VARIANT, представляющее структурированный выход .ai_parse_document - Выражение, содержащее простой текст или markdown
STRING. JSON-строки, не являющиеся структурированнымиai_parse_document(или связанными) выводами, рассматриваются как буквальный текст и фрагментируются одинаково.
- Выражение
-
options: необязательныйMAP<STRING, STRING>. Поддерживаемые ключи:-
'version': версия используемой выходной схемы.
-
Возвраты
Блоки VARIANT документа, отформатированные для индексирования векторного поиска. Каждая строка в выходных данных представляет один входной документ.
Схема выходных данных:
{
"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": {...}
}
Это важно
Схема выходных данных функции версионируется с использованием формата основной.второстепенной. Databricks может обновить поддерживаемую или по умолчанию версию, чтобы отразить улучшенные представления на основе текущих исследований.
- Дополнительные обновления версий являются обратно совместимыми и могут вводить только новые поля.
- Обновления основных версий могут включать критические изменения, такие как дополнения полей, удаление или переименование.
формат chunk_to_embed
Поле chunk_to_embed является одной строкой, созданной на блок, путем объединения необработанного текста блока с контекстом уровня документа для улучшения качества извлечения во время семантического поиска.
Строка состоит из следующих частей:
-
Метаданные документа:
Document Title,Page Header,Page Footer,Section HeaderCaption, ,Footnote.Page NumberИзвлекается непосредственно из структуры синтаксического документа. - Поля документа, обнаруженные LLM: дополнительный ключ: строки значений для полей уровня документа автоматически обнаруженные LLM, такие как "Компания", "Тип документа", "Финансовый год", "Идентификатор пациента" или "Номер контракта". Имена полей выбираются для каждого документа моделью и различаются в разных документах.
- Предложение контекста документа: одно предложение, в котором приводится сводка сведений о документе, созданном LLM.
-
Содержимое: необработанный фрагмент текста. То же значение, что
chunk_to_retrieveи поле для блока. - Сводка таблицы: короткий парафраз, созданный LLM, содержимого оглавлений. Для блоков, содержащих таблицу, функция добавляет эту сводку таблицы и набор связанных вопросов естественного языка, которые таблица может ответить.
- Связанные вопросы: вопросы естественного языка, которые таблица может отвечать, используется для улучшения отзыва для содержимого таблицы.
Строка следует этому шаблону:
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}
Пример отрисовки 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.
Замечание
Поля фиксированных метаданных всегда отображаются с их меткой, при этом значение остается пустым, если недоступно. Обнаруженные llM поля, предложение контекста документа, сводка таблицы и связанные вопросы опущены полностью, если они недоступны или не применимы. Точную композицию можно обновить в будущих версиях, чтобы улучшить качество извлечения.
Примеры
Подготовьте обычный текст или markdown
Следующий пример готовит обычный текст STRING для индексации поиска:
SELECT ai_prep_search(
'Quarterly revenue grew twenty percent year over year.',
map('version', '2.0')
);
Цепочка с ai_parse_document
В следующем примере показано ai_prep_search , как создать блоки, готовые к поиску, ai_parse_document из необработанных документов, хранящихся в томе каталога 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;
Создание исходной таблицы векторного поиска
В следующем примере выходные данные объединяются в отдельные строки блоков и записываются в таблицу Delta. Затем таблицу можно использовать в качестве источника для индекса поиска ИИ Databricks , используя chunk_to_embed в качестве столбца внедрения и chunk_id в качестве первичного ключа.
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;
Результирующая строка имеет следующую схему:
| Имя столбца | Тип |
|---|---|
chunk_id |
STRING |
chunk_position |
INT |
chunk_to_retrieve |
STRING |
chunk_to_embed |
STRING |
source_uri |
STRING |
Включение много модального извлечения
При ai_parse_document вызове с imageOutputPath параметром отрисованные изображения страниц сохраняются в томе каталога Unity, а image_uri поле в массиве блоков pages заполняется. Эти ссылки на изображения можно передать в модель с поддержкой визуального зрения во время запроса, чтобы ответить на вопросы, требующие визуального контекста, таких как блок-схемы, диаграммы или таблицы, которые не полностью представлены в тексте.
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;
Ограничения
- Когда вы проходите
VARIANT, используйте допустимыйai_parse_documentвыход. Передача другихVARIANTданных или неподдерживаемой версии схемы может привести к непредвиденным результатам или ошибкам. - Когда вы сдаёте
STRING, используйте обычный текст или markdown. Строки JSON, которые не являются структурированным разбором, индексируются как буквальный текст, а не отклоняются. - Максимальный размер входных данных соответствует максимальному размеру выходных
ai_parse_documentданных.