From 6753e242e8f9fa5dfc8ee239ba2add6c1c2b6855 Mon Sep 17 00:00:00 2001 From: Ricken Bazolo Date: Mon, 1 Apr 2024 02:41:36 +0200 Subject: [PATCH] Fixing metadata for text splitting --- .../ai/transformer/splitter/TextSplitter.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) 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.");