Elasticsearch에서 구조화된 문서에 대한 재귀 청크 구성하기

최적의 구조화된 문서 색인을 위해 청크 크기, 구분자 그룹, 사용자 정의 구분자 목록을 사용하여 Elasticsearch에서 재귀적 청크를 구성하는 방법을 알아보세요.

Elasticsearch가 처음이신가요? Elasticsearch 입문용 웨비나에 참여하세요. 지금 무료 클라우드 체험을 시작하거나, 내 기기에서 Elastic을 사용해 볼 수 있습니다.

8.16부터 사용자는 긴 문서를 의미론적 텍스트 필드로 수집할 때 사용되는 청킹 전략을 구성할 수 있습니다. 9.1 / 8.19 버전부터 정규식 목록을 사용하여 문서를 청크 처리하는 새로운 구성 가능한 재귀 청크 전략이 도입되었습니다. 청크의 목적은 긴 문서를 관련 콘텐츠를 캡슐화하는 섹션으로 분할하는 것입니다. 기존 전략은 단어/문장 단위로 텍스트를 분할하지만, 구조화된 형식으로 작성된 문서(예. 마크다운)에는 종종 일부 구분 문자열로 정의된 섹션 내에 관련 콘텐츠가 포함되어 있습니다(예 헤더). 이러한 유형의 문서에 대해 구조화된 문서의 형식을 활용하여 더 나은 청크를 만드는 재귀적 청크 전략을 소개합니다!

재귀적 청킹이란 무엇인가요?

재귀 청크는 패턴을 구분하는 제공된 섹션 목록을 반복하여 원하는 최대 청크 크기를 충족할 때까지 문서를 점진적으로 더 작은 세그먼트로 분할합니다.

재귀 청킹은 어떻게 구성하나요?

다음은 재귀 청킹을 위해 사용자가 설정할 수 있는 값입니다:

  • (필수) max_chunk_size: 청크의 최대 단어 수입니다.
  • 둘 중 하나입니다:
    • separators: 문서를 청크로 분할하는 데 사용할 정규식 문자열 패턴의 목록입니다.
    • separator_group: 특정 유형의 문서에 사용하도록 Elastic에서 정의한 기본 구분 기호 목록에 매핑할 문자열입니다. 현재 markdownplaintext 에서 사용할 수 있습니다.

재귀 청크는 어떻게 작동하나요?

입력 문서, max_chunk_size (단어로 측정), 구분 문자열 목록이 주어졌을 때 재귀 청킹을 수행하는 프로세스는 다음과 같습니다:

  1. 입력 문서가 이미 최대 청크 크기 내에 있는 경우 전체 입력에 걸친 단일 청크를 반환합니다.
  2. 구분 기호의 발생 빈도에 따라 텍스트를 잠재적인 청크로 분할합니다. 각 잠재적 청크에 대해:
    1. 잠재적 청크가 최대 청크 크기 이내인 경우 청크 목록에 추가하여 사용자에게 반환합니다.
    2. 그렇지 않으면 2단계부터 반복하여 잠재적 청크의 텍스트만 사용하고 목록의 다음 구분 기호를 사용하여 분할합니다. 더 이상 시도할 구분 기호가 남아 있지 않으면 문장 기반 청킹으로 돌아가세요.

재귀 청킹 구성 예시

청크 크기 외에도 재귀 청크의 주요 구성은 문서를 분할하는 데 사용할 구분 기호를 선택하는 것입니다. 어디서부터 시작해야 할지 잘 모르겠다면, Elasticsearch는 일반적인 사용 사례에 사용할 수 있는 몇 가지 기본 구분 기호 그룹을 제공합니다.

구분 기호 그룹 활용

구분 그룹을 사용하려면 청크 설정을 구성할 때 사용하려는 그룹의 이름을 입력하기만 하면 됩니다. 예를 들어

이렇게 하면 구분 기호 목록을 활용하는 재귀적 청크 전략이 제공됩니다 ["(?<!\\n)\\n\\n(?!\\n)", "(?<!\\n)\\n(?!\\n)")]. 이 방법은 일반적인 일반 텍스트 애플리케이션에서 잘 작동하며, 두 줄로 분할한 다음 한 줄로 분할합니다.

또한 구분 기호 목록을 활용할 수 있는 구분 기호 그룹 markdown 을 제공합니다:

이 구분 기호 목록은 일반적인 마크다운 사용 사례에 적합하며, 6개의 제목 수준과 섹션 구분 문자를 각각 분할할 수 있습니다.

리소스(추론 엔드포인트/시맨틱 텍스트 필드)를 만들 때 당시의 구분 기호 그룹에 해당하는 구분 기호 목록이 구성에 저장됩니다. 나중에 구분 기호 그룹이 업데이트되더라도 이미 생성된 리소스의 동작은 변경되지 않습니다.

사용자 지정 구분 기호 목록 활용

미리 정의된 구분 기호 그룹 중 하나가 사용 사례에 적합하지 않은 경우 필요에 맞는 사용자 지정 구분 기호 목록을 정의할 수 있습니다. 구분 기호 목록 내에 정규식을 입력할 수 있습니다. 다음은 사용자 지정 구분 기호로 구성된 청크 설정의 예입니다:

위의 청크 전략은 2개의 줄 바꿈 문자, 1개의 줄 바꿈 문자, 마지막으로 문자열 “<my-custom-separator>” 로 분할됩니다.

재귀 청크의 실제 사용 예시

재귀 청크가 실제로 작동하는 예를 살펴보겠습니다. 이 예에서는 상위 두 개의 헤더 수준을 사용하여 마크다운 문서를 분할하는 사용자 지정 구분 기호 목록과 함께 다음 청크 설정을 사용합니다:

청크가 없는 간단한 마크다운 문서를 살펴보겠습니다:

이제 위에서 정의한 청킹 설정을 사용하여 문서를 청킹해 보겠습니다:

참고: 각 청크(청크 3 제외)의 끝에 있는 줄 바꿈은 강조 표시되지 않지만 실제 청크 경계 내에 포함됩니다.

지금 바로 리커시브 청크를 시작하세요!

이 기능을 활용하는 방법에 대한 자세한 내용은 청크 설정 구성에 대한 문서를 참조하세요.

관련 콘텐츠

최첨단 검색 환경을 구축할 준비가 되셨나요?

충분히 고급화된 검색은 한 사람의 노력만으로는 달성할 수 없습니다. Elasticsearch는 여러분과 마찬가지로 검색에 대한 열정을 가진 데이터 과학자, ML 운영팀, 엔지니어 등 많은 사람들이 지원합니다. 서로 연결하고 협력하여 원하는 결과를 얻을 수 있는 마법 같은 검색 환경을 구축해 보세요.

직접 사용해 보세요