다음을 통해 공유


ai_prep_search 함수

적용 대상:확인 표시 '예' Databricks SQL 확인 표시 '예' Databricks Runtime

중요합니다

이 기능은 베타 버전으로 제공됩니다. 작업 영역 관리자는 미리 보기 페이지에서 이 기능에 대한 액세스를 제어할 수 있습니다. Azure Databricks 미리 보기 관리 참조하세요.

이 함수는 ai_prep_search() 구조적 출력 ai_parse_document 을 RAG 벡터 검색 및 정보 검색 시스템에 최적화된 형식으로 변환합니다. 각 입력 문서에 대해 함수는 콘텐츠를 의미 체계 청크로 분할하고 문서 제목, 섹션 머리글, 페이지 참조와 같은 문서 수준 컨텍스트를 사용하여 각 청크를 보강하며 포함 가능한 표현을 생성합니다.

요구 사항

  • Databricks Runtime 18.2 이상.
  • 서버리스 컴퓨팅을 사용하는 경우 다음도 필요합니다.
    • 서버리스 환경 버전은 다음과 같은 VARIANT기능을 사용할 수 있으므로 3 이상으로 설정해야 합니다.
    • Python 또는 SQL을 사용해야 합니다. 추가 서버리스 기능 및 제한 사항은 서버리스 컴퓨팅 제한을 참조하세요.
  • ai_prep_search 함수는 Databricks Notebook, SQL 편집기, Databricks 워크플로, 작업 또는 Lakeflow Spark 선언적 파이프라인을 사용하여 사용할 수 있습니다.

문법

ai_prep_search(
    parsed VARIANT,
    [options MAP<STRING, STRING>]
) RETURNS VARIANT

Arguments

  • parsed VARIANT: 의 구조화된 출력을 나타내는 식입니다ai_parse_document.
  • options: 선택 사항 MAP<STRING, STRING>입니다. 지원되는 키:
    • 'version': 사용할 출력 스키마의 버전입니다.

Returns

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_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": {...}
}

중요합니다

함수 출력 스키마는 major.minor 형식을 사용하여 버전이 지정됩니다. Databricks는 진행 중인 연구에 따라 향상된 표현을 반영하도록 지원되거나 기본 버전을 업그레이드할 수 있습니다.

  • 부 버전 업그레이드는 이전 버전과 호환되며 새 필드만 도입할 수 있습니다.
  • 주 버전 업그레이드에는 필드 추가, 제거 또는 이름 바꾸기와 같은 주요 변경 내용이 포함될 수 있습니다.

chunk_to_embed 형식

chunk_to_embed 필드는 문서 수준 컨텍스트와 청크 콘텐츠를 결합하여 의미 체계 검색 중 검색 품질을 향상시킵니다. 형식은 다음과 같습니다.

메모

지정된 청크에 대한 값이 없는 필드는 포함되지만 비어 있습니다. 검색 품질을 개선하기 위해 정확한 컴퍼지션이 향후 버전에서 업데이트될 수 있습니다.

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}

예제

ai_parse_document 사용하여 연결

다음 예제에서는 Unity 카탈로그 볼륨에 저장된 원시 문서에서 검색 준비 청크를 생성하기 위해 연결 ai_prep_searchai_parse_document 합니다.

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;

벡터 검색 원본 테이블 빌드

다음 예제에서는 출력을 개별 청크 행으로 평면화하고 델타 테이블에 씁니다. 그런 다음, 포함 열 chunk_id 및 기본 키로 사용하여 chunk_to_embedDatabricks Vector Search 인덱스의 원본으로 테이블을 사용할 수 있습니다.

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;

결과 행에는 다음 스키마가 있습니다.

열 이름 유형
chunk_id STRING
chunk_position INT
chunk_content 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;

제한점

  • 함수에는 ai_prep_search 유효한 ai_parse_document 출력이 입력으로 필요합니다. 다른 VARIANT 데이터 또는 지원되지 않는 스키마 버전을 전달하면 예기치 않은 결과나 오류가 발생할 수 있습니다.
  • 최대 입력 크기는 최대 출력 크기와 일치합니다 ai_parse_document.