SPLIT_TEXT_MARKDOWN_HEADER (SNOWFLAKE.CORTEX)¶
SPLIT_TEXT_MARKDOWN_HEADER 함수는 마크다운 형식의 문서를 헤더 수준에 따라 정형 텍스트 청크로 분할합니다. 이 함수는 오브젝트의 배열을 반환하며, 각 오브젝트에 텍스트 청크와 해당 청크가 속한 관련 헤더가 포함됩니다.
이 함수는 임베딩, RAG(검색 증강 생성) 또는 검색 인덱싱을 위해 내용을 청크할 때 문서 구조를 보존하는 데 유용합니다.
이 함수는 먼저 지정된 마크다운 헤더를 사용하여 입력 텍스트를 분할한 다음, 기본 일반 텍스트 구분 기호(예: ["nn", "n", " ", ""]
)를 통해 각 세그먼트를 재귀적으로 분할하여 원하는 크기의 청크를 생성합니다.
구문¶
SNOWFLAKE.CORTEX.SPLIT_TEXT_MARKDOWN_HEADER (
'<text_to_split>',
'<headers_to_split_on>',
<chunk_size>,
[ <overlap> ]
)
인자¶
필수:
'text_to_split'
분할할 마크다운 형식의 문자열입니다.
'headers_to_split_on'
키는 마크다운 헤더 구문이고(예:
#
,##
) 값은 청크에 레이블을 지정하기 위한 메타데이터 필드 이름(예:header_1
,header_2
)인 키-값 지도입니다. 예:{ "#": "header_1", "##": "header_2" }
이 구성은
#
및##
헤더에서 문서를 분할합니다. 출력에서header_1
및header_2
필드에는 해당 헤더 텍스트 값이 포함됩니다.chunk_size
각 청크의 최대 문자 수를 지정하는 정수입니다. 이 값은 0보다 커야 합니다.
선택 사항:
overlap
연속된 청크 사이에 겹칠 문자 수를 지정하는 정수입니다. 제공되지 않으면 기본값은 0입니다.
중첩은 청크 전체에서 컨텍스트를 유지하는 데 유용하며, 이를 통해 임베딩 및 검색 작업의 성능을 개선할 수 있습니다.
반환¶
오브젝트의 배열을 반환합니다. 각 오브젝트의 구조는 다음과 같습니다.
chunk
: 추출된 텍스트가 포함된 문자열입니다.headers
: 청크가 중첩된 마크다운 헤더 값이 포함된 사전입니다. 키는headers_to_split_on
지도에 제공된 키와 일치합니다.
알려진 제한 사항¶
이 미리 보기에서는 오류 메시지가 난해할 수 있습니다. 문제가 발생하면 인자가 유효하고 형식이 올바른지 확인합니다.
예¶
간단한 사용법¶
다음 예제에서는 두 #
및 ##
헤더에서 마크다운 문자열을 분할하고, 최대 12자의 청크를 생성하고, 청크 사이에 5자 중복을 적용합니다.
SELECT SNOWFLAKE.CORTEX.SPLIT_TEXT_MARKDOWN_HEADER(
'# HEADER 1\nthis is text in header 1\n## HEADER 2\nthis is a subheading',
OBJECT_CONSTRUCT('#', 'header_1', '##', 'header_2'),
12,
5
);
[
{
"chunk": "this is text",
"headers": {
"header_1": "HEADER 1"
}
},
{
"chunk": "text in",
"headers": {
"header_1": "HEADER 1"
}
},
{
"chunk": "in header 1",
"headers": {
"header_1": "HEADER 1"
}
},
{
"chunk": "this is a",
"headers": {
"header_1": "HEADER 1",
"header_2": "HEADER 2"
}
},
{
"chunk": "subheading",
"headers": {
"header_1": "HEADER 1",
"header_2": "HEADER 2"
}
}
]
마크다운 형식을 지정하고 결과를 행으로 플랫화하는 예제¶
다음 예제는 각 행에 짧은 마크다운 문서가 포함된 테이블 :code:`markdown_docs`를 만든 다음, SPLIT_TEXT_MARKDOWN_HEADER 함수를 호출해 마크다운 헤더 ‘#’ 및 ‘##’에 있는 각 문서를 분할합니다. 이 함수는 각 세그먼트를 각각 20자씩의 청크로 분할하며, 청크 사이에는 5자가 겹칩니다.
CREATE OR REPLACE TABLE markdown_docs (doc VARCHAR);
INSERT INTO markdown_docs VALUES
('# Product Overview\nOur system is a high-performance data processing engine.\n\n## Architecture\nIt uses a distributed design optimized for analytics.\n\n## Key Benefits\n- Scalable\n- Cost-efficient\n- Secure'),
('# User Guide\nThis guide describes how to install and use the product.\n\n## Installation\nFollow the steps below to install.\n\n## Usage\nOnce installed, use the CLI or UI for operations.'),
('# FAQ\nHere are answers to commonly asked questions.\n\n## Pricing\nWe offer flexible pricing models.\n\n## Support\nContact our 24/7 support team anytime.');
SELECT
c.value['chunk']::varchar as chunk,
c.value['headers']::object as headers,
FROM
markdown_docs,
LATERAL FLATTEN(
SNOWFLAKE.CORTEX.SPLIT_TEXT_MARKDOWN_HEADER(
doc,
OBJECT_CONSTRUCT('#', 'header_1', '##', 'header_2'),
20,
5
)
) c;