chunking

Chunking

data를 Model이 다룰 단위로 쪼개는 작업, Spring AI에서는 ETL Pipeline에 포함된다. ETL doc

  • 구성 요소
    • resource: 나눌 원본 데이터
    • document: 나눠진 데이터 (content + metadata)
    • document reader
      • resource를 List로 변환
    • document transformer
      • List를 List로 변환

Example

  • MarkdownDocumentReader: document reader의 구현체
String content; // Markdown 형식으로 작성된 String

MarkdownDocumentReaderConfig config = MarkdownDocumentReaderConfig.builder()
        .withHorizontalRuleCreateDocument(true)
        .withIncludeBlockquote(true)
        .withIncludeCodeBlock(true)
        .build();

MarkdownDocumentReader markdownReader = new MarkdownDocumentReader(new ByteArrayResource(content.getBytes()), config);

return markdownReader.read();
  • TokenTextSplitter: document transformer의 구현체
int chunkSize = 400;
int minChunkSizeChars = 50;
int minChunkLengthToEmbed = 10;
int maxNumChunks = 100;
boolean keepSeparator = true;

TokenTextSplitter textSplitter = TokenTextSplitter(
        chunkSize,
        minChunkSizeChars,
        minChunkLengthToEmbed,
        maxNumChunks,
        keepSeparator
);
documentList = textSplitter.apply(documentList);