Chunking
data를 Model이 다룰 단위로 쪼개는 작업, Spring AI에서는 ETL Pipeline에 포함된다. ETL doc
- 구성 요소
- resource: 나눌 원본 데이터
- document: 나눠진 데이터 (content + metadata)
- document reader
- resource를 List
로 변환
- resource를 List
- document transformer
- List
를 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);