diff --git a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/SimpleVectorStoreContent.java b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/SimpleVectorStoreContent.java index b44389678d8..c284adeb915 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/SimpleVectorStoreContent.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/SimpleVectorStoreContent.java @@ -17,7 +17,6 @@ package org.springframework.ai.vectorstore; import java.util.Arrays; -import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Objects; @@ -100,22 +99,10 @@ public SimpleVectorStoreContent(String id, String text, Map meta this.id = id; this.text = text; - this.metadata = Collections.unmodifiableMap(new HashMap<>(metadata)); + this.metadata = Map.copyOf(metadata); this.embedding = Arrays.copyOf(embedding, embedding.length); } - /** - * Creates a new instance with an updated embedding vector. - * @param embedding the new embedding vector, must not be null - * @return a new instance with the updated embedding - * @throws IllegalArgumentException if embedding is null or empty - */ - public SimpleVectorStoreContent withEmbedding(float[] embedding) { - Assert.notNull(embedding, "embedding must not be null"); - Assert.isTrue(embedding.length > 0, "embedding vector must not be empty"); - return new SimpleVectorStoreContent(this.id, this.text, this.metadata, embedding); - } - public String getId() { return this.id; } diff --git a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/FilterExpressionBuilder.java b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/FilterExpressionBuilder.java index f7410c898c7..d3cb3c7c486 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/FilterExpressionBuilder.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/FilterExpressionBuilder.java @@ -49,7 +49,8 @@ * } * * - * This builder DSL mimics the common https://www.baeldung.com/hibernate-criteria-queries + * This builder DSL mimics the common + * Criteria Queries * syntax. * * @author Christian Tzolov diff --git a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/FilterExpressionTextParser.java b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/FilterExpressionTextParser.java index 7d5e332c269..a36f70c4053 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/FilterExpressionTextParser.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/FilterExpressionTextParser.java @@ -21,7 +21,6 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArrayList; -import java.util.stream.Collectors; import org.antlr.v4.runtime.ANTLRErrorStrategy; import org.antlr.v4.runtime.BailErrorStrategy; @@ -46,7 +45,7 @@ * * The vector-store agnostic, filter expression language is defined by a formal ANTLR4 * grammar (Filters.g4). The language looks and feels like a subset of the well known SQL - * WHERE filter expressions. For example you can use the parser like this: + * WHERE filter expressions. For example, you can use the parser like this: * *
{@code
  *
@@ -151,7 +150,7 @@ public Filter.Expression parse(String textFilterExpression) {
 			return filterExpression;
 		}
 		catch (ParseCancellationException e) {
-			var msg = this.errorListener.errorMessages.stream().collect(Collectors.joining());
+			var msg = String.join("", this.errorListener.errorMessages);
 			var rootCause = NestedExceptionUtils.getRootCause(e);
 			throw new FilterExpressionParseException(msg, rootCause);
 		}
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/PineconeFilterExpressionConverter.java b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/PineconeFilterExpressionConverter.java
index 64877fc24a5..5916d93d953 100644
--- a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/PineconeFilterExpressionConverter.java
+++ b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/PineconeFilterExpressionConverter.java
@@ -22,7 +22,7 @@
 
 /**
  * Converts {@link Expression} into Pinecone metadata filter expression format.
- * (https://docs.pinecone.io/docs/metadata-filtering)
+ * (Metadata filtering)
  *
  * @author Christian Tzolov
  */
@@ -58,7 +58,7 @@ private String getOperationSymbol(Expression exp) {
 	@Override
 	protected void doKey(Key key, StringBuilder context) {
 		var identifier = (hasOuterQuotes(key.key())) ? removeOuterQuotes(key.key()) : key.key();
-		context.append("\"" + identifier + "\": ");
+		context.append("\"").append(identifier).append("\": ");
 	}
 
 }
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/PrintFilterExpressionConverter.java b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/PrintFilterExpressionConverter.java
index 14d2d1216d5..93a705ff4cd 100644
--- a/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/PrintFilterExpressionConverter.java
+++ b/spring-ai-core/src/main/java/org/springframework/ai/vectorstore/filter/converter/PrintFilterExpressionConverter.java
@@ -29,7 +29,7 @@ public class PrintFilterExpressionConverter extends AbstractFilterExpressionConv
 
 	public void doExpression(Expression expression, StringBuilder context) {
 		this.convertOperand(expression.left(), context);
-		context.append(" " + expression.type() + " ");
+		context.append(" ").append(expression.type()).append(" ");
 		this.convertOperand(expression.right(), context);
 
 	}