diff --git a/spring-ai-core/src/main/java/org/springframework/ai/transformer/splitter/TextSplitter.java b/spring-ai-core/src/main/java/org/springframework/ai/transformer/splitter/TextSplitter.java index 0b59995be..9c5f0671b 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/transformer/splitter/TextSplitter.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/transformer/splitter/TextSplitter.java @@ -53,26 +53,27 @@ public abstract class TextSplitter implements DocumentTransformer { private List doSplitDocuments(List documents) { List texts = new ArrayList<>(); - Map metadata = new HashMap<>(); + List> metadataList = new ArrayList<>(); List formatters = new ArrayList<>(); for (Document doc : documents) { texts.add(doc.getContent()); - metadata.putAll(doc.getMetadata()); + metadataList.add(doc.getMetadata()); formatters.add(doc.getContentFormatter()); } - return createDocuments(texts, formatters, metadata); + return createDocuments(texts, formatters, metadataList); } private List createDocuments(List texts, List formatters, - Map metadata) { + List> metadataList) { // Process the data in a column oriented way and recreate the Document List documents = new ArrayList<>(); for (int i = 0; i < texts.size(); i++) { String text = texts.get(i); + Map metadata = metadataList.get(i); List chunks = splitText(text); if (chunks.size() > 1) { logger.info("Splitting up document into " + chunks.size() + " chunks.");