You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2025/12/11 08:51:23 UTC

(camel) branch aws-s3-vector created (now a9a5deead3c3)

This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a change to branch aws-s3-vector
in repository https://gitbox.apache.org/repos/asf/camel.git


      at a9a5deead3c3 CAMEL-22249 - Create a Camel AWS S3 Vectors component

This branch includes the following new commits:

     new a9a5deead3c3 CAMEL-22249 - Create a Camel AWS S3 Vectors component

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(camel) 01/01: CAMEL-22249 - Create a Camel AWS S3 Vectors component

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch aws-s3-vector
in repository https://gitbox.apache.org/repos/asf/camel.git

commit a9a5deead3c3bfacd9f303cf8386643c04f2e727
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Dec 11 09:50:29 2025 +0100

    CAMEL-22249 - Create a Camel AWS S3 Vectors component
    
    Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
 bom/camel-bom/pom.xml                              |    5 +
 catalog/camel-allcomponents/pom.xml                |    5 +
 .../org/apache/camel/catalog/components.properties |    1 +
 .../camel/catalog/components/aws2-s3-vectors.json  |  129 +
 components/camel-aws/camel-aws2-s3-vectors/pom.xml |   79 +
 .../AWS2S3VectorsComponentConfigurer.java          |  243 ++
 .../s3vectors/AWS2S3VectorsEndpointConfigurer.java |  320 +++
 .../s3vectors/AWS2S3VectorsEndpointUriFactory.java |  122 +
 .../component/aws2/s3vectors/aws2-s3-vectors.json  |  129 +
 .../services/org/apache/camel/component.properties |    7 +
 .../org/apache/camel/component/aws2-s3-vectors     |    2 +
 .../camel/configurer/aws2-s3-vectors-component     |    2 +
 .../camel/configurer/aws2-s3-vectors-endpoint      |    2 +
 .../camel/urifactory/aws2-s3-vectors-endpoint      |    2 +
 .../src/main/docs/aws2-s3-vectors-component.adoc   |  232 ++
 .../aws2/s3vectors/AWS2S3VectorsComponent.java     |   76 +
 .../aws2/s3vectors/AWS2S3VectorsConfiguration.java |  409 +++
 .../aws2/s3vectors/AWS2S3VectorsConstants.java     |   96 +
 .../aws2/s3vectors/AWS2S3VectorsConsumer.java      |  271 ++
 .../aws2/s3vectors/AWS2S3VectorsEndpoint.java      |  145 ++
 .../aws2/s3vectors/AWS2S3VectorsOperations.java    |   38 +
 .../aws2/s3vectors/AWS2S3VectorsProducer.java      |  521 ++++
 .../client/AWS2CamelS3VectorsInternalClient.java   |   32 +
 .../client/AWS2S3VectorsClientFactory.java         |   50 +
 .../impl/AWS2S3VectorsClientIAMOptimizedImpl.java  |   93 +
 ...AWS2S3VectorsClientIAMProfileOptimizedImpl.java |  110 +
 .../impl/AWS2S3VectorsClientSessionTokenImpl.java  |  110 +
 .../impl/AWS2S3VectorsClientStandardImpl.java      |  109 +
 .../aws2/s3vectors/AWS2S3VectorsProducerTest.java  |  104 +
 .../integration/S3VectorsComponentManualIT.java    |  444 ++++
 components/camel-aws/pom.xml                       |    1 +
 .../org/apache/camel/main/components.properties    |    1 +
 .../ROOT/examples/json/aws2-s3-vectors.json        |    1 +
 docs/components/modules/ROOT/nav.adoc              |    1 +
 .../ROOT/pages/aws2-s3-vectors-component.adoc      |    1 +
 .../component/ComponentsBuilderFactory.java        |   14 +
 .../dsl/Aws2S3VectorsComponentBuilderFactory.java  |  693 +++++
 .../builder/endpoint/EndpointBuilderFactory.java   |    1 +
 .../camel/builder/endpoint/EndpointBuilders.java   |    1 +
 .../builder/endpoint/StaticEndpointBuilders.java   |   42 +
 .../dsl/AWS2S3VectorsEndpointBuilderFactory.java   | 2696 ++++++++++++++++++++
 .../camel-component-known-dependencies.properties  |    1 +
 parent/pom.xml                                     |    5 +
 .../apache/camel/maven/packaging/MojoHelper.java   |    3 +-
 44 files changed, 7348 insertions(+), 1 deletion(-)

diff --git a/bom/camel-bom/pom.xml b/bom/camel-bom/pom.xml
index 145c3004fc29..1039dcbbec38 100644
--- a/bom/camel-bom/pom.xml
+++ b/bom/camel-bom/pom.xml
@@ -226,6 +226,11 @@
         <artifactId>camel-aws2-s3</artifactId>
         <version>4.17.0-SNAPSHOT</version>
       </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
+        <artifactId>camel-aws2-s3-vectors</artifactId>
+        <version>4.17.0-SNAPSHOT</version>
+      </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
         <artifactId>camel-aws2-ses</artifactId>
diff --git a/catalog/camel-allcomponents/pom.xml b/catalog/camel-allcomponents/pom.xml
index 2e2d5b049ca2..8985d6e5a6bc 100644
--- a/catalog/camel-allcomponents/pom.xml
+++ b/catalog/camel-allcomponents/pom.xml
@@ -226,6 +226,11 @@
             <artifactId>camel-aws2-s3</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-aws2-s3-vectors</artifactId>
+            <version>${project.version}</version>
+        </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-aws2-ses</artifactId>
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties
index cbe2a84f030b..9c4ed8b18c14 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties
@@ -30,6 +30,7 @@ aws2-mq
 aws2-msk
 aws2-redshift-data
 aws2-s3
+aws2-s3-vectors
 aws2-ses
 aws2-sns
 aws2-sqs
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-s3-vectors.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-s3-vectors.json
new file mode 100644
index 000000000000..f3eb10c49697
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-s3-vectors.json
@@ -0,0 +1,129 @@
+{
+  "component": {
+    "kind": "component",
+    "name": "aws2-s3-vectors",
+    "title": "AWS S3 Vectors",
+    "description": "Store and query vector embeddings using AWS S3 Vectors with similarity search.",
+    "deprecated": false,
+    "firstVersion": "4.17.0",
+    "label": "cloud,ai",
+    "javaType": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsComponent",
+    "supportLevel": "Preview",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-aws2-s3-vectors",
+    "version": "4.17.0-SNAPSHOT",
+    "scheme": "aws2-s3-vectors",
+    "extendsScheme": "",
+    "syntax": "aws2-s3-vectors:\/\/vectorBucketName",
+    "async": false,
+    "api": false,
+    "consumerOnly": false,
+    "producerOnly": false,
+    "lenientProperties": false,
+    "browsable": false,
+    "remote": true
+  },
+  "componentProperties": {
+    "configuration": { "index": 0, "kind": "property", "displayName": "Configuration", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "deprecated": false, "autowired": false, "secret": false, "description": "The component configuration" },
+    "dataType": { "index": 1, "kind": "property", "displayName": "Data Type", "group": "common", "label": "", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "float32", "float16" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "float32", "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The data type of the vector. Options: float32,  [...]
+    "distanceMetric": { "index": 2, "kind": "property", "displayName": "Distance Metric", "group": "common", "label": "", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "cosine", "euclidean", "dot-product" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "cosine", "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The distance metric  [...]
+    "overrideEndpoint": { "index": 3, "kind": "property", "displayName": "Override Endpoint", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Set the need for overriding the endpoint. This option needs to be used in c [...]
+    "region": { "index": 4, "kind": "property", "displayName": "Region", "group": "common", "label": "", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "ap-south-2", "ap-south-1", "eu-south-1", "eu-south-2", "us-gov-east-1", "me-central-1", "il-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "eu-central-2", "eu-isoe-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northea [...]
+    "similarityThreshold": { "index": 5, "kind": "property", "displayName": "Similarity Threshold", "group": "common", "label": "", "required": false, "type": "number", "javaType": "java.lang.Float", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The minimum similarity threshold for results" },
+    "topK": { "index": 6, "kind": "property", "displayName": "Top K", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 10, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The number of top similar vectors to return in a query" },
+    "uriEndpointOverride": { "index": 7, "kind": "property", "displayName": "Uri Endpoint Override", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Set the overriding uri endpoint. This option needs to be used in combination with o [...]
+    "vectorDimensions": { "index": 8, "kind": "property", "displayName": "Vector Dimensions", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1536, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The dimensions of the vector embeddings (default: 1536, which is t [...]
+    "vectorIndexName": { "index": 9, "kind": "property", "displayName": "Vector Index Name", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The name of the vector index" },
+    "bridgeErrorHandler": { "index": 10, "kind": "property", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions (if possible) occurred while the Camel consumer is trying to pickup incoming messages, or the lik [...]
+    "consumerMetadataFilter": { "index": 11, "kind": "property", "displayName": "Consumer Metadata Filter", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Optional metadata filter for the consumer to filter vectors during [...]
+    "consumerQueryVector": { "index": 12, "kind": "property", "displayName": "Consumer Query Vector", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The query vector to use for the consumer to poll for similar vectors. Sp [...]
+    "delay": { "index": 13, "kind": "property", "displayName": "Delay", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 500, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Milliseconds before the next poll for the consumer" },
+    "deleteAfterRead": { "index": 14, "kind": "property", "displayName": "Delete After Read", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Delete vectors after they have been consumed" },
+    "maxMessagesPerPoll": { "index": 15, "kind": "property", "displayName": "Max Messages Per Poll", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 10, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The maximum number of messages to consume per poll for the consumer" },
+    "lazyStartProducer": { "index": 16, "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fai [...]
+    "operation": { "index": 17, "kind": "property", "displayName": "Operation", "group": "producer", "label": "producer", "required": false, "type": "enum", "javaType": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsOperations", "enum": [ "putVectors", "queryVectors", "deleteVectors", "getVectors", "createVectorBucket", "deleteVectorBucket", "listVectorBuckets", "describeVectorBucket", "createVectorIndex", "deleteVectorIndex", "listVectorIndexes", "describeVectorIndex" ], "depre [...]
+    "autowiredEnabled": { "index": 18, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching  [...]
+    "s3VectorsClient": { "index": 19, "kind": "property", "displayName": "S3 Vectors Client", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "software.amazon.awssdk.services.s3vectors.S3VectorsClient", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Reference to a so [...]
+    "healthCheckConsumerEnabled": { "index": 20, "kind": "property", "displayName": "Health Check Consumer Enabled", "group": "health", "label": "health", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Used for enabling or disabling all consumer based health checks from this component" },
+    "healthCheckProducerEnabled": { "index": 21, "kind": "property", "displayName": "Health Check Producer Enabled", "group": "health", "label": "health", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Used for enabling or disabling all producer based health checks from this component. Notice: Camel has by default disabled all producer based health-checks. You can turn on produce [...]
+    "proxyHost": { "index": 22, "kind": "property", "displayName": "Proxy Host", "group": "proxy", "label": "proxy", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "To define a proxy host when instantiating the S3 Vectors client" },
+    "proxyPort": { "index": 23, "kind": "property", "displayName": "Proxy Port", "group": "proxy", "label": "proxy", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "To define a proxy port when instantiating the S3 Vectors client" },
+    "proxyProtocol": { "index": 24, "kind": "property", "displayName": "Proxy Protocol", "group": "proxy", "label": "proxy", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.core.Protocol", "enum": [ "HTTP", "HTTPS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "To define a proxy p [...]
+    "accessKey": { "index": 25, "kind": "property", "displayName": "Access Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Amazon AWS Access Key" },
+    "profileCredentialsName": { "index": 26, "kind": "property", "displayName": "Profile Credentials Name", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "If using a profile credentials provider, this parameter will set t [...]
+    "secretKey": { "index": 27, "kind": "property", "displayName": "Secret Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Amazon AWS Secret Key" },
+    "sessionToken": { "index": 28, "kind": "property", "displayName": "Session Token", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Amazon AWS Session Token used when the user needs to assume an IAM role" },
+    "trustAllCertificates": { "index": 29, "kind": "property", "displayName": "Trust All Certificates", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "If we want to trust all certificates in case of overrid [...]
+    "useDefaultCredentialsProvider": { "index": 30, "kind": "property", "displayName": "Use Default Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Set whether the S3 Vectors client sh [...]
+    "useProfileCredentialsProvider": { "index": 31, "kind": "property", "displayName": "Use Profile Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Set whether the S3 Vectors client sh [...]
+    "useSessionCredentials": { "index": 32, "kind": "property", "displayName": "Use Session Credentials", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Set whether the S3 Vectors client should expect to us [...]
+  },
+  "headers": {
+    "CamelAwsS3VectorsOperation": { "index": 0, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The operation to perform", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#OPERATION" },
+    "CamelAwsS3VectorsVectorBucketName": { "index": 1, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name of the vector bucket which will be used for the current operation", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#VECTOR_BUCKET_NAME" },
+    "CamelAwsS3VectorsVectorIndexName": { "index": 2, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name of the vector index which will be used for the current operation", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#VECTOR_INDEX_NAME" },
+    "CamelAwsS3VectorsVectorId": { "index": 3, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The unique identifier for a vector", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#VECTOR_ID" },
+    "CamelAwsS3VectorsVectorData": { "index": 4, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "List<Float> or float[]", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The vector embedding data as a list of floats or float array", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#VECTOR_DATA" },
+    "CamelAwsS3VectorsVectorDimensions": { "index": 5, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The dimensions of the vector", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#VECTOR_DIMENSIONS" },
+    "CamelAwsS3VectorsDataType": { "index": 6, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The data type of the vector (float32 or float16)", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#DATA_TYPE" },
+    "CamelAwsS3VectorsVectorMetadata": { "index": 7, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Map<String, String>", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Additional metadata for the vector as a map", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#VECTOR_METADATA" },
+    "CamelAwsS3VectorsQueryVector": { "index": 8, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "List<Float> or float[]", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The query vector for similarity search as a list of floats or float array", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#QUERY_VECTOR" },
+    "CamelAwsS3VectorsTopK": { "index": 9, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The number of top similar vectors to return", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#TOP_K" },
+    "CamelAwsS3VectorsDistanceMetric": { "index": 10, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The distance metric to use for similarity search (cosine, euclidean, dot-product)", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#DISTANCE_METRIC" },
+    "CamelAwsS3VectorsSimilarityThreshold": { "index": 11, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Float", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The minimum similarity threshold for results", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#SIMILARITY_THRESHOLD" },
+    "CamelAwsS3VectorsMetadataFilter": { "index": 12, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Optional filter expression for metadata filtering during vector search", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#METADATA_FILTER" },
+    "CamelAwsS3VectorsSimilarityScore": { "index": 13, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "Float", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The similarity score of the returned vector", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#SIMILARITY_SCORE" },
+    "CamelAwsS3VectorsResultCount": { "index": 14, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The number of vectors returned in the result", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#RESULT_COUNT" },
+    "CamelAwsS3VectorsIndexStatus": { "index": 15, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The status of the vector index", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#INDEX_STATUS" },
+    "CamelAwsS3VectorsVectorBucketArn": { "index": 16, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The ARN of the vector bucket", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#VECTOR_BUCKET_ARN" }
+  },
+  "properties": {
+    "vectorBucketName": { "index": 0, "kind": "path", "displayName": "Vector Bucket Name", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Vector bucket name or ARN" },
+    "dataType": { "index": 1, "kind": "parameter", "displayName": "Data Type", "group": "common", "label": "", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "float32", "float16" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "float32", "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The data type of the vector. Options: float32, [...]
+    "distanceMetric": { "index": 2, "kind": "parameter", "displayName": "Distance Metric", "group": "common", "label": "", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "cosine", "euclidean", "dot-product" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "cosine", "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The distance metric [...]
+    "overrideEndpoint": { "index": 3, "kind": "parameter", "displayName": "Override Endpoint", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Set the need for overriding the endpoint. This option needs to be used in  [...]
+    "region": { "index": 4, "kind": "parameter", "displayName": "Region", "group": "common", "label": "", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "ap-south-2", "ap-south-1", "eu-south-1", "eu-south-2", "us-gov-east-1", "me-central-1", "il-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "eu-central-2", "eu-isoe-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northe [...]
+    "similarityThreshold": { "index": 5, "kind": "parameter", "displayName": "Similarity Threshold", "group": "common", "label": "", "required": false, "type": "number", "javaType": "java.lang.Float", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The minimum similarity threshold for results" },
+    "topK": { "index": 6, "kind": "parameter", "displayName": "Top K", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 10, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The number of top similar vectors to return in a query" },
+    "uriEndpointOverride": { "index": 7, "kind": "parameter", "displayName": "Uri Endpoint Override", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Set the overriding uri endpoint. This option needs to be used in combination with  [...]
+    "vectorDimensions": { "index": 8, "kind": "parameter", "displayName": "Vector Dimensions", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1536, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The dimensions of the vector embeddings (default: 1536, which is  [...]
+    "vectorIndexName": { "index": 9, "kind": "parameter", "displayName": "Vector Index Name", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The name of the vector index" },
+    "consumerMetadataFilter": { "index": 10, "kind": "parameter", "displayName": "Consumer Metadata Filter", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Optional metadata filter for the consumer to filter vectors durin [...]
+    "consumerQueryVector": { "index": 11, "kind": "parameter", "displayName": "Consumer Query Vector", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The query vector to use for the consumer to poll for similar vectors. S [...]
+    "delay": { "index": 12, "kind": "parameter", "displayName": "Delay", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 500, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Milliseconds before the next poll for the consumer" },
+    "deleteAfterRead": { "index": 13, "kind": "parameter", "displayName": "Delete After Read", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Delete vectors after they have been consumed" },
+    "maxMessagesPerPoll": { "index": 14, "kind": "parameter", "displayName": "Max Messages Per Poll", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 10, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The maximum number of messages to consume per poll for the consumer" },
+    "sendEmptyMessageWhenIdle": { "index": 15, "kind": "parameter", "displayName": "Send Empty Message When Idle", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead." },
+    "bridgeErrorHandler": { "index": 16, "kind": "parameter", "displayName": "Bridge Error Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions (if possible) occurred while the Camel consumer is trying to pickup incoming [...]
+    "exceptionHandler": { "index": 17, "kind": "parameter", "displayName": "Exception Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", "deprecated": false, "autowired": false, "secret": false, "description": "To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By de [...]
+    "exchangePattern": { "index": 18, "kind": "parameter", "displayName": "Exchange Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "enum", "javaType": "org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the exchange pattern when the consumer creates an exchange." },
+    "pollStrategy": { "index": 19, "kind": "parameter", "displayName": "Poll Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.PollingConsumerPollStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the po [...]
+    "operation": { "index": 20, "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "producer", "required": false, "type": "enum", "javaType": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsOperations", "enum": [ "putVectors", "queryVectors", "deleteVectors", "getVectors", "createVectorBucket", "deleteVectorBucket", "listVectorBuckets", "describeVectorBucket", "createVectorIndex", "deleteVectorIndex", "listVectorIndexes", "describeVectorIndex" ], "depr [...]
+    "lazyStartProducer": { "index": 21, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a produ [...]
+    "s3VectorsClient": { "index": 22, "kind": "parameter", "displayName": "S3 Vectors Client", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "software.amazon.awssdk.services.s3vectors.S3VectorsClient", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Reference to a s [...]
+    "proxyHost": { "index": 23, "kind": "parameter", "displayName": "Proxy Host", "group": "proxy", "label": "proxy", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "To define a proxy host when instantiating the S3 Vectors client" },
+    "proxyPort": { "index": 24, "kind": "parameter", "displayName": "Proxy Port", "group": "proxy", "label": "proxy", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "To define a proxy port when instantiating the S3 Vectors client" },
+    "proxyProtocol": { "index": 25, "kind": "parameter", "displayName": "Proxy Protocol", "group": "proxy", "label": "proxy", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.core.Protocol", "enum": [ "HTTP", "HTTPS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "To define a proxy  [...]
+    "backoffErrorThreshold": { "index": 26, "kind": "parameter", "displayName": "Backoff Error Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in." },
+    "backoffIdleThreshold": { "index": 27, "kind": "parameter", "displayName": "Backoff Idle Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent idle polls that should happen before the backoffMultipler should kick-in." },
+    "backoffMultiplier": { "index": 28, "kind": "parameter", "displayName": "Backoff Multiplier", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "To let the scheduled polling consumer backoff if there has been a number of subsequent idles\/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is h [...]
+    "greedy": { "index": 29, "kind": "parameter", "displayName": "Greedy", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages." },
+    "initialDelay": { "index": 30, "kind": "parameter", "displayName": "Initial Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1000, "description": "Milliseconds before the first poll starts." },
+    "repeatCount": { "index": 31, "kind": "parameter", "displayName": "Repeat Count", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "description": "Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever." },
+    "runLoggingLevel": { "index": 32, "kind": "parameter", "displayName": "Run Logging Level", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "enum", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "TRACE", "description": "The consumer logs a start\/complete log line when it polls. This option allows you to configure the log [...]
+    "scheduledExecutorService": { "index": 33, "kind": "parameter", "displayName": "Scheduled Executor Service", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.concurrent.ScheduledExecutorService", "deprecated": false, "autowired": false, "secret": false, "description": "Allows for configuring a custom\/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool." },
+    "scheduler": { "index": 34, "kind": "parameter", "displayName": "Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.lang.Object", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "none", "description": "To use a cron scheduler from either camel-spring or camel-quartz component. Use value spring or quartz for built in scheduler" },
+    "schedulerProperties": { "index": 35, "kind": "parameter", "displayName": "Scheduler Properties", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "prefix": "scheduler.", "multiValue": true, "deprecated": false, "autowired": false, "secret": false, "description": "To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. This i [...]
+    "startScheduler": { "index": 36, "kind": "parameter", "displayName": "Start Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether the scheduler should be auto started." },
+    "timeUnit": { "index": 37, "kind": "parameter", "displayName": "Time Unit", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "enum", "javaType": "java.util.concurrent.TimeUnit", "enum": [ "NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", "DAYS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "MILLISECONDS", "description": "Time unit for initialDelay and delay options." },
+    "useFixedDelay": { "index": 38, "kind": "parameter", "displayName": "Use Fixed Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details." },
+    "accessKey": { "index": 39, "kind": "parameter", "displayName": "Access Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Amazon AWS Access Key" },
+    "profileCredentialsName": { "index": 40, "kind": "parameter", "displayName": "Profile Credentials Name", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "If using a profile credentials provider, this parameter will set  [...]
+    "secretKey": { "index": 41, "kind": "parameter", "displayName": "Secret Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Amazon AWS Secret Key" },
+    "sessionToken": { "index": 42, "kind": "parameter", "displayName": "Session Token", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Amazon AWS Session Token used when the user needs to assume an IAM role" },
+    "trustAllCertificates": { "index": 43, "kind": "parameter", "displayName": "Trust All Certificates", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "If we want to trust all certificates in case of overri [...]
+    "useDefaultCredentialsProvider": { "index": 44, "kind": "parameter", "displayName": "Use Default Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Set whether the S3 Vectors client s [...]
+    "useProfileCredentialsProvider": { "index": 45, "kind": "parameter", "displayName": "Use Profile Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Set whether the S3 Vectors client s [...]
+    "useSessionCredentials": { "index": 46, "kind": "parameter", "displayName": "Use Session Credentials", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Set whether the S3 Vectors client should expect to u [...]
+  }
+}
diff --git a/components/camel-aws/camel-aws2-s3-vectors/pom.xml b/components/camel-aws/camel-aws2-s3-vectors/pom.xml
new file mode 100644
index 000000000000..fe5bfdd8cc5d
--- /dev/null
+++ b/components/camel-aws/camel-aws2-s3-vectors/pom.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.camel</groupId>
+        <artifactId>camel-aws-parent</artifactId>
+        <version>4.17.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>camel-aws2-s3-vectors</artifactId>
+    <packaging>jar</packaging>
+
+    <name>Camel :: AWS2 S3 Vectors</name>
+    <description>Store and query vector embeddings using AWS S3 Vectors with similarity search</description>
+
+    <properties>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-support</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>software.amazon.awssdk</groupId>
+            <artifactId>s3vectors</artifactId>
+            <version>${aws-java-sdk2-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>software.amazon.awssdk</groupId>
+            <artifactId>sts</artifactId>
+            <version>${aws-java-sdk2-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>software.amazon.awssdk</groupId>
+            <artifactId>apache-client</artifactId>
+            <version>${aws-java-sdk2-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-health</artifactId>
+        </dependency>
+
+        <!-- for testing -->
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-test-spring-junit5</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <!-- test infra -->
+       <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-test-infra-aws-v2</artifactId>
+            <version>${project.version}</version>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+</project>
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/generated/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsComponentConfigurer.java b/components/camel-aws/camel-aws2-s3-vectors/src/generated/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsComponentConfigurer.java
new file mode 100644
index 000000000000..7fd8bf2e8a1a
--- /dev/null
+++ b/components/camel-aws/camel-aws2-s3-vectors/src/generated/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsComponentConfigurer.java
@@ -0,0 +1,243 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.aws2.s3vectors;
+
+import javax.annotation.processing.Generated;
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.util.CaseInsensitiveMap;
+import org.apache.camel.support.component.PropertyConfigurerSupport;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.EndpointSchemaGeneratorMojo")
+@SuppressWarnings("unchecked")
+public class AWS2S3VectorsComponentConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
+
+    private org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration getOrCreateConfiguration(AWS2S3VectorsComponent target) {
+        if (target.getConfiguration() == null) {
+            target.setConfiguration(new org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration());
+        }
+        return target.getConfiguration();
+    }
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+        AWS2S3VectorsComponent target = (AWS2S3VectorsComponent) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesskey":
+        case "accessKey": getOrCreateConfiguration(target).setAccessKey(property(camelContext, java.lang.String.class, value)); return true;
+        case "autowiredenabled":
+        case "autowiredEnabled": target.setAutowiredEnabled(property(camelContext, boolean.class, value)); return true;
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true;
+        case "configuration": target.setConfiguration(property(camelContext, org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration.class, value)); return true;
+        case "consumermetadatafilter":
+        case "consumerMetadataFilter": getOrCreateConfiguration(target).setConsumerMetadataFilter(property(camelContext, java.lang.String.class, value)); return true;
+        case "consumerqueryvector":
+        case "consumerQueryVector": getOrCreateConfiguration(target).setConsumerQueryVector(property(camelContext, java.lang.String.class, value)); return true;
+        case "datatype":
+        case "dataType": getOrCreateConfiguration(target).setDataType(property(camelContext, java.lang.String.class, value)); return true;
+        case "delay": getOrCreateConfiguration(target).setDelay(property(camelContext, long.class, value)); return true;
+        case "deleteafterread":
+        case "deleteAfterRead": getOrCreateConfiguration(target).setDeleteAfterRead(property(camelContext, boolean.class, value)); return true;
+        case "distancemetric":
+        case "distanceMetric": getOrCreateConfiguration(target).setDistanceMetric(property(camelContext, java.lang.String.class, value)); return true;
+        case "healthcheckconsumerenabled":
+        case "healthCheckConsumerEnabled": target.setHealthCheckConsumerEnabled(property(camelContext, boolean.class, value)); return true;
+        case "healthcheckproducerenabled":
+        case "healthCheckProducerEnabled": target.setHealthCheckProducerEnabled(property(camelContext, boolean.class, value)); return true;
+        case "lazystartproducer":
+        case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
+        case "maxmessagesperpoll":
+        case "maxMessagesPerPoll": getOrCreateConfiguration(target).setMaxMessagesPerPoll(property(camelContext, int.class, value)); return true;
+        case "operation": getOrCreateConfiguration(target).setOperation(property(camelContext, org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsOperations.class, value)); return true;
+        case "overrideendpoint":
+        case "overrideEndpoint": getOrCreateConfiguration(target).setOverrideEndpoint(property(camelContext, boolean.class, value)); return true;
+        case "profilecredentialsname":
+        case "profileCredentialsName": getOrCreateConfiguration(target).setProfileCredentialsName(property(camelContext, java.lang.String.class, value)); return true;
+        case "proxyhost":
+        case "proxyHost": getOrCreateConfiguration(target).setProxyHost(property(camelContext, java.lang.String.class, value)); return true;
+        case "proxyport":
+        case "proxyPort": getOrCreateConfiguration(target).setProxyPort(property(camelContext, java.lang.Integer.class, value)); return true;
+        case "proxyprotocol":
+        case "proxyProtocol": getOrCreateConfiguration(target).setProxyProtocol(property(camelContext, software.amazon.awssdk.core.Protocol.class, value)); return true;
+        case "region": getOrCreateConfiguration(target).setRegion(property(camelContext, java.lang.String.class, value)); return true;
+        case "s3vectorsclient":
+        case "s3VectorsClient": getOrCreateConfiguration(target).setS3VectorsClient(property(camelContext, software.amazon.awssdk.services.s3vectors.S3VectorsClient.class, value)); return true;
+        case "secretkey":
+        case "secretKey": getOrCreateConfiguration(target).setSecretKey(property(camelContext, java.lang.String.class, value)); return true;
+        case "sessiontoken":
+        case "sessionToken": getOrCreateConfiguration(target).setSessionToken(property(camelContext, java.lang.String.class, value)); return true;
+        case "similaritythreshold":
+        case "similarityThreshold": getOrCreateConfiguration(target).setSimilarityThreshold(property(camelContext, java.lang.Float.class, value)); return true;
+        case "topk":
+        case "topK": getOrCreateConfiguration(target).setTopK(property(camelContext, java.lang.Integer.class, value)); return true;
+        case "trustallcertificates":
+        case "trustAllCertificates": getOrCreateConfiguration(target).setTrustAllCertificates(property(camelContext, boolean.class, value)); return true;
+        case "uriendpointoverride":
+        case "uriEndpointOverride": getOrCreateConfiguration(target).setUriEndpointOverride(property(camelContext, java.lang.String.class, value)); return true;
+        case "usedefaultcredentialsprovider":
+        case "useDefaultCredentialsProvider": getOrCreateConfiguration(target).setUseDefaultCredentialsProvider(property(camelContext, boolean.class, value)); return true;
+        case "useprofilecredentialsprovider":
+        case "useProfileCredentialsProvider": getOrCreateConfiguration(target).setUseProfileCredentialsProvider(property(camelContext, boolean.class, value)); return true;
+        case "usesessioncredentials":
+        case "useSessionCredentials": getOrCreateConfiguration(target).setUseSessionCredentials(property(camelContext, boolean.class, value)); return true;
+        case "vectordimensions":
+        case "vectorDimensions": getOrCreateConfiguration(target).setVectorDimensions(property(camelContext, java.lang.Integer.class, value)); return true;
+        case "vectorindexname":
+        case "vectorIndexName": getOrCreateConfiguration(target).setVectorIndexName(property(camelContext, java.lang.String.class, value)); return true;
+        default: return false;
+        }
+    }
+
+    @Override
+    public String[] getAutowiredNames() {
+        return new String[]{"s3VectorsClient"};
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesskey":
+        case "accessKey": return java.lang.String.class;
+        case "autowiredenabled":
+        case "autowiredEnabled": return boolean.class;
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": return boolean.class;
+        case "configuration": return org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration.class;
+        case "consumermetadatafilter":
+        case "consumerMetadataFilter": return java.lang.String.class;
+        case "consumerqueryvector":
+        case "consumerQueryVector": return java.lang.String.class;
+        case "datatype":
+        case "dataType": return java.lang.String.class;
+        case "delay": return long.class;
+        case "deleteafterread":
+        case "deleteAfterRead": return boolean.class;
+        case "distancemetric":
+        case "distanceMetric": return java.lang.String.class;
+        case "healthcheckconsumerenabled":
+        case "healthCheckConsumerEnabled": return boolean.class;
+        case "healthcheckproducerenabled":
+        case "healthCheckProducerEnabled": return boolean.class;
+        case "lazystartproducer":
+        case "lazyStartProducer": return boolean.class;
+        case "maxmessagesperpoll":
+        case "maxMessagesPerPoll": return int.class;
+        case "operation": return org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsOperations.class;
+        case "overrideendpoint":
+        case "overrideEndpoint": return boolean.class;
+        case "profilecredentialsname":
+        case "profileCredentialsName": return java.lang.String.class;
+        case "proxyhost":
+        case "proxyHost": return java.lang.String.class;
+        case "proxyport":
+        case "proxyPort": return java.lang.Integer.class;
+        case "proxyprotocol":
+        case "proxyProtocol": return software.amazon.awssdk.core.Protocol.class;
+        case "region": return java.lang.String.class;
+        case "s3vectorsclient":
+        case "s3VectorsClient": return software.amazon.awssdk.services.s3vectors.S3VectorsClient.class;
+        case "secretkey":
+        case "secretKey": return java.lang.String.class;
+        case "sessiontoken":
+        case "sessionToken": return java.lang.String.class;
+        case "similaritythreshold":
+        case "similarityThreshold": return java.lang.Float.class;
+        case "topk":
+        case "topK": return java.lang.Integer.class;
+        case "trustallcertificates":
+        case "trustAllCertificates": return boolean.class;
+        case "uriendpointoverride":
+        case "uriEndpointOverride": return java.lang.String.class;
+        case "usedefaultcredentialsprovider":
+        case "useDefaultCredentialsProvider": return boolean.class;
+        case "useprofilecredentialsprovider":
+        case "useProfileCredentialsProvider": return boolean.class;
+        case "usesessioncredentials":
+        case "useSessionCredentials": return boolean.class;
+        case "vectordimensions":
+        case "vectorDimensions": return java.lang.Integer.class;
+        case "vectorindexname":
+        case "vectorIndexName": return java.lang.String.class;
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        AWS2S3VectorsComponent target = (AWS2S3VectorsComponent) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesskey":
+        case "accessKey": return getOrCreateConfiguration(target).getAccessKey();
+        case "autowiredenabled":
+        case "autowiredEnabled": return target.isAutowiredEnabled();
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": return target.isBridgeErrorHandler();
+        case "configuration": return target.getConfiguration();
+        case "consumermetadatafilter":
+        case "consumerMetadataFilter": return getOrCreateConfiguration(target).getConsumerMetadataFilter();
+        case "consumerqueryvector":
+        case "consumerQueryVector": return getOrCreateConfiguration(target).getConsumerQueryVector();
+        case "datatype":
+        case "dataType": return getOrCreateConfiguration(target).getDataType();
+        case "delay": return getOrCreateConfiguration(target).getDelay();
+        case "deleteafterread":
+        case "deleteAfterRead": return getOrCreateConfiguration(target).isDeleteAfterRead();
+        case "distancemetric":
+        case "distanceMetric": return getOrCreateConfiguration(target).getDistanceMetric();
+        case "healthcheckconsumerenabled":
+        case "healthCheckConsumerEnabled": return target.isHealthCheckConsumerEnabled();
+        case "healthcheckproducerenabled":
+        case "healthCheckProducerEnabled": return target.isHealthCheckProducerEnabled();
+        case "lazystartproducer":
+        case "lazyStartProducer": return target.isLazyStartProducer();
+        case "maxmessagesperpoll":
+        case "maxMessagesPerPoll": return getOrCreateConfiguration(target).getMaxMessagesPerPoll();
+        case "operation": return getOrCreateConfiguration(target).getOperation();
+        case "overrideendpoint":
+        case "overrideEndpoint": return getOrCreateConfiguration(target).isOverrideEndpoint();
+        case "profilecredentialsname":
+        case "profileCredentialsName": return getOrCreateConfiguration(target).getProfileCredentialsName();
+        case "proxyhost":
+        case "proxyHost": return getOrCreateConfiguration(target).getProxyHost();
+        case "proxyport":
+        case "proxyPort": return getOrCreateConfiguration(target).getProxyPort();
+        case "proxyprotocol":
+        case "proxyProtocol": return getOrCreateConfiguration(target).getProxyProtocol();
+        case "region": return getOrCreateConfiguration(target).getRegion();
+        case "s3vectorsclient":
+        case "s3VectorsClient": return getOrCreateConfiguration(target).getS3VectorsClient();
+        case "secretkey":
+        case "secretKey": return getOrCreateConfiguration(target).getSecretKey();
+        case "sessiontoken":
+        case "sessionToken": return getOrCreateConfiguration(target).getSessionToken();
+        case "similaritythreshold":
+        case "similarityThreshold": return getOrCreateConfiguration(target).getSimilarityThreshold();
+        case "topk":
+        case "topK": return getOrCreateConfiguration(target).getTopK();
+        case "trustallcertificates":
+        case "trustAllCertificates": return getOrCreateConfiguration(target).isTrustAllCertificates();
+        case "uriendpointoverride":
+        case "uriEndpointOverride": return getOrCreateConfiguration(target).getUriEndpointOverride();
+        case "usedefaultcredentialsprovider":
+        case "useDefaultCredentialsProvider": return getOrCreateConfiguration(target).isUseDefaultCredentialsProvider();
+        case "useprofilecredentialsprovider":
+        case "useProfileCredentialsProvider": return getOrCreateConfiguration(target).isUseProfileCredentialsProvider();
+        case "usesessioncredentials":
+        case "useSessionCredentials": return getOrCreateConfiguration(target).isUseSessionCredentials();
+        case "vectordimensions":
+        case "vectorDimensions": return getOrCreateConfiguration(target).getVectorDimensions();
+        case "vectorindexname":
+        case "vectorIndexName": return getOrCreateConfiguration(target).getVectorIndexName();
+        default: return null;
+        }
+    }
+}
+
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/generated/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsEndpointConfigurer.java b/components/camel-aws/camel-aws2-s3-vectors/src/generated/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsEndpointConfigurer.java
new file mode 100644
index 000000000000..900368eae38f
--- /dev/null
+++ b/components/camel-aws/camel-aws2-s3-vectors/src/generated/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsEndpointConfigurer.java
@@ -0,0 +1,320 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.aws2.s3vectors;
+
+import javax.annotation.processing.Generated;
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.util.CaseInsensitiveMap;
+import org.apache.camel.support.component.PropertyConfigurerSupport;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.EndpointSchemaGeneratorMojo")
+@SuppressWarnings("unchecked")
+public class AWS2S3VectorsEndpointConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+        AWS2S3VectorsEndpoint target = (AWS2S3VectorsEndpoint) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesskey":
+        case "accessKey": target.getConfiguration().setAccessKey(property(camelContext, java.lang.String.class, value)); return true;
+        case "backofferrorthreshold":
+        case "backoffErrorThreshold": target.setBackoffErrorThreshold(property(camelContext, int.class, value)); return true;
+        case "backoffidlethreshold":
+        case "backoffIdleThreshold": target.setBackoffIdleThreshold(property(camelContext, int.class, value)); return true;
+        case "backoffmultiplier":
+        case "backoffMultiplier": target.setBackoffMultiplier(property(camelContext, int.class, value)); return true;
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true;
+        case "consumermetadatafilter":
+        case "consumerMetadataFilter": target.getConfiguration().setConsumerMetadataFilter(property(camelContext, java.lang.String.class, value)); return true;
+        case "consumerqueryvector":
+        case "consumerQueryVector": target.getConfiguration().setConsumerQueryVector(property(camelContext, java.lang.String.class, value)); return true;
+        case "datatype":
+        case "dataType": target.getConfiguration().setDataType(property(camelContext, java.lang.String.class, value)); return true;
+        case "delay": target.getConfiguration().setDelay(property(camelContext, long.class, value)); return true;
+        case "deleteafterread":
+        case "deleteAfterRead": target.getConfiguration().setDeleteAfterRead(property(camelContext, boolean.class, value)); return true;
+        case "distancemetric":
+        case "distanceMetric": target.getConfiguration().setDistanceMetric(property(camelContext, java.lang.String.class, value)); return true;
+        case "exceptionhandler":
+        case "exceptionHandler": target.setExceptionHandler(property(camelContext, org.apache.camel.spi.ExceptionHandler.class, value)); return true;
+        case "exchangepattern":
+        case "exchangePattern": target.setExchangePattern(property(camelContext, org.apache.camel.ExchangePattern.class, value)); return true;
+        case "greedy": target.setGreedy(property(camelContext, boolean.class, value)); return true;
+        case "initialdelay":
+        case "initialDelay": target.setInitialDelay(property(camelContext, long.class, value)); return true;
+        case "lazystartproducer":
+        case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
+        case "maxmessagesperpoll":
+        case "maxMessagesPerPoll": target.getConfiguration().setMaxMessagesPerPoll(property(camelContext, int.class, value)); return true;
+        case "operation": target.getConfiguration().setOperation(property(camelContext, org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsOperations.class, value)); return true;
+        case "overrideendpoint":
+        case "overrideEndpoint": target.getConfiguration().setOverrideEndpoint(property(camelContext, boolean.class, value)); return true;
+        case "pollstrategy":
+        case "pollStrategy": target.setPollStrategy(property(camelContext, org.apache.camel.spi.PollingConsumerPollStrategy.class, value)); return true;
+        case "profilecredentialsname":
+        case "profileCredentialsName": target.getConfiguration().setProfileCredentialsName(property(camelContext, java.lang.String.class, value)); return true;
+        case "proxyhost":
+        case "proxyHost": target.getConfiguration().setProxyHost(property(camelContext, java.lang.String.class, value)); return true;
+        case "proxyport":
+        case "proxyPort": target.getConfiguration().setProxyPort(property(camelContext, java.lang.Integer.class, value)); return true;
+        case "proxyprotocol":
+        case "proxyProtocol": target.getConfiguration().setProxyProtocol(property(camelContext, software.amazon.awssdk.core.Protocol.class, value)); return true;
+        case "region": target.getConfiguration().setRegion(property(camelContext, java.lang.String.class, value)); return true;
+        case "repeatcount":
+        case "repeatCount": target.setRepeatCount(property(camelContext, long.class, value)); return true;
+        case "runlogginglevel":
+        case "runLoggingLevel": target.setRunLoggingLevel(property(camelContext, org.apache.camel.LoggingLevel.class, value)); return true;
+        case "s3vectorsclient":
+        case "s3VectorsClient": target.getConfiguration().setS3VectorsClient(property(camelContext, software.amazon.awssdk.services.s3vectors.S3VectorsClient.class, value)); return true;
+        case "scheduledexecutorservice":
+        case "scheduledExecutorService": target.setScheduledExecutorService(property(camelContext, java.util.concurrent.ScheduledExecutorService.class, value)); return true;
+        case "scheduler": target.setScheduler(property(camelContext, java.lang.Object.class, value)); return true;
+        case "schedulerproperties":
+        case "schedulerProperties": target.setSchedulerProperties(property(camelContext, java.util.Map.class, value)); return true;
+        case "secretkey":
+        case "secretKey": target.getConfiguration().setSecretKey(property(camelContext, java.lang.String.class, value)); return true;
+        case "sendemptymessagewhenidle":
+        case "sendEmptyMessageWhenIdle": target.setSendEmptyMessageWhenIdle(property(camelContext, boolean.class, value)); return true;
+        case "sessiontoken":
+        case "sessionToken": target.getConfiguration().setSessionToken(property(camelContext, java.lang.String.class, value)); return true;
+        case "similaritythreshold":
+        case "similarityThreshold": target.getConfiguration().setSimilarityThreshold(property(camelContext, java.lang.Float.class, value)); return true;
+        case "startscheduler":
+        case "startScheduler": target.setStartScheduler(property(camelContext, boolean.class, value)); return true;
+        case "timeunit":
+        case "timeUnit": target.setTimeUnit(property(camelContext, java.util.concurrent.TimeUnit.class, value)); return true;
+        case "topk":
+        case "topK": target.getConfiguration().setTopK(property(camelContext, java.lang.Integer.class, value)); return true;
+        case "trustallcertificates":
+        case "trustAllCertificates": target.getConfiguration().setTrustAllCertificates(property(camelContext, boolean.class, value)); return true;
+        case "uriendpointoverride":
+        case "uriEndpointOverride": target.getConfiguration().setUriEndpointOverride(property(camelContext, java.lang.String.class, value)); return true;
+        case "usedefaultcredentialsprovider":
+        case "useDefaultCredentialsProvider": target.getConfiguration().setUseDefaultCredentialsProvider(property(camelContext, boolean.class, value)); return true;
+        case "usefixeddelay":
+        case "useFixedDelay": target.setUseFixedDelay(property(camelContext, boolean.class, value)); return true;
+        case "useprofilecredentialsprovider":
+        case "useProfileCredentialsProvider": target.getConfiguration().setUseProfileCredentialsProvider(property(camelContext, boolean.class, value)); return true;
+        case "usesessioncredentials":
+        case "useSessionCredentials": target.getConfiguration().setUseSessionCredentials(property(camelContext, boolean.class, value)); return true;
+        case "vectordimensions":
+        case "vectorDimensions": target.getConfiguration().setVectorDimensions(property(camelContext, java.lang.Integer.class, value)); return true;
+        case "vectorindexname":
+        case "vectorIndexName": target.getConfiguration().setVectorIndexName(property(camelContext, java.lang.String.class, value)); return true;
+        default: return false;
+        }
+    }
+
+    @Override
+    public String[] getAutowiredNames() {
+        return new String[]{"s3VectorsClient"};
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesskey":
+        case "accessKey": return java.lang.String.class;
+        case "backofferrorthreshold":
+        case "backoffErrorThreshold": return int.class;
+        case "backoffidlethreshold":
+        case "backoffIdleThreshold": return int.class;
+        case "backoffmultiplier":
+        case "backoffMultiplier": return int.class;
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": return boolean.class;
+        case "consumermetadatafilter":
+        case "consumerMetadataFilter": return java.lang.String.class;
+        case "consumerqueryvector":
+        case "consumerQueryVector": return java.lang.String.class;
+        case "datatype":
+        case "dataType": return java.lang.String.class;
+        case "delay": return long.class;
+        case "deleteafterread":
+        case "deleteAfterRead": return boolean.class;
+        case "distancemetric":
+        case "distanceMetric": return java.lang.String.class;
+        case "exceptionhandler":
+        case "exceptionHandler": return org.apache.camel.spi.ExceptionHandler.class;
+        case "exchangepattern":
+        case "exchangePattern": return org.apache.camel.ExchangePattern.class;
+        case "greedy": return boolean.class;
+        case "initialdelay":
+        case "initialDelay": return long.class;
+        case "lazystartproducer":
+        case "lazyStartProducer": return boolean.class;
+        case "maxmessagesperpoll":
+        case "maxMessagesPerPoll": return int.class;
+        case "operation": return org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsOperations.class;
+        case "overrideendpoint":
+        case "overrideEndpoint": return boolean.class;
+        case "pollstrategy":
+        case "pollStrategy": return org.apache.camel.spi.PollingConsumerPollStrategy.class;
+        case "profilecredentialsname":
+        case "profileCredentialsName": return java.lang.String.class;
+        case "proxyhost":
+        case "proxyHost": return java.lang.String.class;
+        case "proxyport":
+        case "proxyPort": return java.lang.Integer.class;
+        case "proxyprotocol":
+        case "proxyProtocol": return software.amazon.awssdk.core.Protocol.class;
+        case "region": return java.lang.String.class;
+        case "repeatcount":
+        case "repeatCount": return long.class;
+        case "runlogginglevel":
+        case "runLoggingLevel": return org.apache.camel.LoggingLevel.class;
+        case "s3vectorsclient":
+        case "s3VectorsClient": return software.amazon.awssdk.services.s3vectors.S3VectorsClient.class;
+        case "scheduledexecutorservice":
+        case "scheduledExecutorService": return java.util.concurrent.ScheduledExecutorService.class;
+        case "scheduler": return java.lang.Object.class;
+        case "schedulerproperties":
+        case "schedulerProperties": return java.util.Map.class;
+        case "secretkey":
+        case "secretKey": return java.lang.String.class;
+        case "sendemptymessagewhenidle":
+        case "sendEmptyMessageWhenIdle": return boolean.class;
+        case "sessiontoken":
+        case "sessionToken": return java.lang.String.class;
+        case "similaritythreshold":
+        case "similarityThreshold": return java.lang.Float.class;
+        case "startscheduler":
+        case "startScheduler": return boolean.class;
+        case "timeunit":
+        case "timeUnit": return java.util.concurrent.TimeUnit.class;
+        case "topk":
+        case "topK": return java.lang.Integer.class;
+        case "trustallcertificates":
+        case "trustAllCertificates": return boolean.class;
+        case "uriendpointoverride":
+        case "uriEndpointOverride": return java.lang.String.class;
+        case "usedefaultcredentialsprovider":
+        case "useDefaultCredentialsProvider": return boolean.class;
+        case "usefixeddelay":
+        case "useFixedDelay": return boolean.class;
+        case "useprofilecredentialsprovider":
+        case "useProfileCredentialsProvider": return boolean.class;
+        case "usesessioncredentials":
+        case "useSessionCredentials": return boolean.class;
+        case "vectordimensions":
+        case "vectorDimensions": return java.lang.Integer.class;
+        case "vectorindexname":
+        case "vectorIndexName": return java.lang.String.class;
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        AWS2S3VectorsEndpoint target = (AWS2S3VectorsEndpoint) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesskey":
+        case "accessKey": return target.getConfiguration().getAccessKey();
+        case "backofferrorthreshold":
+        case "backoffErrorThreshold": return target.getBackoffErrorThreshold();
+        case "backoffidlethreshold":
+        case "backoffIdleThreshold": return target.getBackoffIdleThreshold();
+        case "backoffmultiplier":
+        case "backoffMultiplier": return target.getBackoffMultiplier();
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": return target.isBridgeErrorHandler();
+        case "consumermetadatafilter":
+        case "consumerMetadataFilter": return target.getConfiguration().getConsumerMetadataFilter();
+        case "consumerqueryvector":
+        case "consumerQueryVector": return target.getConfiguration().getConsumerQueryVector();
+        case "datatype":
+        case "dataType": return target.getConfiguration().getDataType();
+        case "delay": return target.getConfiguration().getDelay();
+        case "deleteafterread":
+        case "deleteAfterRead": return target.getConfiguration().isDeleteAfterRead();
+        case "distancemetric":
+        case "distanceMetric": return target.getConfiguration().getDistanceMetric();
+        case "exceptionhandler":
+        case "exceptionHandler": return target.getExceptionHandler();
+        case "exchangepattern":
+        case "exchangePattern": return target.getExchangePattern();
+        case "greedy": return target.isGreedy();
+        case "initialdelay":
+        case "initialDelay": return target.getInitialDelay();
+        case "lazystartproducer":
+        case "lazyStartProducer": return target.isLazyStartProducer();
+        case "maxmessagesperpoll":
+        case "maxMessagesPerPoll": return target.getConfiguration().getMaxMessagesPerPoll();
+        case "operation": return target.getConfiguration().getOperation();
+        case "overrideendpoint":
+        case "overrideEndpoint": return target.getConfiguration().isOverrideEndpoint();
+        case "pollstrategy":
+        case "pollStrategy": return target.getPollStrategy();
+        case "profilecredentialsname":
+        case "profileCredentialsName": return target.getConfiguration().getProfileCredentialsName();
+        case "proxyhost":
+        case "proxyHost": return target.getConfiguration().getProxyHost();
+        case "proxyport":
+        case "proxyPort": return target.getConfiguration().getProxyPort();
+        case "proxyprotocol":
+        case "proxyProtocol": return target.getConfiguration().getProxyProtocol();
+        case "region": return target.getConfiguration().getRegion();
+        case "repeatcount":
+        case "repeatCount": return target.getRepeatCount();
+        case "runlogginglevel":
+        case "runLoggingLevel": return target.getRunLoggingLevel();
+        case "s3vectorsclient":
+        case "s3VectorsClient": return target.getConfiguration().getS3VectorsClient();
+        case "scheduledexecutorservice":
+        case "scheduledExecutorService": return target.getScheduledExecutorService();
+        case "scheduler": return target.getScheduler();
+        case "schedulerproperties":
+        case "schedulerProperties": return target.getSchedulerProperties();
+        case "secretkey":
+        case "secretKey": return target.getConfiguration().getSecretKey();
+        case "sendemptymessagewhenidle":
+        case "sendEmptyMessageWhenIdle": return target.isSendEmptyMessageWhenIdle();
+        case "sessiontoken":
+        case "sessionToken": return target.getConfiguration().getSessionToken();
+        case "similaritythreshold":
+        case "similarityThreshold": return target.getConfiguration().getSimilarityThreshold();
+        case "startscheduler":
+        case "startScheduler": return target.isStartScheduler();
+        case "timeunit":
+        case "timeUnit": return target.getTimeUnit();
+        case "topk":
+        case "topK": return target.getConfiguration().getTopK();
+        case "trustallcertificates":
+        case "trustAllCertificates": return target.getConfiguration().isTrustAllCertificates();
+        case "uriendpointoverride":
+        case "uriEndpointOverride": return target.getConfiguration().getUriEndpointOverride();
+        case "usedefaultcredentialsprovider":
+        case "useDefaultCredentialsProvider": return target.getConfiguration().isUseDefaultCredentialsProvider();
+        case "usefixeddelay":
+        case "useFixedDelay": return target.isUseFixedDelay();
+        case "useprofilecredentialsprovider":
+        case "useProfileCredentialsProvider": return target.getConfiguration().isUseProfileCredentialsProvider();
+        case "usesessioncredentials":
+        case "useSessionCredentials": return target.getConfiguration().isUseSessionCredentials();
+        case "vectordimensions":
+        case "vectorDimensions": return target.getConfiguration().getVectorDimensions();
+        case "vectorindexname":
+        case "vectorIndexName": return target.getConfiguration().getVectorIndexName();
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getCollectionValueType(Object target, String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "schedulerproperties":
+        case "schedulerProperties": return java.lang.Object.class;
+        default: return null;
+        }
+    }
+}
+
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/generated/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsEndpointUriFactory.java b/components/camel-aws/camel-aws2-s3-vectors/src/generated/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsEndpointUriFactory.java
new file mode 100644
index 000000000000..6eada4fd4b96
--- /dev/null
+++ b/components/camel-aws/camel-aws2-s3-vectors/src/generated/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsEndpointUriFactory.java
@@ -0,0 +1,122 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.aws2.s3vectors;
+
+import javax.annotation.processing.Generated;
+import java.net.URISyntaxException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.camel.spi.EndpointUriFactory;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.GenerateEndpointUriFactoryMojo")
+public class AWS2S3VectorsEndpointUriFactory extends org.apache.camel.support.component.EndpointUriFactorySupport implements EndpointUriFactory {
+
+    private static final String BASE = "://vectorBucketName";
+
+    private static final Set<String> PROPERTY_NAMES;
+    private static final Set<String> SECRET_PROPERTY_NAMES;
+    private static final Map<String, String> MULTI_VALUE_PREFIXES;
+    static {
+        Set<String> props = new HashSet<>(47);
+        props.add("accessKey");
+        props.add("backoffErrorThreshold");
+        props.add("backoffIdleThreshold");
+        props.add("backoffMultiplier");
+        props.add("bridgeErrorHandler");
+        props.add("consumerMetadataFilter");
+        props.add("consumerQueryVector");
+        props.add("dataType");
+        props.add("delay");
+        props.add("deleteAfterRead");
+        props.add("distanceMetric");
+        props.add("exceptionHandler");
+        props.add("exchangePattern");
+        props.add("greedy");
+        props.add("initialDelay");
+        props.add("lazyStartProducer");
+        props.add("maxMessagesPerPoll");
+        props.add("operation");
+        props.add("overrideEndpoint");
+        props.add("pollStrategy");
+        props.add("profileCredentialsName");
+        props.add("proxyHost");
+        props.add("proxyPort");
+        props.add("proxyProtocol");
+        props.add("region");
+        props.add("repeatCount");
+        props.add("runLoggingLevel");
+        props.add("s3VectorsClient");
+        props.add("scheduledExecutorService");
+        props.add("scheduler");
+        props.add("schedulerProperties");
+        props.add("secretKey");
+        props.add("sendEmptyMessageWhenIdle");
+        props.add("sessionToken");
+        props.add("similarityThreshold");
+        props.add("startScheduler");
+        props.add("timeUnit");
+        props.add("topK");
+        props.add("trustAllCertificates");
+        props.add("uriEndpointOverride");
+        props.add("useDefaultCredentialsProvider");
+        props.add("useFixedDelay");
+        props.add("useProfileCredentialsProvider");
+        props.add("useSessionCredentials");
+        props.add("vectorBucketName");
+        props.add("vectorDimensions");
+        props.add("vectorIndexName");
+        PROPERTY_NAMES = Collections.unmodifiableSet(props);
+        Set<String> secretProps = new HashSet<>(3);
+        secretProps.add("accessKey");
+        secretProps.add("secretKey");
+        secretProps.add("sessionToken");
+        SECRET_PROPERTY_NAMES = Collections.unmodifiableSet(secretProps);
+        Map<String, String> prefixes = new HashMap<>(1);
+        prefixes.put("schedulerProperties", "scheduler.");
+        MULTI_VALUE_PREFIXES = Collections.unmodifiableMap(prefixes);
+    }
+
+    @Override
+    public boolean isEnabled(String scheme) {
+        return "aws2-s3-vectors".equals(scheme);
+    }
+
+    @Override
+    public String buildUri(String scheme, Map<String, Object> properties, boolean encode) throws URISyntaxException {
+        String syntax = scheme + BASE;
+        String uri = syntax;
+
+        Map<String, Object> copy = new HashMap<>(properties);
+
+        uri = buildPathParameter(syntax, uri, "vectorBucketName", null, true, copy);
+        uri = buildQueryParameters(uri, copy, encode);
+        return uri;
+    }
+
+    @Override
+    public Set<String> propertyNames() {
+        return PROPERTY_NAMES;
+    }
+
+    @Override
+    public Set<String> secretPropertyNames() {
+        return SECRET_PROPERTY_NAMES;
+    }
+
+    @Override
+    public Map<String, String> multiValuePrefixes() {
+        return MULTI_VALUE_PREFIXES;
+    }
+
+    @Override
+    public boolean isLenientProperties() {
+        return false;
+    }
+}
+
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/generated/resources/META-INF/org/apache/camel/component/aws2/s3vectors/aws2-s3-vectors.json b/components/camel-aws/camel-aws2-s3-vectors/src/generated/resources/META-INF/org/apache/camel/component/aws2/s3vectors/aws2-s3-vectors.json
new file mode 100644
index 000000000000..f3eb10c49697
--- /dev/null
+++ b/components/camel-aws/camel-aws2-s3-vectors/src/generated/resources/META-INF/org/apache/camel/component/aws2/s3vectors/aws2-s3-vectors.json
@@ -0,0 +1,129 @@
+{
+  "component": {
+    "kind": "component",
+    "name": "aws2-s3-vectors",
+    "title": "AWS S3 Vectors",
+    "description": "Store and query vector embeddings using AWS S3 Vectors with similarity search.",
+    "deprecated": false,
+    "firstVersion": "4.17.0",
+    "label": "cloud,ai",
+    "javaType": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsComponent",
+    "supportLevel": "Preview",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-aws2-s3-vectors",
+    "version": "4.17.0-SNAPSHOT",
+    "scheme": "aws2-s3-vectors",
+    "extendsScheme": "",
+    "syntax": "aws2-s3-vectors:\/\/vectorBucketName",
+    "async": false,
+    "api": false,
+    "consumerOnly": false,
+    "producerOnly": false,
+    "lenientProperties": false,
+    "browsable": false,
+    "remote": true
+  },
+  "componentProperties": {
+    "configuration": { "index": 0, "kind": "property", "displayName": "Configuration", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "deprecated": false, "autowired": false, "secret": false, "description": "The component configuration" },
+    "dataType": { "index": 1, "kind": "property", "displayName": "Data Type", "group": "common", "label": "", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "float32", "float16" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "float32", "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The data type of the vector. Options: float32,  [...]
+    "distanceMetric": { "index": 2, "kind": "property", "displayName": "Distance Metric", "group": "common", "label": "", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "cosine", "euclidean", "dot-product" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "cosine", "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The distance metric  [...]
+    "overrideEndpoint": { "index": 3, "kind": "property", "displayName": "Override Endpoint", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Set the need for overriding the endpoint. This option needs to be used in c [...]
+    "region": { "index": 4, "kind": "property", "displayName": "Region", "group": "common", "label": "", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "ap-south-2", "ap-south-1", "eu-south-1", "eu-south-2", "us-gov-east-1", "me-central-1", "il-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "eu-central-2", "eu-isoe-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northea [...]
+    "similarityThreshold": { "index": 5, "kind": "property", "displayName": "Similarity Threshold", "group": "common", "label": "", "required": false, "type": "number", "javaType": "java.lang.Float", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The minimum similarity threshold for results" },
+    "topK": { "index": 6, "kind": "property", "displayName": "Top K", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 10, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The number of top similar vectors to return in a query" },
+    "uriEndpointOverride": { "index": 7, "kind": "property", "displayName": "Uri Endpoint Override", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Set the overriding uri endpoint. This option needs to be used in combination with o [...]
+    "vectorDimensions": { "index": 8, "kind": "property", "displayName": "Vector Dimensions", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1536, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The dimensions of the vector embeddings (default: 1536, which is t [...]
+    "vectorIndexName": { "index": 9, "kind": "property", "displayName": "Vector Index Name", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The name of the vector index" },
+    "bridgeErrorHandler": { "index": 10, "kind": "property", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions (if possible) occurred while the Camel consumer is trying to pickup incoming messages, or the lik [...]
+    "consumerMetadataFilter": { "index": 11, "kind": "property", "displayName": "Consumer Metadata Filter", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Optional metadata filter for the consumer to filter vectors during [...]
+    "consumerQueryVector": { "index": 12, "kind": "property", "displayName": "Consumer Query Vector", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The query vector to use for the consumer to poll for similar vectors. Sp [...]
+    "delay": { "index": 13, "kind": "property", "displayName": "Delay", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 500, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Milliseconds before the next poll for the consumer" },
+    "deleteAfterRead": { "index": 14, "kind": "property", "displayName": "Delete After Read", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Delete vectors after they have been consumed" },
+    "maxMessagesPerPoll": { "index": 15, "kind": "property", "displayName": "Max Messages Per Poll", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 10, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The maximum number of messages to consume per poll for the consumer" },
+    "lazyStartProducer": { "index": 16, "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fai [...]
+    "operation": { "index": 17, "kind": "property", "displayName": "Operation", "group": "producer", "label": "producer", "required": false, "type": "enum", "javaType": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsOperations", "enum": [ "putVectors", "queryVectors", "deleteVectors", "getVectors", "createVectorBucket", "deleteVectorBucket", "listVectorBuckets", "describeVectorBucket", "createVectorIndex", "deleteVectorIndex", "listVectorIndexes", "describeVectorIndex" ], "depre [...]
+    "autowiredEnabled": { "index": 18, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching  [...]
+    "s3VectorsClient": { "index": 19, "kind": "property", "displayName": "S3 Vectors Client", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "software.amazon.awssdk.services.s3vectors.S3VectorsClient", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Reference to a so [...]
+    "healthCheckConsumerEnabled": { "index": 20, "kind": "property", "displayName": "Health Check Consumer Enabled", "group": "health", "label": "health", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Used for enabling or disabling all consumer based health checks from this component" },
+    "healthCheckProducerEnabled": { "index": 21, "kind": "property", "displayName": "Health Check Producer Enabled", "group": "health", "label": "health", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Used for enabling or disabling all producer based health checks from this component. Notice: Camel has by default disabled all producer based health-checks. You can turn on produce [...]
+    "proxyHost": { "index": 22, "kind": "property", "displayName": "Proxy Host", "group": "proxy", "label": "proxy", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "To define a proxy host when instantiating the S3 Vectors client" },
+    "proxyPort": { "index": 23, "kind": "property", "displayName": "Proxy Port", "group": "proxy", "label": "proxy", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "To define a proxy port when instantiating the S3 Vectors client" },
+    "proxyProtocol": { "index": 24, "kind": "property", "displayName": "Proxy Protocol", "group": "proxy", "label": "proxy", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.core.Protocol", "enum": [ "HTTP", "HTTPS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "To define a proxy p [...]
+    "accessKey": { "index": 25, "kind": "property", "displayName": "Access Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Amazon AWS Access Key" },
+    "profileCredentialsName": { "index": 26, "kind": "property", "displayName": "Profile Credentials Name", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "If using a profile credentials provider, this parameter will set t [...]
+    "secretKey": { "index": 27, "kind": "property", "displayName": "Secret Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Amazon AWS Secret Key" },
+    "sessionToken": { "index": 28, "kind": "property", "displayName": "Session Token", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Amazon AWS Session Token used when the user needs to assume an IAM role" },
+    "trustAllCertificates": { "index": 29, "kind": "property", "displayName": "Trust All Certificates", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "If we want to trust all certificates in case of overrid [...]
+    "useDefaultCredentialsProvider": { "index": 30, "kind": "property", "displayName": "Use Default Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Set whether the S3 Vectors client sh [...]
+    "useProfileCredentialsProvider": { "index": 31, "kind": "property", "displayName": "Use Profile Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Set whether the S3 Vectors client sh [...]
+    "useSessionCredentials": { "index": 32, "kind": "property", "displayName": "Use Session Credentials", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Set whether the S3 Vectors client should expect to us [...]
+  },
+  "headers": {
+    "CamelAwsS3VectorsOperation": { "index": 0, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The operation to perform", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#OPERATION" },
+    "CamelAwsS3VectorsVectorBucketName": { "index": 1, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name of the vector bucket which will be used for the current operation", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#VECTOR_BUCKET_NAME" },
+    "CamelAwsS3VectorsVectorIndexName": { "index": 2, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name of the vector index which will be used for the current operation", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#VECTOR_INDEX_NAME" },
+    "CamelAwsS3VectorsVectorId": { "index": 3, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The unique identifier for a vector", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#VECTOR_ID" },
+    "CamelAwsS3VectorsVectorData": { "index": 4, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "List<Float> or float[]", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The vector embedding data as a list of floats or float array", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#VECTOR_DATA" },
+    "CamelAwsS3VectorsVectorDimensions": { "index": 5, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The dimensions of the vector", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#VECTOR_DIMENSIONS" },
+    "CamelAwsS3VectorsDataType": { "index": 6, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The data type of the vector (float32 or float16)", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#DATA_TYPE" },
+    "CamelAwsS3VectorsVectorMetadata": { "index": 7, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Map<String, String>", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Additional metadata for the vector as a map", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#VECTOR_METADATA" },
+    "CamelAwsS3VectorsQueryVector": { "index": 8, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "List<Float> or float[]", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The query vector for similarity search as a list of floats or float array", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#QUERY_VECTOR" },
+    "CamelAwsS3VectorsTopK": { "index": 9, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The number of top similar vectors to return", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#TOP_K" },
+    "CamelAwsS3VectorsDistanceMetric": { "index": 10, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The distance metric to use for similarity search (cosine, euclidean, dot-product)", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#DISTANCE_METRIC" },
+    "CamelAwsS3VectorsSimilarityThreshold": { "index": 11, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Float", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The minimum similarity threshold for results", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#SIMILARITY_THRESHOLD" },
+    "CamelAwsS3VectorsMetadataFilter": { "index": 12, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Optional filter expression for metadata filtering during vector search", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#METADATA_FILTER" },
+    "CamelAwsS3VectorsSimilarityScore": { "index": 13, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "Float", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The similarity score of the returned vector", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#SIMILARITY_SCORE" },
+    "CamelAwsS3VectorsResultCount": { "index": 14, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The number of vectors returned in the result", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#RESULT_COUNT" },
+    "CamelAwsS3VectorsIndexStatus": { "index": 15, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The status of the vector index", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#INDEX_STATUS" },
+    "CamelAwsS3VectorsVectorBucketArn": { "index": 16, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The ARN of the vector bucket", "constantName": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#VECTOR_BUCKET_ARN" }
+  },
+  "properties": {
+    "vectorBucketName": { "index": 0, "kind": "path", "displayName": "Vector Bucket Name", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Vector bucket name or ARN" },
+    "dataType": { "index": 1, "kind": "parameter", "displayName": "Data Type", "group": "common", "label": "", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "float32", "float16" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "float32", "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The data type of the vector. Options: float32, [...]
+    "distanceMetric": { "index": 2, "kind": "parameter", "displayName": "Distance Metric", "group": "common", "label": "", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "cosine", "euclidean", "dot-product" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "cosine", "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The distance metric [...]
+    "overrideEndpoint": { "index": 3, "kind": "parameter", "displayName": "Override Endpoint", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Set the need for overriding the endpoint. This option needs to be used in  [...]
+    "region": { "index": 4, "kind": "parameter", "displayName": "Region", "group": "common", "label": "", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "ap-south-2", "ap-south-1", "eu-south-1", "eu-south-2", "us-gov-east-1", "me-central-1", "il-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "eu-central-2", "eu-isoe-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northe [...]
+    "similarityThreshold": { "index": 5, "kind": "parameter", "displayName": "Similarity Threshold", "group": "common", "label": "", "required": false, "type": "number", "javaType": "java.lang.Float", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The minimum similarity threshold for results" },
+    "topK": { "index": 6, "kind": "parameter", "displayName": "Top K", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 10, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The number of top similar vectors to return in a query" },
+    "uriEndpointOverride": { "index": 7, "kind": "parameter", "displayName": "Uri Endpoint Override", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Set the overriding uri endpoint. This option needs to be used in combination with  [...]
+    "vectorDimensions": { "index": 8, "kind": "parameter", "displayName": "Vector Dimensions", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1536, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The dimensions of the vector embeddings (default: 1536, which is  [...]
+    "vectorIndexName": { "index": 9, "kind": "parameter", "displayName": "Vector Index Name", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The name of the vector index" },
+    "consumerMetadataFilter": { "index": 10, "kind": "parameter", "displayName": "Consumer Metadata Filter", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Optional metadata filter for the consumer to filter vectors durin [...]
+    "consumerQueryVector": { "index": 11, "kind": "parameter", "displayName": "Consumer Query Vector", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The query vector to use for the consumer to poll for similar vectors. S [...]
+    "delay": { "index": 12, "kind": "parameter", "displayName": "Delay", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 500, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Milliseconds before the next poll for the consumer" },
+    "deleteAfterRead": { "index": 13, "kind": "parameter", "displayName": "Delete After Read", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Delete vectors after they have been consumed" },
+    "maxMessagesPerPoll": { "index": 14, "kind": "parameter", "displayName": "Max Messages Per Poll", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 10, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "The maximum number of messages to consume per poll for the consumer" },
+    "sendEmptyMessageWhenIdle": { "index": 15, "kind": "parameter", "displayName": "Send Empty Message When Idle", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead." },
+    "bridgeErrorHandler": { "index": 16, "kind": "parameter", "displayName": "Bridge Error Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions (if possible) occurred while the Camel consumer is trying to pickup incoming [...]
+    "exceptionHandler": { "index": 17, "kind": "parameter", "displayName": "Exception Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", "deprecated": false, "autowired": false, "secret": false, "description": "To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By de [...]
+    "exchangePattern": { "index": 18, "kind": "parameter", "displayName": "Exchange Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "enum", "javaType": "org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the exchange pattern when the consumer creates an exchange." },
+    "pollStrategy": { "index": 19, "kind": "parameter", "displayName": "Poll Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.PollingConsumerPollStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the po [...]
+    "operation": { "index": 20, "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "producer", "required": false, "type": "enum", "javaType": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsOperations", "enum": [ "putVectors", "queryVectors", "deleteVectors", "getVectors", "createVectorBucket", "deleteVectorBucket", "listVectorBuckets", "describeVectorBucket", "createVectorIndex", "deleteVectorIndex", "listVectorIndexes", "describeVectorIndex" ], "depr [...]
+    "lazyStartProducer": { "index": 21, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a produ [...]
+    "s3VectorsClient": { "index": 22, "kind": "parameter", "displayName": "S3 Vectors Client", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "software.amazon.awssdk.services.s3vectors.S3VectorsClient", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Reference to a s [...]
+    "proxyHost": { "index": 23, "kind": "parameter", "displayName": "Proxy Host", "group": "proxy", "label": "proxy", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "To define a proxy host when instantiating the S3 Vectors client" },
+    "proxyPort": { "index": 24, "kind": "parameter", "displayName": "Proxy Port", "group": "proxy", "label": "proxy", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "To define a proxy port when instantiating the S3 Vectors client" },
+    "proxyProtocol": { "index": 25, "kind": "parameter", "displayName": "Proxy Protocol", "group": "proxy", "label": "proxy", "required": false, "type": "enum", "javaType": "software.amazon.awssdk.core.Protocol", "enum": [ "HTTP", "HTTPS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "To define a proxy  [...]
+    "backoffErrorThreshold": { "index": 26, "kind": "parameter", "displayName": "Backoff Error Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in." },
+    "backoffIdleThreshold": { "index": 27, "kind": "parameter", "displayName": "Backoff Idle Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent idle polls that should happen before the backoffMultipler should kick-in." },
+    "backoffMultiplier": { "index": 28, "kind": "parameter", "displayName": "Backoff Multiplier", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "To let the scheduled polling consumer backoff if there has been a number of subsequent idles\/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is h [...]
+    "greedy": { "index": 29, "kind": "parameter", "displayName": "Greedy", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages." },
+    "initialDelay": { "index": 30, "kind": "parameter", "displayName": "Initial Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1000, "description": "Milliseconds before the first poll starts." },
+    "repeatCount": { "index": 31, "kind": "parameter", "displayName": "Repeat Count", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "description": "Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever." },
+    "runLoggingLevel": { "index": 32, "kind": "parameter", "displayName": "Run Logging Level", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "enum", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "TRACE", "description": "The consumer logs a start\/complete log line when it polls. This option allows you to configure the log [...]
+    "scheduledExecutorService": { "index": 33, "kind": "parameter", "displayName": "Scheduled Executor Service", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.concurrent.ScheduledExecutorService", "deprecated": false, "autowired": false, "secret": false, "description": "Allows for configuring a custom\/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool." },
+    "scheduler": { "index": 34, "kind": "parameter", "displayName": "Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.lang.Object", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "none", "description": "To use a cron scheduler from either camel-spring or camel-quartz component. Use value spring or quartz for built in scheduler" },
+    "schedulerProperties": { "index": 35, "kind": "parameter", "displayName": "Scheduler Properties", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "prefix": "scheduler.", "multiValue": true, "deprecated": false, "autowired": false, "secret": false, "description": "To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. This i [...]
+    "startScheduler": { "index": 36, "kind": "parameter", "displayName": "Start Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether the scheduler should be auto started." },
+    "timeUnit": { "index": 37, "kind": "parameter", "displayName": "Time Unit", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "enum", "javaType": "java.util.concurrent.TimeUnit", "enum": [ "NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", "DAYS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "MILLISECONDS", "description": "Time unit for initialDelay and delay options." },
+    "useFixedDelay": { "index": 38, "kind": "parameter", "displayName": "Use Fixed Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details." },
+    "accessKey": { "index": 39, "kind": "parameter", "displayName": "Access Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Amazon AWS Access Key" },
+    "profileCredentialsName": { "index": 40, "kind": "parameter", "displayName": "Profile Credentials Name", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "If using a profile credentials provider, this parameter will set  [...]
+    "secretKey": { "index": 41, "kind": "parameter", "displayName": "Secret Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Amazon AWS Secret Key" },
+    "sessionToken": { "index": 42, "kind": "parameter", "displayName": "Session Token", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Amazon AWS Session Token used when the user needs to assume an IAM role" },
+    "trustAllCertificates": { "index": 43, "kind": "parameter", "displayName": "Trust All Certificates", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "If we want to trust all certificates in case of overri [...]
+    "useDefaultCredentialsProvider": { "index": 44, "kind": "parameter", "displayName": "Use Default Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Set whether the S3 Vectors client s [...]
+    "useProfileCredentialsProvider": { "index": 45, "kind": "parameter", "displayName": "Use Profile Credentials Provider", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Set whether the S3 Vectors client s [...]
+    "useSessionCredentials": { "index": 46, "kind": "parameter", "displayName": "Use Session Credentials", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration", "configurationField": "configuration", "description": "Set whether the S3 Vectors client should expect to u [...]
+  }
+}
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/generated/resources/META-INF/services/org/apache/camel/component.properties b/components/camel-aws/camel-aws2-s3-vectors/src/generated/resources/META-INF/services/org/apache/camel/component.properties
new file mode 100644
index 000000000000..ed434d2464c8
--- /dev/null
+++ b/components/camel-aws/camel-aws2-s3-vectors/src/generated/resources/META-INF/services/org/apache/camel/component.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+components=aws2-s3-vectors
+groupId=org.apache.camel
+artifactId=camel-aws2-s3-vectors
+version=4.17.0-SNAPSHOT
+projectName=Camel :: AWS2 S3 Vectors
+projectDescription=Store and query vector embeddings using AWS S3 Vectors with similarity search
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/generated/resources/META-INF/services/org/apache/camel/component/aws2-s3-vectors b/components/camel-aws/camel-aws2-s3-vectors/src/generated/resources/META-INF/services/org/apache/camel/component/aws2-s3-vectors
new file mode 100644
index 000000000000..c0385e99f373
--- /dev/null
+++ b/components/camel-aws/camel-aws2-s3-vectors/src/generated/resources/META-INF/services/org/apache/camel/component/aws2-s3-vectors
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsComponent
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/generated/resources/META-INF/services/org/apache/camel/configurer/aws2-s3-vectors-component b/components/camel-aws/camel-aws2-s3-vectors/src/generated/resources/META-INF/services/org/apache/camel/configurer/aws2-s3-vectors-component
new file mode 100644
index 000000000000..32359125371d
--- /dev/null
+++ b/components/camel-aws/camel-aws2-s3-vectors/src/generated/resources/META-INF/services/org/apache/camel/configurer/aws2-s3-vectors-component
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsComponentConfigurer
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/generated/resources/META-INF/services/org/apache/camel/configurer/aws2-s3-vectors-endpoint b/components/camel-aws/camel-aws2-s3-vectors/src/generated/resources/META-INF/services/org/apache/camel/configurer/aws2-s3-vectors-endpoint
new file mode 100644
index 000000000000..65ad9e59a976
--- /dev/null
+++ b/components/camel-aws/camel-aws2-s3-vectors/src/generated/resources/META-INF/services/org/apache/camel/configurer/aws2-s3-vectors-endpoint
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsEndpointConfigurer
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/generated/resources/META-INF/services/org/apache/camel/urifactory/aws2-s3-vectors-endpoint b/components/camel-aws/camel-aws2-s3-vectors/src/generated/resources/META-INF/services/org/apache/camel/urifactory/aws2-s3-vectors-endpoint
new file mode 100644
index 000000000000..3ec2a42abf5d
--- /dev/null
+++ b/components/camel-aws/camel-aws2-s3-vectors/src/generated/resources/META-INF/services/org/apache/camel/urifactory/aws2-s3-vectors-endpoint
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsEndpointUriFactory
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/main/docs/aws2-s3-vectors-component.adoc b/components/camel-aws/camel-aws2-s3-vectors/src/main/docs/aws2-s3-vectors-component.adoc
new file mode 100644
index 000000000000..27df9eab65da
--- /dev/null
+++ b/components/camel-aws/camel-aws2-s3-vectors/src/main/docs/aws2-s3-vectors-component.adoc
@@ -0,0 +1,232 @@
+= AWS S3 Vectors Component
+:doctitle: AWS S3 Vectors
+:shortname: aws2-s3-vectors
+:artifactid: camel-aws2-s3-vectors
+:description: Store and query vector embeddings using AWS S3 Vectors.
+:since: 4.17
+:supportlevel: Preview
+:tabs-sync-option:
+:component-header: Both producer and consumer are supported
+//Manually maintained attributes
+:group: AWS
+:camel-spring-boot-name: aws2-s3-vectors
+
+*Since Camel {since}*
+
+*{component-header}*
+
+The AWS S3 Vectors component stores and queries vector embeddings using https://aws.amazon.com/s3/features/vectors/[Amazon S3 Vectors].
+
+Prerequisites
+
+You need an AWS account with access to S3 Vectors. See https://aws.amazon.com/s3/features/vectors/[Amazon S3 Vectors].
+
+== URI Format
+
+------------------------------
+aws2-s3-vectors://vectorBucketName[?options]
+------------------------------
+
+You can append query options to the URI:
+
+`?option1=value&option2=value&...`
+
+
+// component options: START
+include::partial$component-configure-options.adoc[]
+include::partial$component-endpoint-options.adoc[]
+include::partial$component-endpoint-headers.adoc[]
+// component options: END
+
+
+== Usage
+
+=== Producer Operations
+
+* `putVectors` - Insert vectors
+* `queryVectors` - Search similar vectors
+* `deleteVectors` - Delete vectors
+* `getVectors` - Retrieve vectors by ID
+* `createVectorBucket` - Create bucket
+* `deleteVectorBucket` - Delete bucket
+* `listVectorBuckets` - List buckets
+* `describeVectorBucket` - Get bucket info
+* `createVectorIndex` - Create index
+* `deleteVectorIndex` - Delete index
+* `listVectorIndexes` - List indexes
+* `describeVectorIndex` - Get index info
+
+=== Consumer
+
+The consumer polls for vectors using similarity search. It tracks processed vector IDs to avoid duplicates.
+
+== Examples
+
+=== Insert Vectors
+
+[tabs]
+====
+Java::
++
+[source,java]
+----
+from("direct:insert")
+    .setHeader(AWS2S3VectorsConstants.VECTOR_ID, constant("doc-001"))
+    .setBody(constant(Arrays.asList(0.1f, 0.2f, 0.3f)))
+    .to("aws2-s3-vectors://my-bucket?operation=putVectors&vectorIndexName=my-index");
+----
+
+YAML::
++
+[source,yaml]
+----
+- from:
+    uri: direct:insert
+    steps:
+      - setHeader:
+          name: CamelAwsS3VectorsVectorId
+          constant: doc-001
+      - setBody:
+          constant:
+            - 0.1
+            - 0.2
+            - 0.3
+      - to:
+          uri: aws2-s3-vectors://my-bucket
+          parameters:
+            operation: putVectors
+            vectorIndexName: my-index
+----
+====
+
+=== Query Similar Vectors
+
+[tabs]
+====
+Java::
++
+[source,java]
+----
+from("direct:search")
+    .setBody(constant(Arrays.asList(0.15f, 0.25f, 0.35f)))
+    .setHeader(AWS2S3VectorsConstants.TOP_K, constant(5))
+    .to("aws2-s3-vectors://my-bucket?operation=queryVectors&vectorIndexName=my-index")
+    .log("Found ${body.size} similar vectors");
+----
+
+YAML::
++
+[source,yaml]
+----
+- from:
+    uri: direct:search
+    steps:
+      - setBody:
+          constant:
+            - 0.15
+            - 0.25
+            - 0.35
+      - setHeader:
+          name: CamelAwsS3VectorsTopK
+          constant: 5
+      - to:
+          uri: aws2-s3-vectors://my-bucket
+          parameters:
+            operation: queryVectors
+            vectorIndexName: my-index
+      - log: "Found ${body.size} similar vectors"
+----
+====
+
+=== Consumer Polling
+
+[tabs]
+====
+Java::
++
+[source,java]
+----
+from("aws2-s3-vectors://my-bucket?"
+    + "vectorIndexName=my-index"
+    + "&consumerQueryVector=0.1,0.2,0.3"
+    + "&delay=5000"
+    + "&maxMessagesPerPoll=10")
+    .log("Vector ID: ${header.CamelAwsS3VectorsVectorId}")
+    .to("direct:process");
+----
+
+YAML::
++
+[source,yaml]
+----
+- from:
+    uri: aws2-s3-vectors://my-bucket
+    parameters:
+      vectorIndexName: my-index
+      consumerQueryVector: "0.1,0.2,0.3"
+      delay: 5000
+      maxMessagesPerPoll: 10
+    steps:
+      - log: "Vector ID: ${header.CamelAwsS3VectorsVectorId}"
+      - to: direct:process
+----
+====
+
+=== Create Index
+
+[tabs]
+====
+Java::
++
+[source,java]
+----
+from("direct:createIndex")
+    .setHeader(AWS2S3VectorsConstants.VECTOR_DIMENSIONS, constant(1536))
+    .setHeader(AWS2S3VectorsConstants.DATA_TYPE, constant("float32"))
+    .setHeader(AWS2S3VectorsConstants.DISTANCE_METRIC, constant("cosine"))
+    .to("aws2-s3-vectors://my-bucket?operation=createVectorIndex&vectorIndexName=my-index");
+----
+
+YAML::
++
+[source,yaml]
+----
+- from:
+    uri: direct:createIndex
+    steps:
+      - setHeader:
+          name: CamelAwsS3VectorsVectorDimensions
+          constant: 1536
+      - setHeader:
+          name: CamelAwsS3VectorsDataType
+          constant: float32
+      - setHeader:
+          name: CamelAwsS3VectorsDistanceMetric
+          constant: cosine
+      - to:
+          uri: aws2-s3-vectors://my-bucket
+          parameters:
+            operation: createVectorIndex
+            vectorIndexName: my-index
+----
+====
+
+== Dependencies
+
+Maven users will need to add the following dependency to their `pom.xml`.
+
+*pom.xml*
+
+[source,xml]
+----
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-aws2-s3-vectors</artifactId>
+    <version>x.x.x</version>
+    <!-- use the same version as your Camel core version -->
+</dependency>
+----
+
+where `x.x.x` is the version number of the latest Camel release.
+
+include::spring-boot:partial$starter.adoc[]
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsComponent.java b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsComponent.java
new file mode 100644
index 000000000000..ae52da4df71e
--- /dev/null
+++ b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsComponent.java
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.aws2.s3vectors;
+
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.Endpoint;
+import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.annotations.Component;
+import org.apache.camel.support.HealthCheckComponent;
+
+@Component("aws2-s3-vectors")
+public class AWS2S3VectorsComponent extends HealthCheckComponent {
+    @Metadata
+    private AWS2S3VectorsConfiguration configuration = new AWS2S3VectorsConfiguration();
+
+    public AWS2S3VectorsComponent() {
+        this(null);
+    }
+
+    public AWS2S3VectorsComponent(CamelContext context) {
+        super(context);
+    }
+
+    @Override
+    protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
+
+        if (remaining == null || remaining.isBlank()) {
+            throw new IllegalArgumentException("Vector bucket name must be specified.");
+        }
+        if (remaining.startsWith("arn:")) {
+            remaining = remaining.substring(remaining.lastIndexOf(':') + 1, remaining.length());
+        }
+        final AWS2S3VectorsConfiguration configuration
+                = this.configuration != null ? this.configuration.copy() : new AWS2S3VectorsConfiguration();
+        configuration.setVectorBucketName(remaining);
+        AWS2S3VectorsEndpoint endpoint = new AWS2S3VectorsEndpoint(uri, this, configuration);
+        setProperties(endpoint, parameters);
+        if (Boolean.FALSE.equals(configuration.isUseDefaultCredentialsProvider())
+                && Boolean.FALSE.equals(configuration.isUseProfileCredentialsProvider())
+                && Boolean.FALSE.equals(configuration.isUseSessionCredentials())
+                && configuration.getS3VectorsClient() == null
+                && (configuration.getAccessKey() == null || configuration.getSecretKey() == null)) {
+            throw new IllegalArgumentException(
+                    "useDefaultCredentialsProvider is set to false, useProfileCredentialsProvider is set to false, useSessionCredentials is set to false, S3VectorsClient or accessKey and secretKey must be specified");
+        }
+
+        return endpoint;
+    }
+
+    public AWS2S3VectorsConfiguration getConfiguration() {
+        return configuration;
+    }
+
+    /**
+     * The component configuration
+     */
+    public void setConfiguration(AWS2S3VectorsConfiguration configuration) {
+        this.configuration = configuration;
+    }
+}
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsConfiguration.java b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsConfiguration.java
new file mode 100644
index 000000000000..9aee63486dcf
--- /dev/null
+++ b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsConfiguration.java
@@ -0,0 +1,409 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.aws2.s3vectors;
+
+import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.UriParam;
+import org.apache.camel.spi.UriParams;
+import software.amazon.awssdk.core.Protocol;
+import software.amazon.awssdk.services.s3vectors.S3VectorsClient;
+
+@UriParams
+public class AWS2S3VectorsConfiguration implements Cloneable {
+
+    private String vectorBucketName;
+    @UriParam(label = "advanced")
+    @Metadata(autowired = true)
+    private S3VectorsClient s3VectorsClient;
+    @UriParam(label = "security", secret = true)
+    private String accessKey;
+    @UriParam(label = "security", secret = true)
+    private String secretKey;
+    @UriParam(label = "security", secret = true)
+    private String sessionToken;
+    @UriParam(enums = "ap-south-2,ap-south-1,eu-south-1,eu-south-2,us-gov-east-1,me-central-1,il-central-1,ca-central-1,eu-central-1,us-iso-west-1,eu-central-2,eu-isoe-west-1,us-west-1,us-west-2,af-south-1,eu-north-1,eu-west-3,eu-west-2,eu-west-1,ap-northeast-3,ap-northeast-2,ap-northeast-1,me-south-1,sa-east-1,ap-east-1,cn-north-1,ca-west-1,us-gov-west-1,ap-southeast-1,ap-southeast-2,us-iso-east-1,ap-southeast-3,ap-southeast-4,us-east-1,us-east-2,cn-northwest-1,us-isob-east-1,aws-global [...]
+    private String region;
+    @UriParam(label = "security")
+    private boolean useDefaultCredentialsProvider;
+    @UriParam(label = "security")
+    private boolean useProfileCredentialsProvider;
+    @UriParam(label = "security")
+    private boolean useSessionCredentials;
+    @UriParam(label = "security")
+    private String profileCredentialsName;
+    @UriParam
+    private boolean overrideEndpoint;
+    @UriParam(label = "security")
+    private boolean trustAllCertificates;
+    @UriParam
+    private String uriEndpointOverride;
+    @UriParam(label = "proxy", enums = "HTTP,HTTPS", defaultValue = "HTTPS")
+    private Protocol proxyProtocol = Protocol.HTTPS;
+    @UriParam(label = "proxy")
+    private String proxyHost;
+    @UriParam(label = "proxy")
+    private Integer proxyPort;
+    @UriParam(label = "producer")
+    private AWS2S3VectorsOperations operation;
+
+    // Vector-specific configuration
+    @UriParam
+    private String vectorIndexName;
+    @UriParam(defaultValue = "1536")
+    private Integer vectorDimensions = 1536;
+    @UriParam(enums = "float32,float16", defaultValue = "float32")
+    private String dataType = "float32";
+    @UriParam(enums = "cosine,euclidean,dot-product", defaultValue = "cosine")
+    private String distanceMetric = "cosine";
+    @UriParam(defaultValue = "10")
+    private Integer topK = 10;
+    @UriParam
+    private Float similarityThreshold;
+
+    // Consumer configuration
+    @UriParam(label = "consumer", defaultValue = "500")
+    private long delay = 500;
+    @UriParam(label = "consumer", defaultValue = "10")
+    private int maxMessagesPerPoll = 10;
+    @UriParam(label = "consumer", defaultValue = "false")
+    private boolean deleteAfterRead;
+    @UriParam(label = "consumer")
+    private String consumerQueryVector;
+    @UriParam(label = "consumer")
+    private String consumerMetadataFilter;
+
+    public String getVectorBucketName() {
+        return vectorBucketName;
+    }
+
+    /**
+     * The name of the vector bucket
+     */
+    public void setVectorBucketName(String vectorBucketName) {
+        this.vectorBucketName = vectorBucketName;
+    }
+
+    public S3VectorsClient getS3VectorsClient() {
+        return s3VectorsClient;
+    }
+
+    /**
+     * Reference to a `software.amazon.awssdk.services.s3vectors.S3VectorsClient` in the registry.
+     */
+    public void setS3VectorsClient(S3VectorsClient s3VectorsClient) {
+        this.s3VectorsClient = s3VectorsClient;
+    }
+
+    public String getAccessKey() {
+        return accessKey;
+    }
+
+    /**
+     * Amazon AWS Access Key
+     */
+    public void setAccessKey(String accessKey) {
+        this.accessKey = accessKey;
+    }
+
+    public String getSecretKey() {
+        return secretKey;
+    }
+
+    /**
+     * Amazon AWS Secret Key
+     */
+    public void setSecretKey(String secretKey) {
+        this.secretKey = secretKey;
+    }
+
+    public String getSessionToken() {
+        return sessionToken;
+    }
+
+    /**
+     * Amazon AWS Session Token used when the user needs to assume an IAM role
+     */
+    public void setSessionToken(String sessionToken) {
+        this.sessionToken = sessionToken;
+    }
+
+    public String getRegion() {
+        return region;
+    }
+
+    /**
+     * The region in which S3 Vectors client needs to work. When using this parameter, the configuration will expect the
+     * lowercase name of the region (for example ap-east-1)
+     */
+    public void setRegion(String region) {
+        this.region = region;
+    }
+
+    public boolean isUseDefaultCredentialsProvider() {
+        return useDefaultCredentialsProvider;
+    }
+
+    /**
+     * Set whether the S3 Vectors client should expect to load credentials through a default credentials provider.
+     */
+    public void setUseDefaultCredentialsProvider(boolean useDefaultCredentialsProvider) {
+        this.useDefaultCredentialsProvider = useDefaultCredentialsProvider;
+    }
+
+    public boolean isUseProfileCredentialsProvider() {
+        return useProfileCredentialsProvider;
+    }
+
+    /**
+     * Set whether the S3 Vectors client should expect to load credentials through a profile credentials provider.
+     */
+    public void setUseProfileCredentialsProvider(boolean useProfileCredentialsProvider) {
+        this.useProfileCredentialsProvider = useProfileCredentialsProvider;
+    }
+
+    public boolean isUseSessionCredentials() {
+        return useSessionCredentials;
+    }
+
+    /**
+     * Set whether the S3 Vectors client should expect to use Session Credentials. This is useful in a situation in
+     * which the user needs to assume an IAM role for doing operations in S3 Vectors.
+     */
+    public void setUseSessionCredentials(boolean useSessionCredentials) {
+        this.useSessionCredentials = useSessionCredentials;
+    }
+
+    public String getProfileCredentialsName() {
+        return profileCredentialsName;
+    }
+
+    /**
+     * If using a profile credentials provider, this parameter will set the profile name
+     */
+    public void setProfileCredentialsName(String profileCredentialsName) {
+        this.profileCredentialsName = profileCredentialsName;
+    }
+
+    public Protocol getProxyProtocol() {
+        return proxyProtocol;
+    }
+
+    /**
+     * To define a proxy protocol when instantiating the S3 Vectors client
+     */
+    public void setProxyProtocol(Protocol proxyProtocol) {
+        this.proxyProtocol = proxyProtocol;
+    }
+
+    public String getProxyHost() {
+        return proxyHost;
+    }
+
+    /**
+     * To define a proxy host when instantiating the S3 Vectors client
+     */
+    public void setProxyHost(String proxyHost) {
+        this.proxyHost = proxyHost;
+    }
+
+    public Integer getProxyPort() {
+        return proxyPort;
+    }
+
+    /**
+     * To define a proxy port when instantiating the S3 Vectors client
+     */
+    public void setProxyPort(Integer proxyPort) {
+        this.proxyPort = proxyPort;
+    }
+
+    public AWS2S3VectorsOperations getOperation() {
+        return operation;
+    }
+
+    /**
+     * The operation to perform
+     */
+    public void setOperation(AWS2S3VectorsOperations operation) {
+        this.operation = operation;
+    }
+
+    public boolean isOverrideEndpoint() {
+        return overrideEndpoint;
+    }
+
+    /**
+     * Set the need for overriding the endpoint. This option needs to be used in combination with uriEndpointOverride
+     * option
+     */
+    public void setOverrideEndpoint(boolean overrideEndpoint) {
+        this.overrideEndpoint = overrideEndpoint;
+    }
+
+    public String getUriEndpointOverride() {
+        return uriEndpointOverride;
+    }
+
+    /**
+     * Set the overriding uri endpoint. This option needs to be used in combination with overrideEndpoint option
+     */
+    public void setUriEndpointOverride(String uriEndpointOverride) {
+        this.uriEndpointOverride = uriEndpointOverride;
+    }
+
+    public boolean isTrustAllCertificates() {
+        return trustAllCertificates;
+    }
+
+    /**
+     * If we want to trust all certificates in case of overriding the endpoint
+     */
+    public void setTrustAllCertificates(boolean trustAllCertificates) {
+        this.trustAllCertificates = trustAllCertificates;
+    }
+
+    public String getVectorIndexName() {
+        return vectorIndexName;
+    }
+
+    /**
+     * The name of the vector index
+     */
+    public void setVectorIndexName(String vectorIndexName) {
+        this.vectorIndexName = vectorIndexName;
+    }
+
+    public Integer getVectorDimensions() {
+        return vectorDimensions;
+    }
+
+    /**
+     * The dimensions of the vector embeddings (default: 1536, which is the dimension for OpenAI text-embedding-3-small)
+     */
+    public void setVectorDimensions(Integer vectorDimensions) {
+        this.vectorDimensions = vectorDimensions;
+    }
+
+    public String getDataType() {
+        return dataType;
+    }
+
+    /**
+     * The data type of the vector. Options: float32, float16
+     */
+    public void setDataType(String dataType) {
+        this.dataType = dataType;
+    }
+
+    public String getDistanceMetric() {
+        return distanceMetric;
+    }
+
+    /**
+     * The distance metric to use for similarity search. Options: cosine, euclidean, dot-product
+     */
+    public void setDistanceMetric(String distanceMetric) {
+        this.distanceMetric = distanceMetric;
+    }
+
+    public Integer getTopK() {
+        return topK;
+    }
+
+    /**
+     * The number of top similar vectors to return in a query
+     */
+    public void setTopK(Integer topK) {
+        this.topK = topK;
+    }
+
+    public Float getSimilarityThreshold() {
+        return similarityThreshold;
+    }
+
+    /**
+     * The minimum similarity threshold for results
+     */
+    public void setSimilarityThreshold(Float similarityThreshold) {
+        this.similarityThreshold = similarityThreshold;
+    }
+
+    public long getDelay() {
+        return delay;
+    }
+
+    /**
+     * Milliseconds before the next poll for the consumer
+     */
+    public void setDelay(long delay) {
+        this.delay = delay;
+    }
+
+    public int getMaxMessagesPerPoll() {
+        return maxMessagesPerPoll;
+    }
+
+    /**
+     * The maximum number of messages to consume per poll for the consumer
+     */
+    public void setMaxMessagesPerPoll(int maxMessagesPerPoll) {
+        this.maxMessagesPerPoll = maxMessagesPerPoll;
+    }
+
+    public boolean isDeleteAfterRead() {
+        return deleteAfterRead;
+    }
+
+    /**
+     * Delete vectors after they have been consumed
+     */
+    public void setDeleteAfterRead(boolean deleteAfterRead) {
+        this.deleteAfterRead = deleteAfterRead;
+    }
+
+    public String getConsumerQueryVector() {
+        return consumerQueryVector;
+    }
+
+    /**
+     * The query vector to use for the consumer to poll for similar vectors. Specified as comma-separated float values
+     * (e.g., "0.1,0.2,0.3"). If not specified, the consumer will not poll.
+     */
+    public void setConsumerQueryVector(String consumerQueryVector) {
+        this.consumerQueryVector = consumerQueryVector;
+    }
+
+    public String getConsumerMetadataFilter() {
+        return consumerMetadataFilter;
+    }
+
+    /**
+     * Optional metadata filter for the consumer to filter vectors during polling
+     */
+    public void setConsumerMetadataFilter(String consumerMetadataFilter) {
+        this.consumerMetadataFilter = consumerMetadataFilter;
+    }
+
+    public AWS2S3VectorsConfiguration copy() {
+        try {
+            return (AWS2S3VectorsConfiguration) super.clone();
+        } catch (CloneNotSupportedException e) {
+            throw new RuntimeCamelException(e);
+        }
+    }
+}
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsConstants.java b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsConstants.java
new file mode 100644
index 000000000000..8cbda99857a4
--- /dev/null
+++ b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsConstants.java
@@ -0,0 +1,96 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.aws2.s3vectors;
+
+import org.apache.camel.spi.Metadata;
+
+/**
+ * Constants used in Camel AWS2 S3 Vectors module
+ */
+public interface AWS2S3VectorsConstants {
+
+    @Metadata(description = "The operation to perform", javaType = "String")
+    String OPERATION = "CamelAwsS3VectorsOperation";
+
+    // Vector Bucket and Index
+    @Metadata(description = "The name of the vector bucket which will be used for the current operation",
+              javaType = "String")
+    String VECTOR_BUCKET_NAME = "CamelAwsS3VectorsVectorBucketName";
+    @Metadata(description = "The name of the vector index which will be used for the current operation",
+              javaType = "String")
+    String VECTOR_INDEX_NAME = "CamelAwsS3VectorsVectorIndexName";
+
+    // Vector Data
+    @Metadata(label = "producer", description = "The unique identifier for a vector", javaType = "String")
+    String VECTOR_ID = "CamelAwsS3VectorsVectorId";
+    @Metadata(label = "producer",
+              description = "The vector embedding data as a list of floats or float array",
+              javaType = "List<Float> or float[]")
+    String VECTOR_DATA = "CamelAwsS3VectorsVectorData";
+    @Metadata(label = "producer", description = "The dimensions of the vector", javaType = "Integer")
+    String VECTOR_DIMENSIONS = "CamelAwsS3VectorsVectorDimensions";
+    @Metadata(label = "producer",
+              description = "The data type of the vector (float32 or float16)",
+              javaType = "String")
+    String DATA_TYPE = "CamelAwsS3VectorsDataType";
+    @Metadata(label = "producer",
+              description = "Additional metadata for the vector as a map",
+              javaType = "Map<String, String>")
+    String VECTOR_METADATA = "CamelAwsS3VectorsVectorMetadata";
+
+    // Query Parameters
+    @Metadata(label = "producer",
+              description = "The query vector for similarity search as a list of floats or float array",
+              javaType = "List<Float> or float[]")
+    String QUERY_VECTOR = "CamelAwsS3VectorsQueryVector";
+    @Metadata(label = "producer",
+              description = "The number of top similar vectors to return",
+              javaType = "Integer")
+    String TOP_K = "CamelAwsS3VectorsTopK";
+    @Metadata(label = "producer",
+              description = "The distance metric to use for similarity search (cosine, euclidean, dot-product)",
+              javaType = "String")
+    String DISTANCE_METRIC = "CamelAwsS3VectorsDistanceMetric";
+    @Metadata(label = "producer",
+              description = "The minimum similarity threshold for results",
+              javaType = "Float")
+    String SIMILARITY_THRESHOLD = "CamelAwsS3VectorsSimilarityThreshold";
+    @Metadata(label = "producer",
+              description = "Optional filter expression for metadata filtering during vector search",
+              javaType = "String")
+    String METADATA_FILTER = "CamelAwsS3VectorsMetadataFilter";
+
+    // Query Results
+    @Metadata(label = "consumer",
+              description = "The similarity score of the returned vector",
+              javaType = "Float")
+    String SIMILARITY_SCORE = "CamelAwsS3VectorsSimilarityScore";
+    @Metadata(label = "consumer",
+              description = "The number of vectors returned in the result",
+              javaType = "Integer")
+    String RESULT_COUNT = "CamelAwsS3VectorsResultCount";
+
+    // Bucket/Index Status
+    @Metadata(label = "consumer",
+              description = "The status of the vector index",
+              javaType = "String")
+    String INDEX_STATUS = "CamelAwsS3VectorsIndexStatus";
+    @Metadata(label = "consumer",
+              description = "The ARN of the vector bucket",
+              javaType = "String")
+    String VECTOR_BUCKET_ARN = "CamelAwsS3VectorsVectorBucketArn";
+}
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsConsumer.java b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsConsumer.java
new file mode 100644
index 000000000000..9267d901a483
--- /dev/null
+++ b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsConsumer.java
@@ -0,0 +1,271 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.aws2.s3vectors;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Queue;
+import java.util.Set;
+
+import org.apache.camel.AsyncCallback;
+import org.apache.camel.Exchange;
+import org.apache.camel.ExchangePropertyKey;
+import org.apache.camel.Message;
+import org.apache.camel.Processor;
+import org.apache.camel.support.ScheduledBatchPollingConsumer;
+import org.apache.camel.support.SynchronizationAdapter;
+import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import software.amazon.awssdk.services.s3vectors.S3VectorsClient;
+import software.amazon.awssdk.services.s3vectors.model.DeleteVectorsRequest;
+import software.amazon.awssdk.services.s3vectors.model.QueryOutputVector;
+import software.amazon.awssdk.services.s3vectors.model.QueryVectorsRequest;
+import software.amazon.awssdk.services.s3vectors.model.QueryVectorsResponse;
+import software.amazon.awssdk.services.s3vectors.model.VectorData;
+
+/**
+ * A Consumer that polls AWS S3 Vectors by performing similarity searches and returning matching vectors
+ */
+public class AWS2S3VectorsConsumer extends ScheduledBatchPollingConsumer {
+
+    private static final Logger LOG = LoggerFactory.getLogger(AWS2S3VectorsConsumer.class);
+
+    private final Set<String> processedVectorIds = new HashSet<>();
+
+    public AWS2S3VectorsConsumer(AWS2S3VectorsEndpoint endpoint, Processor processor) {
+        super(endpoint, processor);
+    }
+
+    @Override
+    protected int poll() throws Exception {
+        // must reset for each poll
+        shutdownRunningTask = null;
+        pendingExchanges = 0;
+
+        String vectorBucketName = getConfiguration().getVectorBucketName();
+        String vectorIndexName = getConfiguration().getVectorIndexName();
+        String queryVectorString = getConfiguration().getConsumerQueryVector();
+
+        // If no query vector is configured, cannot poll
+        if (queryVectorString == null || queryVectorString.trim().isEmpty()) {
+            LOG.trace(
+                    "No query vector configured for consumer, skipping poll. Set consumerQueryVector to enable polling.");
+            return 0;
+        }
+
+        // Parse comma-separated string to List<Float>
+        List<Float> queryVector = parseVectorString(queryVectorString);
+
+        LOG.trace("Polling vector bucket [{}] with index [{}] using query vector", vectorBucketName, vectorIndexName);
+
+        Queue<Exchange> exchanges = new LinkedList<>();
+
+        try {
+            // Build query request
+            QueryVectorsRequest.Builder requestBuilder = QueryVectorsRequest.builder()
+                    .vectorBucketName(vectorBucketName)
+                    .indexName(vectorIndexName)
+                    .queryVector(VectorData.builder().float32(queryVector).build())
+                    .topK(Math.min(getMaxMessagesPerPoll(), getConfiguration().getTopK()));
+
+            // Add metadata filter if configured
+            String metadataFilter = getConfiguration().getConsumerMetadataFilter();
+            if (ObjectHelper.isNotEmpty(metadataFilter)) {
+                // Note: Metadata filter implementation depends on AWS SDK support
+                LOG.trace("Using metadata filter: {}", metadataFilter);
+            }
+
+            // Execute query
+            QueryVectorsResponse response = getS3VectorsClient().queryVectors(requestBuilder.build());
+
+            if (response.hasVectors()) {
+                List<QueryOutputVector> vectors = response.vectors();
+                LOG.trace("Query returned {} vectors", vectors.size());
+
+                // Create exchanges for each vector
+                for (QueryOutputVector vector : vectors) {
+                    String vectorId = vector.key();
+
+                    // Skip if already processed (to avoid duplicates in subsequent polls)
+                    if (processedVectorIds.contains(vectorId)) {
+                        LOG.trace("Skipping already processed vector [{}]", vectorId);
+                        continue;
+                    }
+
+                    // Create exchange
+                    Exchange exchange = createExchange(false);
+                    Message message = exchange.getIn();
+
+                    // Set vector data as body
+                    message.setBody(vector);
+
+                    // Set headers
+                    message.setHeader(AWS2S3VectorsConstants.VECTOR_ID, vectorId);
+                    message.setHeader(AWS2S3VectorsConstants.VECTOR_BUCKET_NAME, vectorBucketName);
+                    message.setHeader(AWS2S3VectorsConstants.VECTOR_INDEX_NAME, vectorIndexName);
+
+                    // Add to processed set
+                    processedVectorIds.add(vectorId);
+
+                    // Add delete callback if deleteAfterRead is enabled
+                    if (getConfiguration().isDeleteAfterRead()) {
+                        exchange.getExchangeExtension().addOnCompletion(
+                                new VectorDeleteSynchronization(
+                                        getS3VectorsClient(), vectorBucketName, vectorIndexName,
+                                        vectorId));
+                    }
+
+                    exchanges.add(exchange);
+                }
+            } else {
+                LOG.trace("No vectors returned from query");
+            }
+
+        } catch (Exception e) {
+            LOG.error("Error polling S3 Vectors", e);
+            throw e;
+        }
+
+        return processBatch(ObjectHelper.cast(Queue.class, exchanges));
+    }
+
+    @Override
+    public int processBatch(Queue<Object> exchanges) throws Exception {
+        int total = exchanges.size();
+
+        for (int index = 0; index < total && isBatchAllowed(); index++) {
+            // only loop if we are started (allowed to run)
+            final Exchange exchange = ObjectHelper.cast(Exchange.class, exchanges.poll());
+            // add current index and total as properties
+            exchange.setProperty(ExchangePropertyKey.BATCH_INDEX, index);
+            exchange.setProperty(ExchangePropertyKey.BATCH_SIZE, total);
+            exchange.setProperty(ExchangePropertyKey.BATCH_COMPLETE, index == total - 1);
+
+            // update pending number of exchanges
+            pendingExchanges = total - index - 1;
+
+            // use default consumer callback
+            AsyncCallback cb = defaultConsumerCallback(exchange, true);
+            getAsyncProcessor().process(exchange, cb);
+        }
+
+        return total;
+    }
+
+    @Override
+    protected void doStart() throws Exception {
+        super.doStart();
+        LOG.debug("Starting S3 Vectors consumer for bucket [{}]", getConfiguration().getVectorBucketName());
+
+        // Validate configuration
+        if (getConfiguration().getVectorIndexName() == null) {
+            throw new IllegalArgumentException("vectorIndexName is required for the consumer");
+        }
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // Clear processed vector IDs on stop
+        processedVectorIds.clear();
+        super.doStop();
+    }
+
+    @Override
+    public AWS2S3VectorsEndpoint getEndpoint() {
+        return (AWS2S3VectorsEndpoint) super.getEndpoint();
+    }
+
+    private AWS2S3VectorsConfiguration getConfiguration() {
+        return getEndpoint().getConfiguration();
+    }
+
+    private S3VectorsClient getS3VectorsClient() {
+        return getEndpoint().getS3VectorsClient();
+    }
+
+    /**
+     * Parse comma-separated vector string into List<Float>
+     *
+     * @param  vectorString comma-separated float values (e.g., "0.1,0.2,0.3")
+     * @return              List of Float values
+     */
+    private List<Float> parseVectorString(String vectorString) {
+        List<Float> result = new ArrayList<>();
+        String[] parts = vectorString.split(",");
+        for (String part : parts) {
+            try {
+                result.add(Float.parseFloat(part.trim()));
+            } catch (NumberFormatException e) {
+                LOG.warn("Failed to parse vector component '{}' as float, skipping", part);
+            }
+        }
+        if (result.isEmpty()) {
+            throw new IllegalArgumentException(
+                    "consumerQueryVector must contain at least one valid float value. Got: " + vectorString);
+        }
+        return result;
+    }
+
+    /**
+     * Synchronization callback to delete a vector after successful processing
+     */
+    private static class VectorDeleteSynchronization extends SynchronizationAdapter {
+
+        private final S3VectorsClient client;
+        private final String vectorBucketName;
+        private final String vectorIndexName;
+        private final String vectorId;
+
+        public VectorDeleteSynchronization(
+                                           S3VectorsClient client, String vectorBucketName, String vectorIndexName,
+                                           String vectorId) {
+            this.client = client;
+            this.vectorBucketName = vectorBucketName;
+            this.vectorIndexName = vectorIndexName;
+            this.vectorId = vectorId;
+        }
+
+        @Override
+        public void onComplete(Exchange exchange) {
+            try {
+                LOG.trace("Deleting vector [{}] from bucket [{}] index [{}] after successful processing",
+                        vectorId, vectorBucketName, vectorIndexName);
+
+                List<String> keysToDelete = new ArrayList<>();
+                keysToDelete.add(vectorId);
+
+                client.deleteVectors(DeleteVectorsRequest.builder()
+                        .vectorBucketName(vectorBucketName)
+                        .indexName(vectorIndexName)
+                        .keys(keysToDelete)
+                        .build());
+
+                LOG.debug("Deleted vector [{}] after successful processing", vectorId);
+            } catch (Exception e) {
+                LOG.warn("Error deleting vector [{}] after processing: {}", vectorId, e.getMessage(), e);
+            }
+        }
+
+        @Override
+        public void onFailure(Exchange exchange) {
+            LOG.trace("Exchange failed, not deleting vector [{}]", vectorId);
+        }
+    }
+}
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsEndpoint.java b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsEndpoint.java
new file mode 100644
index 000000000000..6f10dfd72d21
--- /dev/null
+++ b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsEndpoint.java
@@ -0,0 +1,145 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.aws2.s3vectors;
+
+import java.util.Map;
+
+import org.apache.camel.Category;
+import org.apache.camel.Component;
+import org.apache.camel.Consumer;
+import org.apache.camel.Processor;
+import org.apache.camel.Producer;
+import org.apache.camel.component.aws2.s3vectors.client.AWS2S3VectorsClientFactory;
+import org.apache.camel.spi.EndpointServiceLocation;
+import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.UriEndpoint;
+import org.apache.camel.spi.UriParam;
+import org.apache.camel.spi.UriPath;
+import org.apache.camel.support.ScheduledPollEndpoint;
+import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import software.amazon.awssdk.services.s3vectors.S3VectorsClient;
+
+/**
+ * Store and query vector embeddings using AWS S3 Vectors with similarity search.
+ */
+@UriEndpoint(firstVersion = "4.17.0", scheme = "aws2-s3-vectors", title = "AWS S3 Vectors",
+             syntax = "aws2-s3-vectors://vectorBucketName", category = { Category.CLOUD, Category.AI },
+             headersClass = AWS2S3VectorsConstants.class)
+public class AWS2S3VectorsEndpoint extends ScheduledPollEndpoint implements EndpointServiceLocation {
+
+    private static final Logger LOG = LoggerFactory.getLogger(AWS2S3VectorsEndpoint.class);
+
+    private S3VectorsClient s3VectorsClient;
+
+    @UriPath(description = "Vector bucket name or ARN")
+    @Metadata(required = true)
+    private String vectorBucketName;
+    @UriParam
+    private AWS2S3VectorsConfiguration configuration;
+
+    public AWS2S3VectorsEndpoint(String uri, Component comp, AWS2S3VectorsConfiguration configuration) {
+        super(uri, comp);
+        this.configuration = configuration;
+    }
+
+    @Override
+    public String getServiceUrl() {
+        if (!configuration.isOverrideEndpoint()) {
+            return getServiceProtocol() + "." + configuration.getRegion() + ".amazonaws.com";
+        } else if (ObjectHelper.isNotEmpty(configuration.getUriEndpointOverride())) {
+            return configuration.getUriEndpointOverride();
+        }
+        return null;
+    }
+
+    @Override
+    public String getServiceProtocol() {
+        return "s3vectors";
+    }
+
+    @Override
+    public Map<String, String> getServiceMetadata() {
+        if (configuration.getRegion() != null) {
+            return Map.of("region", configuration.getRegion());
+        }
+        return null;
+    }
+
+    @Override
+    public Consumer createConsumer(Processor processor) throws Exception {
+        AWS2S3VectorsConsumer consumer = new AWS2S3VectorsConsumer(this, processor);
+        configureConsumer(consumer);
+        return consumer;
+    }
+
+    @Override
+    public Producer createProducer() throws Exception {
+        return new AWS2S3VectorsProducer(this);
+    }
+
+    @Override
+    public AWS2S3VectorsComponent getComponent() {
+        return (AWS2S3VectorsComponent) super.getComponent();
+    }
+
+    @Override
+    public void doStart() throws Exception {
+        super.doStart();
+
+        s3VectorsClient = configuration.getS3VectorsClient() != null
+                ? configuration.getS3VectorsClient()
+                : AWS2S3VectorsClientFactory.getS3VectorsClient(configuration).getS3VectorsClient();
+
+        LOG.trace("Using vector bucket [{}]", vectorBucketName);
+    }
+
+    @Override
+    public void doStop() throws Exception {
+        if (ObjectHelper.isEmpty(configuration.getS3VectorsClient())) {
+            if (s3VectorsClient != null) {
+                s3VectorsClient.close();
+            }
+        }
+        super.doStop();
+    }
+
+    public AWS2S3VectorsConfiguration getConfiguration() {
+        return configuration;
+    }
+
+    public void setConfiguration(AWS2S3VectorsConfiguration configuration) {
+        this.configuration = configuration;
+    }
+
+    public S3VectorsClient getS3VectorsClient() {
+        return s3VectorsClient;
+    }
+
+    public void setS3VectorsClient(S3VectorsClient s3VectorsClient) {
+        this.s3VectorsClient = s3VectorsClient;
+    }
+
+    public String getVectorBucketName() {
+        return vectorBucketName;
+    }
+
+    public void setVectorBucketName(String vectorBucketName) {
+        this.vectorBucketName = vectorBucketName;
+    }
+}
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsOperations.java b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsOperations.java
new file mode 100644
index 000000000000..bceaecc72c73
--- /dev/null
+++ b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsOperations.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.aws2.s3vectors;
+
+public enum AWS2S3VectorsOperations {
+
+    // Vector Operations
+    putVectors,
+    queryVectors,
+    deleteVectors,
+    getVectors,
+
+    // Vector Bucket Operations
+    createVectorBucket,
+    deleteVectorBucket,
+    listVectorBuckets,
+    describeVectorBucket,
+
+    // Vector Index Operations
+    createVectorIndex,
+    deleteVectorIndex,
+    listVectorIndexes,
+    describeVectorIndex
+}
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsProducer.java b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsProducer.java
new file mode 100644
index 000000000000..6ac1e5344bb1
--- /dev/null
+++ b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsProducer.java
@@ -0,0 +1,521 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.aws2.s3vectors;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.Exchange;
+import org.apache.camel.Message;
+import org.apache.camel.support.DefaultProducer;
+import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import software.amazon.awssdk.core.document.Document;
+import software.amazon.awssdk.services.s3vectors.S3VectorsClient;
+import software.amazon.awssdk.services.s3vectors.model.CreateIndexRequest;
+import software.amazon.awssdk.services.s3vectors.model.CreateIndexResponse;
+import software.amazon.awssdk.services.s3vectors.model.CreateVectorBucketRequest;
+import software.amazon.awssdk.services.s3vectors.model.CreateVectorBucketResponse;
+import software.amazon.awssdk.services.s3vectors.model.DeleteIndexRequest;
+import software.amazon.awssdk.services.s3vectors.model.DeleteIndexResponse;
+import software.amazon.awssdk.services.s3vectors.model.DeleteVectorBucketRequest;
+import software.amazon.awssdk.services.s3vectors.model.DeleteVectorBucketResponse;
+import software.amazon.awssdk.services.s3vectors.model.DeleteVectorsRequest;
+import software.amazon.awssdk.services.s3vectors.model.DeleteVectorsResponse;
+import software.amazon.awssdk.services.s3vectors.model.GetIndexRequest;
+import software.amazon.awssdk.services.s3vectors.model.GetIndexResponse;
+import software.amazon.awssdk.services.s3vectors.model.GetVectorBucketRequest;
+import software.amazon.awssdk.services.s3vectors.model.GetVectorBucketResponse;
+import software.amazon.awssdk.services.s3vectors.model.GetVectorsRequest;
+import software.amazon.awssdk.services.s3vectors.model.GetVectorsResponse;
+import software.amazon.awssdk.services.s3vectors.model.ListIndexesRequest;
+import software.amazon.awssdk.services.s3vectors.model.ListIndexesResponse;
+import software.amazon.awssdk.services.s3vectors.model.ListVectorBucketsRequest;
+import software.amazon.awssdk.services.s3vectors.model.ListVectorBucketsResponse;
+import software.amazon.awssdk.services.s3vectors.model.PutInputVector;
+import software.amazon.awssdk.services.s3vectors.model.PutVectorsRequest;
+import software.amazon.awssdk.services.s3vectors.model.PutVectorsResponse;
+import software.amazon.awssdk.services.s3vectors.model.QueryVectorsRequest;
+import software.amazon.awssdk.services.s3vectors.model.QueryVectorsResponse;
+import software.amazon.awssdk.services.s3vectors.model.VectorData;
+
+/**
+ * A Producer which sends messages to AWS S3 Vectors for vector storage and similarity search
+ */
+public class AWS2S3VectorsProducer extends DefaultProducer {
+
+    private static final Logger LOG = LoggerFactory.getLogger(AWS2S3VectorsProducer.class);
+
+    public AWS2S3VectorsProducer(final Endpoint endpoint) {
+        super(endpoint);
+    }
+
+    @Override
+    public void process(final Exchange exchange) throws Exception {
+        AWS2S3VectorsOperations operation = determineOperation(exchange);
+        if (ObjectHelper.isEmpty(operation)) {
+            throw new IllegalArgumentException("Operation must be specified");
+        }
+
+        switch (operation) {
+            case putVectors:
+                putVectors(getEndpoint().getS3VectorsClient(), exchange);
+                break;
+            case queryVectors:
+                queryVectors(getEndpoint().getS3VectorsClient(), exchange);
+                break;
+            case deleteVectors:
+                deleteVectors(getEndpoint().getS3VectorsClient(), exchange);
+                break;
+            case getVectors:
+                getVectors(getEndpoint().getS3VectorsClient(), exchange);
+                break;
+            case createVectorBucket:
+                createVectorBucket(getEndpoint().getS3VectorsClient(), exchange);
+                break;
+            case deleteVectorBucket:
+                deleteVectorBucket(getEndpoint().getS3VectorsClient(), exchange);
+                break;
+            case listVectorBuckets:
+                listVectorBuckets(getEndpoint().getS3VectorsClient(), exchange);
+                break;
+            case describeVectorBucket:
+                describeVectorBucket(getEndpoint().getS3VectorsClient(), exchange);
+                break;
+            case createVectorIndex:
+                createVectorIndex(getEndpoint().getS3VectorsClient(), exchange);
+                break;
+            case deleteVectorIndex:
+                deleteVectorIndex(getEndpoint().getS3VectorsClient(), exchange);
+                break;
+            case listVectorIndexes:
+                listVectorIndexes(getEndpoint().getS3VectorsClient(), exchange);
+                break;
+            case describeVectorIndex:
+                describeVectorIndex(getEndpoint().getS3VectorsClient(), exchange);
+                break;
+            default:
+                throw new IllegalArgumentException("Unsupported operation: " + operation);
+        }
+    }
+
+    private AWS2S3VectorsOperations determineOperation(Exchange exchange) {
+        AWS2S3VectorsOperations operation = exchange.getIn().getHeader(AWS2S3VectorsConstants.OPERATION,
+                AWS2S3VectorsOperations.class);
+        if (operation == null) {
+            operation = getConfiguration().getOperation();
+        }
+        return operation;
+    }
+
+    private void putVectors(S3VectorsClient client, Exchange exchange) {
+        Message message = exchange.getIn();
+        String vectorBucketName = determineVectorBucketName(exchange);
+        String vectorIndexName = determineVectorIndexName(exchange);
+
+        // Get vector data from header or body
+        Object vectorDataObj = message.getHeader(AWS2S3VectorsConstants.VECTOR_DATA);
+        if (vectorDataObj == null) {
+            vectorDataObj = message.getBody();
+        }
+
+        // Get vector ID
+        String vectorId = message.getHeader(AWS2S3VectorsConstants.VECTOR_ID, String.class);
+        if (vectorId == null) {
+            vectorId = exchange.getExchangeId(); // Use exchange ID as default
+        }
+
+        // Get metadata if provided
+        @SuppressWarnings("unchecked")
+        Map<String, String> metadata = message.getHeader(AWS2S3VectorsConstants.VECTOR_METADATA, Map.class);
+
+        // Convert vector data to List<Float>
+        List<Float> vectorData = convertToFloatList(vectorDataObj);
+
+        // Build the input vector
+        PutInputVector.Builder vectorBuilder = PutInputVector.builder()
+                .key(vectorId)
+                .data(VectorData.builder().float32(vectorData).build());
+
+        if (metadata != null && !metadata.isEmpty()) {
+            // Convert Map to Document
+            Document metadataDoc = convertMapToDocument(metadata);
+            vectorBuilder.metadata(metadataDoc);
+        }
+
+        // Build and execute request
+        PutVectorsRequest request = PutVectorsRequest.builder()
+                .vectorBucketName(vectorBucketName)
+                .indexName(vectorIndexName)
+                .vectors(vectorBuilder.build())
+                .build();
+
+        LOG.trace("Putting vector [{}] to bucket [{}] index [{}]", vectorId, vectorBucketName, vectorIndexName);
+        PutVectorsResponse response = client.putVectors(request);
+        LOG.trace("Put vector response: {}", response);
+
+        // Set response headers
+        message.setHeader(AWS2S3VectorsConstants.VECTOR_BUCKET_NAME, vectorBucketName);
+        message.setHeader(AWS2S3VectorsConstants.VECTOR_INDEX_NAME, vectorIndexName);
+        message.setHeader(AWS2S3VectorsConstants.VECTOR_ID, vectorId);
+        message.setBody(response);
+    }
+
+    private void queryVectors(S3VectorsClient client, Exchange exchange) {
+        Message message = exchange.getIn();
+        String vectorBucketName = determineVectorBucketName(exchange);
+        String vectorIndexName = determineVectorIndexName(exchange);
+
+        // Get query vector from header or body
+        Object queryVectorObj = message.getHeader(AWS2S3VectorsConstants.QUERY_VECTOR);
+        if (queryVectorObj == null) {
+            queryVectorObj = message.getBody();
+        }
+
+        List<Float> queryVector = convertToFloatList(queryVectorObj);
+
+        // Get query parameters
+        Integer topK = message.getHeader(AWS2S3VectorsConstants.TOP_K, Integer.class);
+        if (topK == null) {
+            topK = getConfiguration().getTopK();
+        }
+
+        // Build and execute request (metadata filter can be complex, skip for now)
+        QueryVectorsRequest.Builder requestBuilder = QueryVectorsRequest.builder()
+                .vectorBucketName(vectorBucketName)
+                .indexName(vectorIndexName)
+                .queryVector(VectorData.builder().float32(queryVector).build())
+                .topK(topK);
+
+        LOG.trace("Querying vectors in bucket [{}] index [{}] with topK [{}]", vectorBucketName, vectorIndexName, topK);
+        QueryVectorsResponse response = client.queryVectors(requestBuilder.build());
+        LOG.trace("Query vectors response: {}", response);
+
+        // Set response headers
+        message.setHeader(AWS2S3VectorsConstants.RESULT_COUNT, response.vectors().size());
+        message.setBody(response.vectors());
+    }
+
+    private void deleteVectors(S3VectorsClient client, Exchange exchange) {
+        Message message = exchange.getIn();
+        String vectorBucketName = determineVectorBucketName(exchange);
+        String vectorIndexName = determineVectorIndexName(exchange);
+
+        // Get vector IDs from header or body
+        Object vectorIdsObj = message.getHeader(AWS2S3VectorsConstants.VECTOR_ID);
+        if (vectorIdsObj == null) {
+            vectorIdsObj = message.getBody();
+        }
+
+        List<String> vectorIds = convertToStringList(vectorIdsObj);
+
+        // Build and execute request
+        DeleteVectorsRequest request = DeleteVectorsRequest.builder()
+                .vectorBucketName(vectorBucketName)
+                .indexName(vectorIndexName)
+                .keys(vectorIds)
+                .build();
+
+        LOG.trace("Deleting vectors [{}] from bucket [{}] index [{}]", vectorIds, vectorBucketName, vectorIndexName);
+        DeleteVectorsResponse response = client.deleteVectors(request);
+        LOG.trace("Delete vectors response: {}", response);
+
+        message.setBody(response);
+    }
+
+    private void getVectors(S3VectorsClient client, Exchange exchange) {
+        Message message = exchange.getIn();
+        String vectorBucketName = determineVectorBucketName(exchange);
+        String vectorIndexName = determineVectorIndexName(exchange);
+
+        // Get vector IDs from header or body
+        Object vectorIdsObj = message.getHeader(AWS2S3VectorsConstants.VECTOR_ID);
+        if (vectorIdsObj == null) {
+            vectorIdsObj = message.getBody();
+        }
+
+        List<String> vectorIds = convertToStringList(vectorIdsObj);
+
+        // Build and execute request
+        GetVectorsRequest request = GetVectorsRequest.builder()
+                .vectorBucketName(vectorBucketName)
+                .indexName(vectorIndexName)
+                .keys(vectorIds)
+                .build();
+
+        LOG.trace("Getting vectors [{}] from bucket [{}] index [{}]", vectorIds, vectorBucketName, vectorIndexName);
+        GetVectorsResponse response = client.getVectors(request);
+        LOG.trace("Get vectors response: {}", response);
+
+        message.setBody(response.vectors());
+    }
+
+    private void createVectorBucket(S3VectorsClient client, Exchange exchange) {
+        Message message = exchange.getIn();
+        String vectorBucketName = determineVectorBucketName(exchange);
+
+        CreateVectorBucketRequest request = CreateVectorBucketRequest.builder()
+                .vectorBucketName(vectorBucketName)
+                .build();
+
+        LOG.trace("Creating vector bucket [{}]", vectorBucketName);
+        CreateVectorBucketResponse response = client.createVectorBucket(request);
+        LOG.trace("Create vector bucket response: {}", response);
+
+        message.setHeader(AWS2S3VectorsConstants.VECTOR_BUCKET_NAME, vectorBucketName);
+        message.setHeader(AWS2S3VectorsConstants.VECTOR_BUCKET_ARN, response.vectorBucketArn());
+        message.setBody(response);
+    }
+
+    private void deleteVectorBucket(S3VectorsClient client, Exchange exchange) {
+        Message message = exchange.getIn();
+        String vectorBucketName = determineVectorBucketName(exchange);
+
+        DeleteVectorBucketRequest request = DeleteVectorBucketRequest.builder()
+                .vectorBucketName(vectorBucketName)
+                .build();
+
+        LOG.trace("Deleting vector bucket [{}]", vectorBucketName);
+        DeleteVectorBucketResponse response = client.deleteVectorBucket(request);
+        LOG.trace("Delete vector bucket response: {}", response);
+
+        message.setBody(response);
+    }
+
+    private void listVectorBuckets(S3VectorsClient client, Exchange exchange) {
+        Message message = exchange.getIn();
+
+        ListVectorBucketsRequest request = ListVectorBucketsRequest.builder().build();
+
+        LOG.trace("Listing vector buckets");
+        ListVectorBucketsResponse response = client.listVectorBuckets(request);
+        LOG.trace("List vector buckets response: {}", response);
+
+        message.setBody(response.vectorBuckets());
+    }
+
+    private void describeVectorBucket(S3VectorsClient client, Exchange exchange) {
+        Message message = exchange.getIn();
+        String vectorBucketName = determineVectorBucketName(exchange);
+
+        GetVectorBucketRequest request = GetVectorBucketRequest.builder()
+                .vectorBucketName(vectorBucketName)
+                .build();
+
+        LOG.trace("Describing vector bucket [{}]", vectorBucketName);
+        GetVectorBucketResponse response = client.getVectorBucket(request);
+        LOG.trace("Describe vector bucket response: {}", response);
+
+        // Vector bucket ARN may not be available in response, skip setting it
+        message.setBody(response);
+    }
+
+    private void createVectorIndex(S3VectorsClient client, Exchange exchange) {
+        Message message = exchange.getIn();
+        String vectorBucketName = determineVectorBucketName(exchange);
+        String vectorIndexName = determineVectorIndexName(exchange);
+
+        Integer dimensions = message.getHeader(AWS2S3VectorsConstants.VECTOR_DIMENSIONS, Integer.class);
+        if (dimensions == null) {
+            dimensions = getConfiguration().getVectorDimensions();
+        }
+
+        String dataType = message.getHeader(AWS2S3VectorsConstants.DATA_TYPE, String.class);
+        if (dataType == null) {
+            dataType = getConfiguration().getDataType();
+        }
+
+        String distanceMetric = message.getHeader(AWS2S3VectorsConstants.DISTANCE_METRIC, String.class);
+        if (distanceMetric == null) {
+            distanceMetric = getConfiguration().getDistanceMetric();
+        }
+
+        CreateIndexRequest request = CreateIndexRequest.builder()
+                .vectorBucketName(vectorBucketName)
+                .indexName(vectorIndexName)
+                .dimension(dimensions)
+                .dataType(dataType)
+                .distanceMetric(distanceMetric)
+                .build();
+
+        LOG.trace("Creating vector index [{}] in bucket [{}] with dimensions [{}]", vectorIndexName, vectorBucketName,
+                dimensions);
+        CreateIndexResponse response = client.createIndex(request);
+        LOG.trace("Create vector index response: {}", response);
+
+        message.setHeader(AWS2S3VectorsConstants.VECTOR_INDEX_NAME, vectorIndexName);
+        // Status may not be available in response
+        message.setBody(response);
+    }
+
+    private void deleteVectorIndex(S3VectorsClient client, Exchange exchange) {
+        Message message = exchange.getIn();
+        String vectorBucketName = determineVectorBucketName(exchange);
+        String vectorIndexName = determineVectorIndexName(exchange);
+
+        DeleteIndexRequest request = DeleteIndexRequest.builder()
+                .vectorBucketName(vectorBucketName)
+                .indexName(vectorIndexName)
+                .build();
+
+        LOG.trace("Deleting vector index [{}] from bucket [{}]", vectorIndexName, vectorBucketName);
+        DeleteIndexResponse response = client.deleteIndex(request);
+        LOG.trace("Delete vector index response: {}", response);
+
+        message.setBody(response);
+    }
+
+    private void listVectorIndexes(S3VectorsClient client, Exchange exchange) {
+        Message message = exchange.getIn();
+        String vectorBucketName = determineVectorBucketName(exchange);
+
+        ListIndexesRequest request = ListIndexesRequest.builder()
+                .vectorBucketName(vectorBucketName)
+                .build();
+
+        LOG.trace("Listing vector indexes in bucket [{}]", vectorBucketName);
+        ListIndexesResponse response = client.listIndexes(request);
+        LOG.trace("List vector indexes response: {}", response);
+
+        message.setBody(response.indexes());
+    }
+
+    private void describeVectorIndex(S3VectorsClient client, Exchange exchange) {
+        Message message = exchange.getIn();
+        String vectorBucketName = determineVectorBucketName(exchange);
+        String vectorIndexName = determineVectorIndexName(exchange);
+
+        GetIndexRequest request = GetIndexRequest.builder()
+                .vectorBucketName(vectorBucketName)
+                .indexName(vectorIndexName)
+                .build();
+
+        LOG.trace("Describing vector index [{}] in bucket [{}]", vectorIndexName, vectorBucketName);
+        GetIndexResponse response = client.getIndex(request);
+        LOG.trace("Describe vector index response: {}", response);
+
+        // Status may not be available in response
+        message.setBody(response);
+    }
+
+    private String determineVectorBucketName(Exchange exchange) {
+        String vectorBucketName = exchange.getIn().getHeader(AWS2S3VectorsConstants.VECTOR_BUCKET_NAME, String.class);
+        if (vectorBucketName == null) {
+            vectorBucketName = getConfiguration().getVectorBucketName();
+        }
+        if (vectorBucketName == null) {
+            throw new IllegalArgumentException("Vector bucket name must be specified");
+        }
+        return vectorBucketName;
+    }
+
+    private String determineVectorIndexName(Exchange exchange) {
+        String vectorIndexName = exchange.getIn().getHeader(AWS2S3VectorsConstants.VECTOR_INDEX_NAME, String.class);
+        if (vectorIndexName == null) {
+            vectorIndexName = getConfiguration().getVectorIndexName();
+        }
+        if (vectorIndexName == null) {
+            throw new IllegalArgumentException("Vector index name must be specified");
+        }
+        return vectorIndexName;
+    }
+
+    @SuppressWarnings("unchecked")
+    private List<Float> convertToFloatList(Object obj) {
+        if (obj == null) {
+            throw new IllegalArgumentException("Vector data cannot be null");
+        }
+
+        if (obj instanceof List) {
+            List<?> list = (List<?>) obj;
+            List<Float> result = new ArrayList<>(list.size());
+            for (Object item : list) {
+                if (item instanceof Float) {
+                    result.add((Float) item);
+                } else if (item instanceof Number) {
+                    result.add(((Number) item).floatValue());
+                } else {
+                    throw new IllegalArgumentException("Invalid vector data type: " + item.getClass());
+                }
+            }
+            return result;
+        } else if (obj instanceof float[]) {
+            float[] array = (float[]) obj;
+            List<Float> result = new ArrayList<>(array.length);
+            for (float f : array) {
+                result.add(f);
+            }
+            return result;
+        } else if (obj instanceof double[]) {
+            double[] array = (double[]) obj;
+            List<Float> result = new ArrayList<>(array.length);
+            for (double d : array) {
+                result.add((float) d);
+            }
+            return result;
+        } else {
+            throw new IllegalArgumentException("Unsupported vector data type: " + obj.getClass());
+        }
+    }
+
+    @SuppressWarnings("unchecked")
+    private List<String> convertToStringList(Object obj) {
+        if (obj == null) {
+            throw new IllegalArgumentException("Vector IDs cannot be null");
+        }
+
+        if (obj instanceof List) {
+            return (List<String>) obj;
+        } else if (obj instanceof String) {
+            List<String> result = new ArrayList<>();
+            result.add((String) obj);
+            return result;
+        } else if (obj instanceof String[]) {
+            String[] array = (String[]) obj;
+            List<String> result = new ArrayList<>(array.length);
+            for (String s : array) {
+                result.add(s);
+            }
+            return result;
+        } else {
+            throw new IllegalArgumentException("Unsupported vector ID type: " + obj.getClass());
+        }
+    }
+
+    private Document convertMapToDocument(Map<String, String> map) {
+        if (map == null || map.isEmpty()) {
+            return null;
+        }
+        Document.MapBuilder builder = Document.mapBuilder();
+        for (Map.Entry<String, String> entry : map.entrySet()) {
+            builder.putString(entry.getKey(), entry.getValue());
+        }
+        return builder.build();
+    }
+
+    @Override
+    public AWS2S3VectorsEndpoint getEndpoint() {
+        return (AWS2S3VectorsEndpoint) super.getEndpoint();
+    }
+
+    private AWS2S3VectorsConfiguration getConfiguration() {
+        return getEndpoint().getConfiguration();
+    }
+}
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/AWS2CamelS3VectorsInternalClient.java b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/AWS2CamelS3VectorsInternalClient.java
new file mode 100644
index 000000000000..8cb553f0fe16
--- /dev/null
+++ b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/AWS2CamelS3VectorsInternalClient.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.aws2.s3vectors.client;
+
+import software.amazon.awssdk.services.s3vectors.S3VectorsClient;
+
+/**
+ * Manage the required actions of an S3 Vectors client for either local or remote.
+ */
+public interface AWS2CamelS3VectorsInternalClient {
+
+    /**
+     * Returns an S3 Vectors client after a factory method determines which one to return.
+     *
+     * @return S3VectorsClient
+     */
+    S3VectorsClient getS3VectorsClient();
+}
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/AWS2S3VectorsClientFactory.java b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/AWS2S3VectorsClientFactory.java
new file mode 100644
index 000000000000..94e88e6303f7
--- /dev/null
+++ b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/AWS2S3VectorsClientFactory.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.aws2.s3vectors.client;
+
+import org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration;
+import org.apache.camel.component.aws2.s3vectors.client.impl.AWS2S3VectorsClientIAMOptimizedImpl;
+import org.apache.camel.component.aws2.s3vectors.client.impl.AWS2S3VectorsClientIAMProfileOptimizedImpl;
+import org.apache.camel.component.aws2.s3vectors.client.impl.AWS2S3VectorsClientSessionTokenImpl;
+import org.apache.camel.component.aws2.s3vectors.client.impl.AWS2S3VectorsClientStandardImpl;
+
+/**
+ * Factory class to return the correct type of AWS S3 Vectors client.
+ */
+public final class AWS2S3VectorsClientFactory {
+
+    private AWS2S3VectorsClientFactory() {
+    }
+
+    /**
+     * Return the correct AWS S3 Vectors client (based on configuration).
+     *
+     * @param  configuration configuration
+     * @return               AWS2CamelS3VectorsInternalClient
+     */
+    public static AWS2CamelS3VectorsInternalClient getS3VectorsClient(AWS2S3VectorsConfiguration configuration) {
+        if (Boolean.TRUE.equals(configuration.isUseDefaultCredentialsProvider())) {
+            return new AWS2S3VectorsClientIAMOptimizedImpl(configuration);
+        } else if (Boolean.TRUE.equals(configuration.isUseProfileCredentialsProvider())) {
+            return new AWS2S3VectorsClientIAMProfileOptimizedImpl(configuration);
+        } else if (Boolean.TRUE.equals(configuration.isUseSessionCredentials())) {
+            return new AWS2S3VectorsClientSessionTokenImpl(configuration);
+        } else {
+            return new AWS2S3VectorsClientStandardImpl(configuration);
+        }
+    }
+}
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/impl/AWS2S3VectorsClientIAMOptimizedImpl.java b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/impl/AWS2S3VectorsClientIAMOptimizedImpl.java
new file mode 100644
index 000000000000..712850a0064c
--- /dev/null
+++ b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/impl/AWS2S3VectorsClientIAMOptimizedImpl.java
@@ -0,0 +1,93 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.aws2.s3vectors.client.impl;
+
+import java.net.URI;
+
+import org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration;
+import org.apache.camel.component.aws2.s3vectors.client.AWS2CamelS3VectorsInternalClient;
+import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import software.amazon.awssdk.http.SdkHttpClient;
+import software.amazon.awssdk.http.SdkHttpConfigurationOption;
+import software.amazon.awssdk.http.apache.ApacheHttpClient;
+import software.amazon.awssdk.http.apache.ProxyConfiguration;
+import software.amazon.awssdk.regions.Region;
+import software.amazon.awssdk.services.s3vectors.S3VectorsClient;
+import software.amazon.awssdk.services.s3vectors.S3VectorsClientBuilder;
+import software.amazon.awssdk.utils.AttributeMap;
+
+/**
+ * Manage an AWS S3 Vectors client for all users to use (enabling temporary creds). This implementation is for remote
+ * instances to manage the credentials on their own (eliminating credential rotations)
+ */
+public class AWS2S3VectorsClientIAMOptimizedImpl implements AWS2CamelS3VectorsInternalClient {
+    private static final Logger LOG = LoggerFactory.getLogger(AWS2S3VectorsClientIAMOptimizedImpl.class);
+    private AWS2S3VectorsConfiguration configuration;
+
+    /**
+     * Constructor that uses the config file.
+     */
+    public AWS2S3VectorsClientIAMOptimizedImpl(AWS2S3VectorsConfiguration configuration) {
+        LOG.trace("Creating an AWS S3 Vectors client for an ec2 instance with IAM temporary credentials (normal for ec2s).");
+        this.configuration = configuration;
+    }
+
+    /**
+     * Getting the S3 Vectors AWS client that is used.
+     *
+     * @return S3 Vectors Client.
+     */
+    @Override
+    public S3VectorsClient getS3VectorsClient() {
+        S3VectorsClient client = null;
+        S3VectorsClientBuilder clientBuilder = S3VectorsClient.builder();
+        ProxyConfiguration.Builder proxyConfig = null;
+        ApacheHttpClient.Builder httpClientBuilder = null;
+        if (ObjectHelper.isNotEmpty(configuration.getProxyHost()) && ObjectHelper.isNotEmpty(configuration.getProxyPort())) {
+            proxyConfig = ProxyConfiguration.builder();
+            URI proxyEndpoint = URI.create(configuration.getProxyProtocol() + "://" + configuration.getProxyHost() + ":"
+                                           + configuration.getProxyPort());
+            proxyConfig.endpoint(proxyEndpoint);
+            httpClientBuilder = ApacheHttpClient.builder().proxyConfiguration(proxyConfig.build());
+            clientBuilder = clientBuilder.httpClientBuilder(httpClientBuilder);
+        }
+        if (ObjectHelper.isNotEmpty(configuration.getRegion())) {
+            clientBuilder = clientBuilder.region(Region.of(configuration.getRegion()));
+        }
+        if (configuration.isOverrideEndpoint()) {
+            clientBuilder.endpointOverride(URI.create(configuration.getUriEndpointOverride()));
+        }
+        if (configuration.isTrustAllCertificates()) {
+            if (httpClientBuilder == null) {
+                httpClientBuilder = ApacheHttpClient.builder();
+            }
+            SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
+                    .builder()
+                    .put(
+                            SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
+                            Boolean.TRUE)
+                    .build());
+            // set created http client to use instead of builder
+            clientBuilder.httpClient(ahc);
+            clientBuilder.httpClientBuilder(null);
+        }
+        client = clientBuilder.build();
+        return client;
+    }
+}
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/impl/AWS2S3VectorsClientIAMProfileOptimizedImpl.java b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/impl/AWS2S3VectorsClientIAMProfileOptimizedImpl.java
new file mode 100644
index 000000000000..730ef2f1e860
--- /dev/null
+++ b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/impl/AWS2S3VectorsClientIAMProfileOptimizedImpl.java
@@ -0,0 +1,110 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.aws2.s3vectors.client.impl;
+
+import java.net.URI;
+
+import org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration;
+import org.apache.camel.component.aws2.s3vectors.client.AWS2CamelS3VectorsInternalClient;
+import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
+import software.amazon.awssdk.http.SdkHttpClient;
+import software.amazon.awssdk.http.SdkHttpConfigurationOption;
+import software.amazon.awssdk.http.apache.ApacheHttpClient;
+import software.amazon.awssdk.http.apache.ProxyConfiguration;
+import software.amazon.awssdk.regions.Region;
+import software.amazon.awssdk.services.s3vectors.S3VectorsClient;
+import software.amazon.awssdk.services.s3vectors.S3VectorsClientBuilder;
+import software.amazon.awssdk.utils.AttributeMap;
+
+/**
+ * Manage an AWS S3 Vectors client using profile credentials.
+ */
+public class AWS2S3VectorsClientIAMProfileOptimizedImpl implements AWS2CamelS3VectorsInternalClient {
+    private static final Logger LOG = LoggerFactory.getLogger(AWS2S3VectorsClientIAMProfileOptimizedImpl.class);
+    private AWS2S3VectorsConfiguration configuration;
+
+    /**
+     * Constructor that uses the config file.
+     */
+    public AWS2S3VectorsClientIAMProfileOptimizedImpl(AWS2S3VectorsConfiguration configuration) {
+        LOG.trace("Creating an AWS S3 Vectors client using profile credentials.");
+        this.configuration = configuration;
+    }
+
+    /**
+     * Getting the S3 Vectors AWS client that is used.
+     *
+     * @return S3 Vectors Client.
+     */
+    @Override
+    public S3VectorsClient getS3VectorsClient() {
+        S3VectorsClient client = null;
+        S3VectorsClientBuilder clientBuilder = S3VectorsClient.builder();
+        ProxyConfiguration.Builder proxyConfig = null;
+        ApacheHttpClient.Builder httpClientBuilder = null;
+        boolean isClientConfigFound = false;
+        if (ObjectHelper.isNotEmpty(configuration.getProxyHost()) && ObjectHelper.isNotEmpty(configuration.getProxyPort())) {
+            proxyConfig = ProxyConfiguration.builder();
+            URI proxyEndpoint = URI.create(configuration.getProxyProtocol() + "://" + configuration.getProxyHost() + ":"
+                                           + configuration.getProxyPort());
+            proxyConfig.endpoint(proxyEndpoint);
+            httpClientBuilder = ApacheHttpClient.builder().proxyConfiguration(proxyConfig.build());
+            isClientConfigFound = true;
+        }
+        if (configuration.getProfileCredentialsName() != null) {
+            if (isClientConfigFound) {
+                clientBuilder = clientBuilder.httpClientBuilder(httpClientBuilder)
+                        .credentialsProvider(ProfileCredentialsProvider.create(configuration.getProfileCredentialsName()));
+            } else {
+                clientBuilder = clientBuilder
+                        .credentialsProvider(ProfileCredentialsProvider.create(configuration.getProfileCredentialsName()));
+            }
+        } else {
+            if (isClientConfigFound) {
+                clientBuilder = clientBuilder.httpClientBuilder(httpClientBuilder)
+                        .credentialsProvider(ProfileCredentialsProvider.create());
+            } else {
+                clientBuilder = clientBuilder.credentialsProvider(ProfileCredentialsProvider.create());
+            }
+        }
+        if (ObjectHelper.isNotEmpty(configuration.getRegion())) {
+            clientBuilder = clientBuilder.region(Region.of(configuration.getRegion()));
+        }
+        if (configuration.isOverrideEndpoint()) {
+            clientBuilder.endpointOverride(URI.create(configuration.getUriEndpointOverride()));
+        }
+        if (configuration.isTrustAllCertificates()) {
+            if (httpClientBuilder == null) {
+                httpClientBuilder = ApacheHttpClient.builder();
+            }
+            SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
+                    .builder()
+                    .put(
+                            SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
+                            Boolean.TRUE)
+                    .build());
+            // set created http client to use instead of builder
+            clientBuilder.httpClient(ahc);
+            clientBuilder.httpClientBuilder(null);
+        }
+        client = clientBuilder.build();
+        return client;
+    }
+}
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/impl/AWS2S3VectorsClientSessionTokenImpl.java b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/impl/AWS2S3VectorsClientSessionTokenImpl.java
new file mode 100644
index 000000000000..00baec3b93b9
--- /dev/null
+++ b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/impl/AWS2S3VectorsClientSessionTokenImpl.java
@@ -0,0 +1,110 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.aws2.s3vectors.client.impl;
+
+import java.net.URI;
+
+import org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration;
+import org.apache.camel.component.aws2.s3vectors.client.AWS2CamelS3VectorsInternalClient;
+import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import software.amazon.awssdk.auth.credentials.AwsSessionCredentials;
+import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
+import software.amazon.awssdk.http.SdkHttpClient;
+import software.amazon.awssdk.http.SdkHttpConfigurationOption;
+import software.amazon.awssdk.http.apache.ApacheHttpClient;
+import software.amazon.awssdk.http.apache.ProxyConfiguration;
+import software.amazon.awssdk.regions.Region;
+import software.amazon.awssdk.services.s3vectors.S3VectorsClient;
+import software.amazon.awssdk.services.s3vectors.S3VectorsClientBuilder;
+import software.amazon.awssdk.utils.AttributeMap;
+
+/**
+ * Manage an AWS S3 Vectors client using session credentials.
+ */
+public class AWS2S3VectorsClientSessionTokenImpl implements AWS2CamelS3VectorsInternalClient {
+    private static final Logger LOG = LoggerFactory.getLogger(AWS2S3VectorsClientSessionTokenImpl.class);
+    private AWS2S3VectorsConfiguration configuration;
+
+    /**
+     * Constructor that uses the config file.
+     */
+    public AWS2S3VectorsClientSessionTokenImpl(AWS2S3VectorsConfiguration configuration) {
+        LOG.trace("Creating an AWS S3 Vectors client using session credentials.");
+        this.configuration = configuration;
+    }
+
+    /**
+     * Getting the S3 Vectors AWS client that is used.
+     *
+     * @return S3 Vectors Client.
+     */
+    @Override
+    public S3VectorsClient getS3VectorsClient() {
+        S3VectorsClient client = null;
+        S3VectorsClientBuilder clientBuilder = S3VectorsClient.builder();
+        ProxyConfiguration.Builder proxyConfig = null;
+        ApacheHttpClient.Builder httpClientBuilder = null;
+        boolean isClientConfigFound = false;
+        if (ObjectHelper.isNotEmpty(configuration.getProxyHost()) && ObjectHelper.isNotEmpty(configuration.getProxyPort())) {
+            proxyConfig = ProxyConfiguration.builder();
+            URI proxyEndpoint = URI.create(configuration.getProxyProtocol() + "://" + configuration.getProxyHost() + ":"
+                                           + configuration.getProxyPort());
+            proxyConfig.endpoint(proxyEndpoint);
+            httpClientBuilder = ApacheHttpClient.builder().proxyConfiguration(proxyConfig.build());
+            isClientConfigFound = true;
+        }
+        if (configuration.getAccessKey() != null && configuration.getSecretKey() != null
+                && configuration.getSessionToken() != null) {
+            AwsSessionCredentials cred = AwsSessionCredentials.create(configuration.getAccessKey(),
+                    configuration.getSecretKey(), configuration.getSessionToken());
+            if (isClientConfigFound) {
+                clientBuilder = clientBuilder.httpClientBuilder(httpClientBuilder)
+                        .credentialsProvider(StaticCredentialsProvider.create(cred));
+            } else {
+                clientBuilder = clientBuilder.credentialsProvider(StaticCredentialsProvider.create(cred));
+            }
+        } else {
+            if (!isClientConfigFound) {
+                clientBuilder = clientBuilder.httpClientBuilder(httpClientBuilder);
+            }
+        }
+        if (ObjectHelper.isNotEmpty(configuration.getRegion())) {
+            clientBuilder = clientBuilder.region(Region.of(configuration.getRegion()));
+        }
+        if (configuration.isOverrideEndpoint()) {
+            clientBuilder.endpointOverride(URI.create(configuration.getUriEndpointOverride()));
+        }
+        if (configuration.isTrustAllCertificates()) {
+            if (httpClientBuilder == null) {
+                httpClientBuilder = ApacheHttpClient.builder();
+            }
+            SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
+                    .builder()
+                    .put(
+                            SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
+                            Boolean.TRUE)
+                    .build());
+            // set created http client to use instead of builder
+            clientBuilder.httpClient(ahc);
+            clientBuilder.httpClientBuilder(null);
+        }
+        client = clientBuilder.build();
+        return client;
+    }
+}
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/impl/AWS2S3VectorsClientStandardImpl.java b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/impl/AWS2S3VectorsClientStandardImpl.java
new file mode 100644
index 000000000000..09d3671eb069
--- /dev/null
+++ b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/client/impl/AWS2S3VectorsClientStandardImpl.java
@@ -0,0 +1,109 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.aws2.s3vectors.client.impl;
+
+import java.net.URI;
+
+import org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration;
+import org.apache.camel.component.aws2.s3vectors.client.AWS2CamelS3VectorsInternalClient;
+import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
+import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
+import software.amazon.awssdk.http.SdkHttpClient;
+import software.amazon.awssdk.http.SdkHttpConfigurationOption;
+import software.amazon.awssdk.http.apache.ApacheHttpClient;
+import software.amazon.awssdk.http.apache.ProxyConfiguration;
+import software.amazon.awssdk.regions.Region;
+import software.amazon.awssdk.services.s3vectors.S3VectorsClient;
+import software.amazon.awssdk.services.s3vectors.S3VectorsClientBuilder;
+import software.amazon.awssdk.utils.AttributeMap;
+
+/**
+ * Manage an AWS S3 Vectors client for all users to use. This implementation is for local instances to use a static and
+ * solid credential set.
+ */
+public class AWS2S3VectorsClientStandardImpl implements AWS2CamelS3VectorsInternalClient {
+    private static final Logger LOG = LoggerFactory.getLogger(AWS2S3VectorsClientStandardImpl.class);
+    private AWS2S3VectorsConfiguration configuration;
+
+    /**
+     * Constructor that uses the config file.
+     */
+    public AWS2S3VectorsClientStandardImpl(AWS2S3VectorsConfiguration configuration) {
+        LOG.trace("Creating an AWS S3 Vectors client using static credentials.");
+        this.configuration = configuration;
+    }
+
+    /**
+     * Getting the S3 Vectors AWS client that is used.
+     *
+     * @return S3 Vectors Client.
+     */
+    @Override
+    public S3VectorsClient getS3VectorsClient() {
+        S3VectorsClient client = null;
+        S3VectorsClientBuilder clientBuilder = S3VectorsClient.builder();
+        ProxyConfiguration.Builder proxyConfig = null;
+        ApacheHttpClient.Builder httpClientBuilder = null;
+        boolean isClientConfigFound = false;
+        if (ObjectHelper.isNotEmpty(configuration.getProxyHost()) && ObjectHelper.isNotEmpty(configuration.getProxyPort())) {
+            proxyConfig = ProxyConfiguration.builder();
+            URI proxyEndpoint = URI.create(configuration.getProxyProtocol() + "://" + configuration.getProxyHost() + ":"
+                                           + configuration.getProxyPort());
+            proxyConfig.endpoint(proxyEndpoint);
+            httpClientBuilder = ApacheHttpClient.builder().proxyConfiguration(proxyConfig.build());
+            isClientConfigFound = true;
+        }
+        if (configuration.getAccessKey() != null && configuration.getSecretKey() != null) {
+            AwsBasicCredentials cred = AwsBasicCredentials.create(configuration.getAccessKey(), configuration.getSecretKey());
+            if (isClientConfigFound) {
+                clientBuilder = clientBuilder.httpClientBuilder(httpClientBuilder)
+                        .credentialsProvider(StaticCredentialsProvider.create(cred));
+            } else {
+                clientBuilder = clientBuilder.credentialsProvider(StaticCredentialsProvider.create(cred));
+            }
+        } else {
+            if (!isClientConfigFound) {
+                clientBuilder = clientBuilder.httpClientBuilder(httpClientBuilder);
+            }
+        }
+        if (ObjectHelper.isNotEmpty(configuration.getRegion())) {
+            clientBuilder = clientBuilder.region(Region.of(configuration.getRegion()));
+        }
+        if (configuration.isOverrideEndpoint()) {
+            clientBuilder.endpointOverride(URI.create(configuration.getUriEndpointOverride()));
+        }
+        if (configuration.isTrustAllCertificates()) {
+            if (httpClientBuilder == null) {
+                httpClientBuilder = ApacheHttpClient.builder();
+            }
+            SdkHttpClient ahc = httpClientBuilder.buildWithDefaults(AttributeMap
+                    .builder()
+                    .put(
+                            SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES,
+                            Boolean.TRUE)
+                    .build());
+            // set created http client to use instead of builder
+            clientBuilder.httpClient(ahc);
+            clientBuilder.httpClientBuilder(null);
+        }
+        client = clientBuilder.build();
+        return client;
+    }
+}
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/test/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsProducerTest.java b/components/camel-aws/camel-aws2-s3-vectors/src/test/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsProducerTest.java
new file mode 100644
index 000000000000..07db4a265c5e
--- /dev/null
+++ b/components/camel-aws/camel-aws2-s3-vectors/src/test/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsProducerTest.java
@@ -0,0 +1,104 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.aws2.s3vectors;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.support.DefaultExchange;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
+import software.amazon.awssdk.services.s3vectors.S3VectorsClient;
+import software.amazon.awssdk.services.s3vectors.model.PutVectorsRequest;
+import software.amazon.awssdk.services.s3vectors.model.PutVectorsResponse;
+import software.amazon.awssdk.services.s3vectors.model.QueryVectorsRequest;
+import software.amazon.awssdk.services.s3vectors.model.QueryVectorsResponse;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+public class AWS2S3VectorsProducerTest {
+
+    private AWS2S3VectorsEndpoint endpoint;
+    private S3VectorsClient s3VectorsClient;
+    private AWS2S3VectorsProducer producer;
+
+    @BeforeEach
+    public void setup() {
+        DefaultCamelContext context = new DefaultCamelContext();
+        s3VectorsClient = Mockito.mock(S3VectorsClient.class);
+
+        AWS2S3VectorsConfiguration configuration = new AWS2S3VectorsConfiguration();
+        configuration.setVectorBucketName("test-bucket");
+        configuration.setVectorIndexName("test-index");
+
+        endpoint = new AWS2S3VectorsEndpoint("aws2-s3-vectors://test-bucket", null, configuration);
+        endpoint.setS3VectorsClient(s3VectorsClient);
+        producer = new AWS2S3VectorsProducer(endpoint);
+    }
+
+    @Test
+    public void testPutVectors() throws Exception {
+        // Mock response
+        PutVectorsResponse mockResponse = PutVectorsResponse.builder().build();
+        when(s3VectorsClient.putVectors(any(PutVectorsRequest.class))).thenReturn(mockResponse);
+
+        // Create exchange
+        Exchange exchange = new DefaultExchange(new DefaultCamelContext());
+        exchange.getIn().setHeader(AWS2S3VectorsConstants.OPERATION, AWS2S3VectorsOperations.putVectors);
+        exchange.getIn().setHeader(AWS2S3VectorsConstants.VECTOR_ID, "test-vec-1");
+
+        List<Float> vectorData = Arrays.asList(0.1f, 0.2f, 0.3f);
+        exchange.getIn().setBody(vectorData);
+
+        // Process
+        producer.process(exchange);
+
+        // Verify
+        verify(s3VectorsClient).putVectors(any(PutVectorsRequest.class));
+        assertNotNull(exchange.getMessage().getBody());
+    }
+
+    @Test
+    public void testQueryVectors() throws Exception {
+        // Mock response
+        QueryVectorsResponse mockResponse = QueryVectorsResponse.builder()
+                .vectors(Arrays.asList())
+                .build();
+        when(s3VectorsClient.queryVectors(any(QueryVectorsRequest.class))).thenReturn(mockResponse);
+
+        // Create exchange
+        Exchange exchange = new DefaultExchange(new DefaultCamelContext());
+        exchange.getIn().setHeader(AWS2S3VectorsConstants.OPERATION, AWS2S3VectorsOperations.queryVectors);
+        exchange.getIn().setHeader(AWS2S3VectorsConstants.TOP_K, 5);
+
+        List<Float> queryVector = Arrays.asList(0.1f, 0.2f, 0.3f);
+        exchange.getIn().setBody(queryVector);
+
+        // Process
+        producer.process(exchange);
+
+        // Verify
+        verify(s3VectorsClient).queryVectors(any(QueryVectorsRequest.class));
+        assertNotNull(exchange.getMessage().getBody());
+    }
+}
diff --git a/components/camel-aws/camel-aws2-s3-vectors/src/test/java/org/apache/camel/component/aws2/s3vectors/integration/S3VectorsComponentManualIT.java b/components/camel-aws/camel-aws2-s3-vectors/src/test/java/org/apache/camel/component/aws2/s3vectors/integration/S3VectorsComponentManualIT.java
new file mode 100644
index 000000000000..e4231a412fb1
--- /dev/null
+++ b/components/camel-aws/camel-aws2-s3-vectors/src/test/java/org/apache/camel/component/aws2/s3vectors/integration/S3VectorsComponentManualIT.java
@@ -0,0 +1,444 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.aws2.s3vectors.integration;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.camel.BindToRegistry;
+import org.apache.camel.EndpointInject;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants;
+import org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsEndpoint;
+import org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsOperations;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.MethodOrderer;
+import org.junit.jupiter.api.Order;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.api.TestMethodOrder;
+import org.junit.jupiter.api.condition.EnabledIfSystemProperties;
+import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
+import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
+import software.amazon.awssdk.regions.Region;
+import software.amazon.awssdk.services.s3vectors.S3VectorsClient;
+import software.amazon.awssdk.services.s3vectors.model.CreateIndexRequest;
+import software.amazon.awssdk.services.s3vectors.model.CreateVectorBucketRequest;
+import software.amazon.awssdk.services.s3vectors.model.DeleteIndexRequest;
+import software.amazon.awssdk.services.s3vectors.model.DeleteVectorBucketRequest;
+import software.amazon.awssdk.services.s3vectors.model.PutVectorsResponse;
+import software.amazon.awssdk.services.s3vectors.model.QueryOutputVector;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * Manual integration test for AWS S3 Vectors component.
+ *
+ * To run this test, set the following system properties: - aws.manual.access.key - aws.manual.secret.key -
+ * aws.manual.region (optional, defaults to us-east-1)
+ *
+ * Example: mvn test -Dtest=S3VectorsComponentManualIT -Daws.manual.access.key=YOUR_KEY
+ * -Daws.manual.secret.key=YOUR_SECRET -Daws.manual.region=us-east-1
+ */
+@EnabledIfSystemProperties({
+        @EnabledIfSystemProperty(named = "aws.manual.access.key", matches = ".*", disabledReason = "Access key not provided"),
+        @EnabledIfSystemProperty(named = "aws.manual.secret.key", matches = ".*", disabledReason = "Secret key not provided")
+})
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
+@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
+public class S3VectorsComponentManualIT extends CamelTestSupport {
+
+    private static final Logger LOG = LoggerFactory.getLogger(S3VectorsComponentManualIT.class);
+
+    private static final String ACCESS_KEY = System.getProperty("aws.manual.access.key");
+    private static final String SECRET_KEY = System.getProperty("aws.manual.secret.key");
+    private static final String REGION = System.getProperty("aws.manual.region", "us-east-1");
+
+    private static final String TEST_VECTOR_BUCKET = "camel-s3-vectors-test-" + System.currentTimeMillis();
+    private static final String TEST_INDEX_NAME = "test-embeddings-index";
+    private static final int VECTOR_DIMENSIONS = 3;
+
+    @EndpointInject
+    private ProducerTemplate template;
+
+    @EndpointInject("mock:result")
+    private MockEndpoint result;
+
+    @BindToRegistry("s3VectorsClient")
+    S3VectorsClient client = S3VectorsClient.builder()
+            .credentialsProvider(StaticCredentialsProvider.create(
+                    AwsBasicCredentials.create(ACCESS_KEY, SECRET_KEY)))
+            .region(Region.of(REGION))
+            .build();
+
+    @BeforeAll
+    public void setupVectorBucket() {
+        LOG.info("Creating vector bucket [{}] for integration tests", TEST_VECTOR_BUCKET);
+
+        try {
+            // Create vector bucket
+            client.createVectorBucket(CreateVectorBucketRequest.builder()
+                    .vectorBucketName(TEST_VECTOR_BUCKET)
+                    .build());
+            LOG.info("Vector bucket created successfully");
+
+            // Wait a bit for bucket to be ready
+            Thread.sleep(2000);
+
+            // Create vector index
+            client.createIndex(CreateIndexRequest.builder()
+                    .vectorBucketName(TEST_VECTOR_BUCKET)
+                    .indexName(TEST_INDEX_NAME)
+                    .dimension(VECTOR_DIMENSIONS)
+                    .dataType("float32")  // Required: float32 or float16
+                    .distanceMetric("cosine")
+                    .build());
+            LOG.info("Vector index [{}] created successfully", TEST_INDEX_NAME);
+
+            // Wait for index to be ready
+            Thread.sleep(5000);
+
+        } catch (Exception e) {
+            LOG.error("Failed to setup vector bucket and index", e);
+            throw new RuntimeException("Failed to setup test environment", e);
+        }
+    }
+
+    @AfterAll
+    public void cleanupVectorBucket() {
+        LOG.info("Cleaning up vector bucket [{}]", TEST_VECTOR_BUCKET);
+
+        try {
+            // Delete vector index
+            client.deleteIndex(DeleteIndexRequest.builder()
+                    .vectorBucketName(TEST_VECTOR_BUCKET)
+                    .indexName(TEST_INDEX_NAME)
+                    .build());
+            LOG.info("Vector index deleted successfully");
+
+            // Wait a bit
+            Thread.sleep(2000);
+
+            // Delete vector bucket
+            client.deleteVectorBucket(DeleteVectorBucketRequest.builder()
+                    .vectorBucketName(TEST_VECTOR_BUCKET)
+                    .build());
+            LOG.info("Vector bucket deleted successfully");
+
+        } catch (Exception e) {
+            LOG.error("Failed to cleanup vector bucket and index", e);
+        }
+    }
+
+    @Test
+    @Order(1)
+    public void testPutVector() throws Exception {
+        LOG.info("Testing putVectors operation");
+
+        result.expectedMessageCount(1);
+
+        template.send("direct:putVector", new Processor() {
+            @Override
+            public void process(Exchange exchange) {
+                exchange.getIn().setHeader(AWS2S3VectorsConstants.VECTOR_ID, "test-vec-001");
+
+                Map<String, String> metadata = new HashMap<>();
+                metadata.put("category", "test");
+                metadata.put("source", "integration-test");
+                exchange.getIn().setHeader(AWS2S3VectorsConstants.VECTOR_METADATA, metadata);
+
+                List<Float> vectorData = Arrays.asList(0.1f, 0.2f, 0.3f);
+                exchange.getIn().setBody(vectorData);
+            }
+        });
+
+        MockEndpoint.assertIsSatisfied(context);
+
+        Exchange resultExchange = result.getExchanges().get(0);
+        PutVectorsResponse response = resultExchange.getMessage().getBody(PutVectorsResponse.class);
+        assertNotNull(response, "PutVectors response should not be null");
+
+        LOG.info("Vector inserted successfully");
+    }
+
+    @Test
+    @Order(2)
+    public void testPutMultipleVectors() throws Exception {
+        LOG.info("Testing putVectors with multiple vectors");
+
+        result.reset();
+        result.expectedMessageCount(3);
+
+        // Insert 3 more vectors
+        for (int i = 2; i <= 4; i++) {
+            final int index = i;
+            template.send("direct:putVector", new Processor() {
+                @Override
+                public void process(Exchange exchange) {
+                    exchange.getIn().setHeader(AWS2S3VectorsConstants.VECTOR_ID, "test-vec-00" + index);
+
+                    Map<String, String> metadata = new HashMap<>();
+                    metadata.put("category", "test");
+                    metadata.put("index", String.valueOf(index));
+                    exchange.getIn().setHeader(AWS2S3VectorsConstants.VECTOR_METADATA, metadata);
+
+                    // Slightly different vectors
+                    List<Float> vectorData = Arrays.asList(
+                            0.1f * index,
+                            0.2f * index,
+                            0.3f * index);
+                    exchange.getIn().setBody(vectorData);
+                }
+            });
+        }
+
+        MockEndpoint.assertIsSatisfied(context);
+        LOG.info("Multiple vectors inserted successfully");
+
+        // Wait for vectors to be indexed
+        Thread.sleep(3000);
+    }
+
+    @Test
+    @Order(3)
+    public void testQueryVectors() throws Exception {
+        LOG.info("Testing queryVectors operation");
+
+        result.reset();
+        result.expectedMessageCount(1);
+
+        template.send("direct:queryVectors", new Processor() {
+            @Override
+            public void process(Exchange exchange) {
+                exchange.getIn().setHeader(AWS2S3VectorsConstants.TOP_K, 3);
+
+                // Query with a vector similar to the first one we inserted
+                List<Float> queryVector = Arrays.asList(0.11f, 0.21f, 0.31f);
+                exchange.getIn().setBody(queryVector);
+            }
+        });
+
+        MockEndpoint.assertIsSatisfied(context);
+
+        Exchange resultExchange = result.getExchanges().get(0);
+        @SuppressWarnings("unchecked")
+        List<QueryOutputVector> results = resultExchange.getMessage().getBody(List.class);
+
+        assertNotNull(results, "Query results should not be null");
+        assertTrue(results.size() > 0, "Should have at least one result");
+        assertTrue(results.size() <= 3, "Should not exceed topK limit");
+
+        Integer resultCount = resultExchange.getMessage().getHeader(AWS2S3VectorsConstants.RESULT_COUNT, Integer.class);
+        assertNotNull(resultCount, "Result count header should be set");
+        assertEquals(results.size(), resultCount.intValue(), "Result count should match list size");
+
+        LOG.info("Query returned {} vectors", results.size());
+    }
+
+    @Test
+    @Order(4)
+    public void testQueryVectorsWithDifferentTopK() throws Exception {
+        LOG.info("Testing queryVectors with topK=1");
+
+        result.reset();
+        result.expectedMessageCount(1);
+
+        template.send("direct:queryVectors", new Processor() {
+            @Override
+            public void process(Exchange exchange) {
+                exchange.getIn().setHeader(AWS2S3VectorsConstants.TOP_K, 1);
+
+                List<Float> queryVector = Arrays.asList(0.4f, 0.8f, 1.2f);
+                exchange.getIn().setBody(queryVector);
+            }
+        });
+
+        MockEndpoint.assertIsSatisfied(context);
+
+        Exchange resultExchange = result.getExchanges().get(0);
+        @SuppressWarnings("unchecked")
+        List<QueryOutputVector> results = resultExchange.getMessage().getBody(List.class);
+
+        assertNotNull(results, "Query results should not be null");
+        assertTrue(results.size() <= 1, "Should have at most 1 result");
+
+        LOG.info("Query with topK=1 returned {} vectors", results.size());
+    }
+
+    @Test
+    @Order(5)
+    public void testGetVectors() throws Exception {
+        LOG.info("Testing getVectors operation");
+
+        result.reset();
+        result.expectedMessageCount(1);
+
+        template.send("direct:getVectors", new Processor() {
+            @Override
+            public void process(Exchange exchange) {
+                List<String> vectorIds = Arrays.asList("test-vec-001", "test-vec-002");
+                exchange.getIn().setBody(vectorIds);
+            }
+        });
+
+        MockEndpoint.assertIsSatisfied(context);
+
+        Exchange resultExchange = result.getExchanges().get(0);
+        List<?> vectors = resultExchange.getMessage().getBody(List.class);
+
+        assertNotNull(vectors, "Retrieved vectors should not be null");
+        LOG.info("Retrieved {} vectors", vectors.size());
+    }
+
+    @Test
+    @Order(6)
+    public void testListVectorIndexes() throws Exception {
+        LOG.info("Testing listVectorIndexes operation");
+
+        result.reset();
+        result.expectedMessageCount(1);
+
+        template.send("direct:listIndexes", new Processor() {
+            @Override
+            public void process(Exchange exchange) {
+                // No additional setup needed
+            }
+        });
+
+        MockEndpoint.assertIsSatisfied(context);
+
+        Exchange resultExchange = result.getExchanges().get(0);
+        List<?> indexes = resultExchange.getMessage().getBody(List.class);
+
+        assertNotNull(indexes, "Index list should not be null");
+        assertTrue(indexes.size() > 0, "Should have at least one index");
+
+        LOG.info("Found {} vector indexes", indexes.size());
+    }
+
+    @Test
+    @Order(7)
+    public void testDeleteVectors() throws Exception {
+        LOG.info("Testing deleteVectors operation");
+
+        result.reset();
+        result.expectedMessageCount(1);
+
+        template.send("direct:deleteVectors", new Processor() {
+            @Override
+            public void process(Exchange exchange) {
+                // Delete one of the test vectors
+                exchange.getIn().setBody("test-vec-004");
+            }
+        });
+
+        MockEndpoint.assertIsSatisfied(context);
+        LOG.info("Vector deleted successfully");
+    }
+
+    /**
+     * Consumer test - Disabled due to unreliable timing with S3 Vectors indexing delays.
+     *
+     * The consumer functionality can be verified manually by: 1. Creating a route with aws2-s3-vectors consumer
+     * endpoint 2. Configuring consumerQueryVector parameter 3. Observing that vectors are polled and processed
+     *
+     * Example consumer route:
+     * from("aws2-s3-vectors://my-bucket?vectorIndexName=my-index&consumerQueryVector=0.1,0.2,0.3") .log("Consumed
+     * vector: ${header.CamelAwsS3VectorsVectorId}") .to("mock:result");
+     */
+    @Test
+    @Order(8)
+    public void testConsumer() throws Exception {
+        LOG.info("Consumer test - verifying consumer configuration and creation");
+
+        // Verify that the consumer can be configured without errors
+        // The actual polling behavior is difficult to test reliably due to S3 Vectors indexing delays
+        // and requires manual verification
+
+        String consumerEndpoint = "aws2-s3-vectors://" + TEST_VECTOR_BUCKET
+                                  + "?vectorIndexName=" + TEST_INDEX_NAME
+                                  + "&consumerQueryVector=0.2,0.4,0.6"
+                                  + "&delay=10000"
+                                  + "&maxMessagesPerPoll=5";
+
+        // Verify endpoint can be created
+        AWS2S3VectorsEndpoint endpoint = (AWS2S3VectorsEndpoint) context.getEndpoint(consumerEndpoint);
+        assertNotNull(endpoint, "Consumer endpoint should be created");
+        assertEquals(TEST_VECTOR_BUCKET, endpoint.getConfiguration().getVectorBucketName());
+        assertEquals(TEST_INDEX_NAME, endpoint.getConfiguration().getVectorIndexName());
+        assertEquals("0.2,0.4,0.6", endpoint.getConfiguration().getConsumerQueryVector());
+        assertEquals(10000, endpoint.getConfiguration().getDelay());
+        assertEquals(5, endpoint.getConfiguration().getMaxMessagesPerPoll());
+
+        LOG.info("Consumer configuration verified successfully");
+        LOG.info("Note: Full consumer polling behavior should be tested manually due to S3 Vectors indexing delays");
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() {
+        return new RouteBuilder() {
+            @Override
+            public void configure() {
+                String awsEndpoint = "aws2-s3-vectors://" + TEST_VECTOR_BUCKET
+                                     + "?vectorIndexName=" + TEST_INDEX_NAME;
+
+                from("direct:putVector")
+                        .setHeader(AWS2S3VectorsConstants.OPERATION,
+                                constant(AWS2S3VectorsOperations.putVectors))
+                        .to(awsEndpoint)
+                        .to("mock:result");
+
+                from("direct:queryVectors")
+                        .setHeader(AWS2S3VectorsConstants.OPERATION,
+                                constant(AWS2S3VectorsOperations.queryVectors))
+                        .to(awsEndpoint)
+                        .to("mock:result");
+
+                from("direct:getVectors")
+                        .setHeader(AWS2S3VectorsConstants.OPERATION,
+                                constant(AWS2S3VectorsOperations.getVectors))
+                        .to(awsEndpoint)
+                        .to("mock:result");
+
+                from("direct:listIndexes")
+                        .setHeader(AWS2S3VectorsConstants.OPERATION,
+                                constant(AWS2S3VectorsOperations.listVectorIndexes))
+                        .to(awsEndpoint)
+                        .to("mock:result");
+
+                from("direct:deleteVectors")
+                        .setHeader(AWS2S3VectorsConstants.OPERATION,
+                                constant(AWS2S3VectorsOperations.deleteVectors))
+                        .to(awsEndpoint)
+                        .to("mock:result");
+            }
+        };
+    }
+}
diff --git a/components/camel-aws/pom.xml b/components/camel-aws/pom.xml
index a1357cd1a51a..98fabd1b3a6d 100644
--- a/components/camel-aws/pom.xml
+++ b/components/camel-aws/pom.xml
@@ -57,6 +57,7 @@
         <module>camel-aws2-mq</module>
         <module>camel-aws2-redshift</module>
         <module>camel-aws2-s3</module>
+        <module>camel-aws2-s3-vectors</module>
         <module>camel-aws-secrets-manager</module>
         <module>camel-aws2-ses</module>
         <module>camel-aws2-sns</module>
diff --git a/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties b/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties
index cbe2a84f030b..9c4ed8b18c14 100644
--- a/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties
+++ b/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties
@@ -30,6 +30,7 @@ aws2-mq
 aws2-msk
 aws2-redshift-data
 aws2-s3
+aws2-s3-vectors
 aws2-ses
 aws2-sns
 aws2-sqs
diff --git a/docs/components/modules/ROOT/examples/json/aws2-s3-vectors.json b/docs/components/modules/ROOT/examples/json/aws2-s3-vectors.json
new file mode 120000
index 000000000000..5b7d76916bb5
--- /dev/null
+++ b/docs/components/modules/ROOT/examples/json/aws2-s3-vectors.json
@@ -0,0 +1 @@
+../../../../../../components/camel-aws/camel-aws2-s3-vectors/src/generated/resources/META-INF/org/apache/camel/component/aws2/s3vectors/aws2-s3-vectors.json
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/nav.adoc b/docs/components/modules/ROOT/nav.adoc
index 507b5315409c..ea1f38654842 100644
--- a/docs/components/modules/ROOT/nav.adoc
+++ b/docs/components/modules/ROOT/nav.adoc
@@ -57,6 +57,7 @@
 *** xref:aws2-mq-component.adoc[AWS MQ]
 *** xref:aws2-redshift-data-component.adoc[AWS RedshiftData]
 *** xref:aws2-s3-component.adoc[AWS S3 Storage Service]
+*** xref:aws2-s3-vectors-component.adoc[AWS S3 Vectors]
 *** xref:aws-secrets-manager-component.adoc[AWS Secrets Manager]
 *** xref:aws2-sts-component.adoc[AWS Security Token Service (STS)]
 *** xref:aws2-ses-component.adoc[AWS Simple Email Service (SES)]
diff --git a/docs/components/modules/ROOT/pages/aws2-s3-vectors-component.adoc b/docs/components/modules/ROOT/pages/aws2-s3-vectors-component.adoc
new file mode 120000
index 000000000000..d5a36d813928
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/aws2-s3-vectors-component.adoc
@@ -0,0 +1 @@
+../../../../../components/camel-aws/camel-aws2-s3-vectors/src/main/docs/aws2-s3-vectors-component.adoc
\ No newline at end of file
diff --git a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
index ff44ab7bf86b..e239d93f3c47 100644
--- a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
+++ b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
@@ -464,6 +464,20 @@ public interface ComponentsBuilderFactory {
     static Aws2S3ComponentBuilderFactory.Aws2S3ComponentBuilder aws2S3() {
         return Aws2S3ComponentBuilderFactory.aws2S3();
     }
+    /**
+     * AWS S3 Vectors (camel-aws2-s3-vectors)
+     * Store and query vector embeddings using AWS S3 Vectors with similarity
+     * search.
+     * 
+     * Category: cloud,ai
+     * Since: 4.17
+     * Maven coordinates: org.apache.camel:camel-aws2-s3-vectors
+     * 
+     * @return the dsl builder
+     */
+    static Aws2S3VectorsComponentBuilderFactory.Aws2S3VectorsComponentBuilder aws2S3Vectors() {
+        return Aws2S3VectorsComponentBuilderFactory.aws2S3Vectors();
+    }
     /**
      * AWS Simple Email Service (SES) (camel-aws2-ses)
      * Send e-mails through AWS SES service.
diff --git a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/Aws2S3VectorsComponentBuilderFactory.java b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/Aws2S3VectorsComponentBuilderFactory.java
new file mode 100644
index 000000000000..0dca70e7487a
--- /dev/null
+++ b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/Aws2S3VectorsComponentBuilderFactory.java
@@ -0,0 +1,693 @@
+/* Generated by camel build tools - do NOT edit this file! */
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.builder.component.dsl;
+
+import javax.annotation.processing.Generated;
+import org.apache.camel.Component;
+import org.apache.camel.builder.component.AbstractComponentBuilder;
+import org.apache.camel.builder.component.ComponentBuilder;
+import org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsComponent;
+
+/**
+ * Store and query vector embeddings using AWS S3 Vectors with similarity
+ * search.
+ * 
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.ComponentDslMojo")
+public interface Aws2S3VectorsComponentBuilderFactory {
+
+    /**
+     * AWS S3 Vectors (camel-aws2-s3-vectors)
+     * Store and query vector embeddings using AWS S3 Vectors with similarity
+     * search.
+     * 
+     * Category: cloud,ai
+     * Since: 4.17
+     * Maven coordinates: org.apache.camel:camel-aws2-s3-vectors
+     * 
+     * @return the dsl builder
+     */
+    static Aws2S3VectorsComponentBuilder aws2S3Vectors() {
+        return new Aws2S3VectorsComponentBuilderImpl();
+    }
+
+    /**
+     * Builder for the AWS S3 Vectors component.
+     */
+    interface Aws2S3VectorsComponentBuilder extends ComponentBuilder<AWS2S3VectorsComponent> {
+    
+        /**
+         * The component configuration.
+         * 
+         * The option is a:
+         * &lt;code&gt;org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param configuration the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder configuration(org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration configuration) {
+            doSetProperty("configuration", configuration);
+            return this;
+        }
+    
+        
+        /**
+         * The data type of the vector. Options: float32, float16.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Default: float32
+         * Group: common
+         * 
+         * @param dataType the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder dataType(java.lang.String dataType) {
+            doSetProperty("dataType", dataType);
+            return this;
+        }
+    
+        
+        /**
+         * The distance metric to use for similarity search. Options: cosine,
+         * euclidean, dot-product.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Default: cosine
+         * Group: common
+         * 
+         * @param distanceMetric the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder distanceMetric(java.lang.String distanceMetric) {
+            doSetProperty("distanceMetric", distanceMetric);
+            return this;
+        }
+    
+        
+        /**
+         * Set the need for overriding the endpoint. This option needs to be
+         * used in combination with uriEndpointOverride option.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: common
+         * 
+         * @param overrideEndpoint the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder overrideEndpoint(boolean overrideEndpoint) {
+            doSetProperty("overrideEndpoint", overrideEndpoint);
+            return this;
+        }
+    
+        /**
+         * The region in which S3 Vectors client needs to work. When using this
+         * parameter, the configuration will expect the lowercase name of the
+         * region (for example ap-east-1).
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param region the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder region(java.lang.String region) {
+            doSetProperty("region", region);
+            return this;
+        }
+    
+        /**
+         * The minimum similarity threshold for results.
+         * 
+         * The option is a: &lt;code&gt;java.lang.Float&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param similarityThreshold the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder similarityThreshold(java.lang.Float similarityThreshold) {
+            doSetProperty("similarityThreshold", similarityThreshold);
+            return this;
+        }
+    
+        
+        /**
+         * The number of top similar vectors to return in a query.
+         * 
+         * The option is a: &lt;code&gt;java.lang.Integer&lt;/code&gt; type.
+         * 
+         * Default: 10
+         * Group: common
+         * 
+         * @param topK the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder topK(java.lang.Integer topK) {
+            doSetProperty("topK", topK);
+            return this;
+        }
+    
+        /**
+         * Set the overriding uri endpoint. This option needs to be used in
+         * combination with overrideEndpoint option.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param uriEndpointOverride the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder uriEndpointOverride(java.lang.String uriEndpointOverride) {
+            doSetProperty("uriEndpointOverride", uriEndpointOverride);
+            return this;
+        }
+    
+        
+        /**
+         * The dimensions of the vector embeddings (default: 1536, which is the
+         * dimension for OpenAI text-embedding-3-small).
+         * 
+         * The option is a: &lt;code&gt;java.lang.Integer&lt;/code&gt; type.
+         * 
+         * Default: 1536
+         * Group: common
+         * 
+         * @param vectorDimensions the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder vectorDimensions(java.lang.Integer vectorDimensions) {
+            doSetProperty("vectorDimensions", vectorDimensions);
+            return this;
+        }
+    
+        /**
+         * The name of the vector index.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param vectorIndexName the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder vectorIndexName(java.lang.String vectorIndexName) {
+            doSetProperty("vectorIndexName", vectorIndexName);
+            return this;
+        }
+    
+        
+        /**
+         * Allows for bridging the consumer to the Camel routing Error Handler,
+         * which mean any exceptions (if possible) occurred while the Camel
+         * consumer is trying to pickup incoming messages, or the likes, will
+         * now be processed as a message and handled by the routing Error
+         * Handler. Important: This is only possible if the 3rd party component
+         * allows Camel to be alerted if an exception was thrown. Some
+         * components handle this internally only, and therefore
+         * bridgeErrorHandler is not possible. In other situations we may
+         * improve the Camel component to hook into the 3rd party component and
+         * make this possible for future releases. By default the consumer will
+         * use the org.apache.camel.spi.ExceptionHandler to deal with
+         * exceptions, that will be logged at WARN or ERROR level and ignored.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param bridgeErrorHandler the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder bridgeErrorHandler(boolean bridgeErrorHandler) {
+            doSetProperty("bridgeErrorHandler", bridgeErrorHandler);
+            return this;
+        }
+    
+        /**
+         * Optional metadata filter for the consumer to filter vectors during
+         * polling.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: consumer
+         * 
+         * @param consumerMetadataFilter the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder consumerMetadataFilter(java.lang.String consumerMetadataFilter) {
+            doSetProperty("consumerMetadataFilter", consumerMetadataFilter);
+            return this;
+        }
+    
+        /**
+         * The query vector to use for the consumer to poll for similar vectors.
+         * Specified as comma-separated float values (e.g., 0.1,0.2,0.3). If not
+         * specified, the consumer will not poll.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: consumer
+         * 
+         * @param consumerQueryVector the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder consumerQueryVector(java.lang.String consumerQueryVector) {
+            doSetProperty("consumerQueryVector", consumerQueryVector);
+            return this;
+        }
+    
+        
+        /**
+         * Milliseconds before the next poll for the consumer.
+         * 
+         * The option is a: &lt;code&gt;long&lt;/code&gt; type.
+         * 
+         * Default: 500
+         * Group: consumer
+         * 
+         * @param delay the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder delay(long delay) {
+            doSetProperty("delay", delay);
+            return this;
+        }
+    
+        
+        /**
+         * Delete vectors after they have been consumed.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param deleteAfterRead the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder deleteAfterRead(boolean deleteAfterRead) {
+            doSetProperty("deleteAfterRead", deleteAfterRead);
+            return this;
+        }
+    
+        
+        /**
+         * The maximum number of messages to consume per poll for the consumer.
+         * 
+         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Default: 10
+         * Group: consumer
+         * 
+         * @param maxMessagesPerPoll the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder maxMessagesPerPoll(int maxMessagesPerPoll) {
+            doSetProperty("maxMessagesPerPoll", maxMessagesPerPoll);
+            return this;
+        }
+    
+        
+        /**
+         * Whether the producer should be started lazy (on the first message).
+         * By starting lazy you can use this to allow CamelContext and routes to
+         * startup in situations where a producer may otherwise fail during
+         * starting and cause the route to fail being started. By deferring this
+         * startup to be lazy then the startup failure can be handled during
+         * routing messages via Camel's routing error handlers. Beware that when
+         * the first message is processed then creating and starting the
+         * producer may take a little time and prolong the total processing time
+         * of the processing.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param lazyStartProducer the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder lazyStartProducer(boolean lazyStartProducer) {
+            doSetProperty("lazyStartProducer", lazyStartProducer);
+            return this;
+        }
+    
+        /**
+         * The operation to perform.
+         * 
+         * The option is a:
+         * &lt;code&gt;org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsOperations&lt;/code&gt; type.
+         * 
+         * Group: producer
+         * 
+         * @param operation the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder operation(org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsOperations operation) {
+            doSetProperty("operation", operation);
+            return this;
+        }
+    
+        
+        /**
+         * Whether autowiring is enabled. This is used for automatic autowiring
+         * options (the option must be marked as autowired) by looking up in the
+         * registry to find if there is a single instance of matching type,
+         * which then gets configured on the component. This can be used for
+         * automatic configuring JDBC data sources, JMS connection factories,
+         * AWS Clients, etc.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: true
+         * Group: advanced
+         * 
+         * @param autowiredEnabled the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder autowiredEnabled(boolean autowiredEnabled) {
+            doSetProperty("autowiredEnabled", autowiredEnabled);
+            return this;
+        }
+    
+        /**
+         * Reference to a
+         * software.amazon.awssdk.services.s3vectors.S3VectorsClient in the
+         * registry.
+         * 
+         * The option is a:
+         * &lt;code&gt;software.amazon.awssdk.services.s3vectors.S3VectorsClient&lt;/code&gt; type.
+         * 
+         * Group: advanced
+         * 
+         * @param s3VectorsClient the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder s3VectorsClient(software.amazon.awssdk.services.s3vectors.S3VectorsClient s3VectorsClient) {
+            doSetProperty("s3VectorsClient", s3VectorsClient);
+            return this;
+        }
+    
+        
+        /**
+         * Used for enabling or disabling all consumer based health checks from
+         * this component.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: true
+         * Group: health
+         * 
+         * @param healthCheckConsumerEnabled the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder healthCheckConsumerEnabled(boolean healthCheckConsumerEnabled) {
+            doSetProperty("healthCheckConsumerEnabled", healthCheckConsumerEnabled);
+            return this;
+        }
+    
+        
+        /**
+         * Used for enabling or disabling all producer based health checks from
+         * this component. Notice: Camel has by default disabled all producer
+         * based health-checks. You can turn on producer checks globally by
+         * setting camel.health.producersEnabled=true.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: true
+         * Group: health
+         * 
+         * @param healthCheckProducerEnabled the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder healthCheckProducerEnabled(boolean healthCheckProducerEnabled) {
+            doSetProperty("healthCheckProducerEnabled", healthCheckProducerEnabled);
+            return this;
+        }
+    
+        /**
+         * To define a proxy host when instantiating the S3 Vectors client.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: proxy
+         * 
+         * @param proxyHost the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder proxyHost(java.lang.String proxyHost) {
+            doSetProperty("proxyHost", proxyHost);
+            return this;
+        }
+    
+        /**
+         * To define a proxy port when instantiating the S3 Vectors client.
+         * 
+         * The option is a: &lt;code&gt;java.lang.Integer&lt;/code&gt; type.
+         * 
+         * Group: proxy
+         * 
+         * @param proxyPort the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder proxyPort(java.lang.Integer proxyPort) {
+            doSetProperty("proxyPort", proxyPort);
+            return this;
+        }
+    
+        
+        /**
+         * To define a proxy protocol when instantiating the S3 Vectors client.
+         * 
+         * The option is a:
+         * &lt;code&gt;software.amazon.awssdk.core.Protocol&lt;/code&gt; type.
+         * 
+         * Default: HTTPS
+         * Group: proxy
+         * 
+         * @param proxyProtocol the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder proxyProtocol(software.amazon.awssdk.core.Protocol proxyProtocol) {
+            doSetProperty("proxyProtocol", proxyProtocol);
+            return this;
+        }
+    
+        /**
+         * Amazon AWS Access Key.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: security
+         * 
+         * @param accessKey the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder accessKey(java.lang.String accessKey) {
+            doSetProperty("accessKey", accessKey);
+            return this;
+        }
+    
+        /**
+         * If using a profile credentials provider, this parameter will set the
+         * profile name.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: security
+         * 
+         * @param profileCredentialsName the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder profileCredentialsName(java.lang.String profileCredentialsName) {
+            doSetProperty("profileCredentialsName", profileCredentialsName);
+            return this;
+        }
+    
+        /**
+         * Amazon AWS Secret Key.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: security
+         * 
+         * @param secretKey the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder secretKey(java.lang.String secretKey) {
+            doSetProperty("secretKey", secretKey);
+            return this;
+        }
+    
+        /**
+         * Amazon AWS Session Token used when the user needs to assume an IAM
+         * role.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: security
+         * 
+         * @param sessionToken the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder sessionToken(java.lang.String sessionToken) {
+            doSetProperty("sessionToken", sessionToken);
+            return this;
+        }
+    
+        
+        /**
+         * If we want to trust all certificates in case of overriding the
+         * endpoint.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param trustAllCertificates the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder trustAllCertificates(boolean trustAllCertificates) {
+            doSetProperty("trustAllCertificates", trustAllCertificates);
+            return this;
+        }
+    
+        
+        /**
+         * Set whether the S3 Vectors client should expect to load credentials
+         * through a default credentials provider.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param useDefaultCredentialsProvider the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder useDefaultCredentialsProvider(boolean useDefaultCredentialsProvider) {
+            doSetProperty("useDefaultCredentialsProvider", useDefaultCredentialsProvider);
+            return this;
+        }
+    
+        
+        /**
+         * Set whether the S3 Vectors client should expect to load credentials
+         * through a profile credentials provider.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param useProfileCredentialsProvider the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder useProfileCredentialsProvider(boolean useProfileCredentialsProvider) {
+            doSetProperty("useProfileCredentialsProvider", useProfileCredentialsProvider);
+            return this;
+        }
+    
+        
+        /**
+         * Set whether the S3 Vectors client should expect to use Session
+         * Credentials. This is useful in a situation in which the user needs to
+         * assume an IAM role for doing operations in S3 Vectors.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param useSessionCredentials the value to set
+         * @return the dsl builder
+         */
+        default Aws2S3VectorsComponentBuilder useSessionCredentials(boolean useSessionCredentials) {
+            doSetProperty("useSessionCredentials", useSessionCredentials);
+            return this;
+        }
+    }
+
+    class Aws2S3VectorsComponentBuilderImpl
+            extends AbstractComponentBuilder<AWS2S3VectorsComponent>
+            implements Aws2S3VectorsComponentBuilder {
+        @Override
+        protected AWS2S3VectorsComponent buildConcreteComponent() {
+            return new AWS2S3VectorsComponent();
+        }
+        private org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration getOrCreateConfiguration(AWS2S3VectorsComponent component) {
+            if (component.getConfiguration() == null) {
+                component.setConfiguration(new org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration());
+            }
+            return component.getConfiguration();
+        }
+        @Override
+        protected boolean setPropertyOnComponent(
+                Component component,
+                String name,
+                Object value) {
+            switch (name) {
+            case "configuration": ((AWS2S3VectorsComponent) component).setConfiguration((org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration) value); return true;
+            case "dataType": getOrCreateConfiguration((AWS2S3VectorsComponent) component).setDataType((java.lang.String) value); return true;
+            case "distanceMetric": getOrCreateConfiguration((AWS2S3VectorsComponent) component).setDistanceMetric((java.lang.String) value); return true;
+            case "overrideEndpoint": getOrCreateConfiguration((AWS2S3VectorsComponent) component).setOverrideEndpoint((boolean) value); return true;
+            case "region": getOrCreateConfiguration((AWS2S3VectorsComponent) component).setRegion((java.lang.String) value); return true;
+            case "similarityThreshold": getOrCreateConfiguration((AWS2S3VectorsComponent) component).setSimilarityThreshold((java.lang.Float) value); return true;
+            case "topK": getOrCreateConfiguration((AWS2S3VectorsComponent) component).setTopK((java.lang.Integer) value); return true;
+            case "uriEndpointOverride": getOrCreateConfiguration((AWS2S3VectorsComponent) component).setUriEndpointOverride((java.lang.String) value); return true;
+            case "vectorDimensions": getOrCreateConfiguration((AWS2S3VectorsComponent) component).setVectorDimensions((java.lang.Integer) value); return true;
+            case "vectorIndexName": getOrCreateConfiguration((AWS2S3VectorsComponent) component).setVectorIndexName((java.lang.String) value); return true;
+            case "bridgeErrorHandler": ((AWS2S3VectorsComponent) component).setBridgeErrorHandler((boolean) value); return true;
+            case "consumerMetadataFilter": getOrCreateConfiguration((AWS2S3VectorsComponent) component).setConsumerMetadataFilter((java.lang.String) value); return true;
+            case "consumerQueryVector": getOrCreateConfiguration((AWS2S3VectorsComponent) component).setConsumerQueryVector((java.lang.String) value); return true;
+            case "delay": getOrCreateConfiguration((AWS2S3VectorsComponent) component).setDelay((long) value); return true;
+            case "deleteAfterRead": getOrCreateConfiguration((AWS2S3VectorsComponent) component).setDeleteAfterRead((boolean) value); return true;
+            case "maxMessagesPerPoll": getOrCreateConfiguration((AWS2S3VectorsComponent) component).setMaxMessagesPerPoll((int) value); return true;
+            case "lazyStartProducer": ((AWS2S3VectorsComponent) component).setLazyStartProducer((boolean) value); return true;
+            case "operation": getOrCreateConfiguration((AWS2S3VectorsComponent) component).setOperation((org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsOperations) value); return true;
+            case "autowiredEnabled": ((AWS2S3VectorsComponent) component).setAutowiredEnabled((boolean) value); return true;
+            case "s3VectorsClient": getOrCreateConfiguration((AWS2S3VectorsComponent) component).setS3VectorsClient((software.amazon.awssdk.services.s3vectors.S3VectorsClient) value); return true;
+            case "healthCheckConsumerEnabled": ((AWS2S3VectorsComponent) component).setHealthCheckConsumerEnabled((boolean) value); return true;
+            case "healthCheckProducerEnabled": ((AWS2S3VectorsComponent) component).setHealthCheckProducerEnabled((boolean) value); return true;
+            case "proxyHost": getOrCreateConfiguration((AWS2S3VectorsComponent) component).setProxyHost((java.lang.String) value); return true;
+            case "proxyPort": getOrCreateConfiguration((AWS2S3VectorsComponent) component).setProxyPort((java.lang.Integer) value); return true;
+            case "proxyProtocol": getOrCreateConfiguration((AWS2S3VectorsComponent) component).setProxyProtocol((software.amazon.awssdk.core.Protocol) value); return true;
+            case "accessKey": getOrCreateConfiguration((AWS2S3VectorsComponent) component).setAccessKey((java.lang.String) value); return true;
+            case "profileCredentialsName": getOrCreateConfiguration((AWS2S3VectorsComponent) component).setProfileCredentialsName((java.lang.String) value); return true;
+            case "secretKey": getOrCreateConfiguration((AWS2S3VectorsComponent) component).setSecretKey((java.lang.String) value); return true;
+            case "sessionToken": getOrCreateConfiguration((AWS2S3VectorsComponent) component).setSessionToken((java.lang.String) value); return true;
+            case "trustAllCertificates": getOrCreateConfiguration((AWS2S3VectorsComponent) component).setTrustAllCertificates((boolean) value); return true;
+            case "useDefaultCredentialsProvider": getOrCreateConfiguration((AWS2S3VectorsComponent) component).setUseDefaultCredentialsProvider((boolean) value); return true;
+            case "useProfileCredentialsProvider": getOrCreateConfiguration((AWS2S3VectorsComponent) component).setUseProfileCredentialsProvider((boolean) value); return true;
+            case "useSessionCredentials": getOrCreateConfiguration((AWS2S3VectorsComponent) component).setUseSessionCredentials((boolean) value); return true;
+            default: return false;
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
index f744210e63fd..45835080eb1b 100644
--- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
+++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
@@ -32,6 +32,7 @@ public interface EndpointBuilderFactory
             org.apache.camel.builder.endpoint.dsl.AS2EndpointBuilderFactory.AS2Builders,
             org.apache.camel.builder.endpoint.dsl.AWS2EC2EndpointBuilderFactory.AWS2EC2Builders,
             org.apache.camel.builder.endpoint.dsl.AWS2S3EndpointBuilderFactory.AWS2S3Builders,
+            org.apache.camel.builder.endpoint.dsl.AWS2S3VectorsEndpointBuilderFactory.AWS2S3VectorsBuilders,
             org.apache.camel.builder.endpoint.dsl.AWSConfigEndpointBuilderFactory.AWSConfigBuilders,
             org.apache.camel.builder.endpoint.dsl.ActiveMQ6EndpointBuilderFactory.ActiveMQ6Builders,
             org.apache.camel.builder.endpoint.dsl.ActiveMQEndpointBuilderFactory.ActiveMQBuilders,
diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
index afac53503928..a1936fd86d2a 100644
--- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
+++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
@@ -29,6 +29,7 @@ public interface EndpointBuilders
             org.apache.camel.builder.endpoint.dsl.AS2EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.AWS2EC2EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.AWS2S3EndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.AWS2S3VectorsEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.AWSConfigEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.ActiveMQ6EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.ActiveMQEndpointBuilderFactory,
diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
index 467f6927460e..5a8446ea1370 100644
--- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
+++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
@@ -1376,6 +1376,48 @@ public class StaticEndpointBuilders {
     public static AWS2S3EndpointBuilderFactory.AWS2S3EndpointBuilder aws2S3(String componentName, String path) {
         return AWS2S3EndpointBuilderFactory.endpointBuilder(componentName, path);
     }
+    /**
+     * AWS S3 Vectors (camel-aws2-s3-vectors)
+     * Store and query vector embeddings using AWS S3 Vectors with similarity
+     * search.
+     * 
+     * Category: cloud,ai
+     * Since: 4.17
+     * Maven coordinates: org.apache.camel:camel-aws2-s3-vectors
+     * 
+     * Syntax: <code>aws2-s3-vectors://vectorBucketName</code>
+     * 
+     * Path parameter: vectorBucketName (required)
+     * Vector bucket name or ARN
+     * 
+     * @param path vectorBucketName
+     * @return the dsl builder
+     */
+    public static AWS2S3VectorsEndpointBuilderFactory.AWS2S3VectorsEndpointBuilder aws2S3Vectors(String path) {
+        return aws2S3Vectors("aws2-s3-vectors", path);
+    }
+    /**
+     * AWS S3 Vectors (camel-aws2-s3-vectors)
+     * Store and query vector embeddings using AWS S3 Vectors with similarity
+     * search.
+     * 
+     * Category: cloud,ai
+     * Since: 4.17
+     * Maven coordinates: org.apache.camel:camel-aws2-s3-vectors
+     * 
+     * Syntax: <code>aws2-s3-vectors://vectorBucketName</code>
+     * 
+     * Path parameter: vectorBucketName (required)
+     * Vector bucket name or ARN
+     * 
+     * @param componentName to use a custom component name for the endpoint
+     * instead of the default name
+     * @param path vectorBucketName
+     * @return the dsl builder
+     */
+    public static AWS2S3VectorsEndpointBuilderFactory.AWS2S3VectorsEndpointBuilder aws2S3Vectors(String componentName, String path) {
+        return AWS2S3VectorsEndpointBuilderFactory.endpointBuilder(componentName, path);
+    }
     /**
      * AWS Simple Email Service (SES) (camel-aws2-ses)
      * Send e-mails through AWS SES service.
diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/AWS2S3VectorsEndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/AWS2S3VectorsEndpointBuilderFactory.java
new file mode 100644
index 000000000000..253ba49aeb4a
--- /dev/null
+++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/AWS2S3VectorsEndpointBuilderFactory.java
@@ -0,0 +1,2696 @@
+/* Generated by camel build tools - do NOT edit this file! */
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.builder.endpoint.dsl;
+
+import java.util.*;
+import java.util.concurrent.*;
+import java.util.function.*;
+import java.util.stream.*;
+import javax.annotation.processing.Generated;
+import org.apache.camel.builder.EndpointConsumerBuilder;
+import org.apache.camel.builder.EndpointProducerBuilder;
+import org.apache.camel.builder.endpoint.AbstractEndpointBuilder;
+
+/**
+ * Store and query vector embeddings using AWS S3 Vectors with similarity
+ * search.
+ * 
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.EndpointDslMojo")
+public interface AWS2S3VectorsEndpointBuilderFactory {
+
+    /**
+     * Builder for endpoint consumers for the AWS S3 Vectors component.
+     */
+    public interface AWS2S3VectorsEndpointConsumerBuilder
+            extends
+                EndpointConsumerBuilder {
+        default AdvancedAWS2S3VectorsEndpointConsumerBuilder advanced() {
+            return (AdvancedAWS2S3VectorsEndpointConsumerBuilder) this;
+        }
+        /**
+         * The data type of the vector. Options: float32, float16.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Default: float32
+         * Group: common
+         * 
+         * @param dataType the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder dataType(String dataType) {
+            doSetProperty("dataType", dataType);
+            return this;
+        }
+        /**
+         * The distance metric to use for similarity search. Options: cosine,
+         * euclidean, dot-product.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Default: cosine
+         * Group: common
+         * 
+         * @param distanceMetric the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder distanceMetric(String distanceMetric) {
+            doSetProperty("distanceMetric", distanceMetric);
+            return this;
+        }
+        /**
+         * Set the need for overriding the endpoint. This option needs to be
+         * used in combination with uriEndpointOverride option.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: common
+         * 
+         * @param overrideEndpoint the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder overrideEndpoint(boolean overrideEndpoint) {
+            doSetProperty("overrideEndpoint", overrideEndpoint);
+            return this;
+        }
+        /**
+         * Set the need for overriding the endpoint. This option needs to be
+         * used in combination with uriEndpointOverride option.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: common
+         * 
+         * @param overrideEndpoint the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder overrideEndpoint(String overrideEndpoint) {
+            doSetProperty("overrideEndpoint", overrideEndpoint);
+            return this;
+        }
+        /**
+         * The region in which S3 Vectors client needs to work. When using this
+         * parameter, the configuration will expect the lowercase name of the
+         * region (for example ap-east-1).
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: common
+         * 
+         * @param region the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder region(String region) {
+            doSetProperty("region", region);
+            return this;
+        }
+        /**
+         * The minimum similarity threshold for results.
+         * 
+         * The option is a: <code>java.lang.Float</code> type.
+         * 
+         * Group: common
+         * 
+         * @param similarityThreshold the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder similarityThreshold(Float similarityThreshold) {
+            doSetProperty("similarityThreshold", similarityThreshold);
+            return this;
+        }
+        /**
+         * The minimum similarity threshold for results.
+         * 
+         * The option will be converted to a <code>java.lang.Float</code> type.
+         * 
+         * Group: common
+         * 
+         * @param similarityThreshold the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder similarityThreshold(String similarityThreshold) {
+            doSetProperty("similarityThreshold", similarityThreshold);
+            return this;
+        }
+        /**
+         * The number of top similar vectors to return in a query.
+         * 
+         * The option is a: <code>java.lang.Integer</code> type.
+         * 
+         * Default: 10
+         * Group: common
+         * 
+         * @param topK the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder topK(Integer topK) {
+            doSetProperty("topK", topK);
+            return this;
+        }
+        /**
+         * The number of top similar vectors to return in a query.
+         * 
+         * The option will be converted to a <code>java.lang.Integer</code>
+         * type.
+         * 
+         * Default: 10
+         * Group: common
+         * 
+         * @param topK the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder topK(String topK) {
+            doSetProperty("topK", topK);
+            return this;
+        }
+        /**
+         * Set the overriding uri endpoint. This option needs to be used in
+         * combination with overrideEndpoint option.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: common
+         * 
+         * @param uriEndpointOverride the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder uriEndpointOverride(String uriEndpointOverride) {
+            doSetProperty("uriEndpointOverride", uriEndpointOverride);
+            return this;
+        }
+        /**
+         * The dimensions of the vector embeddings (default: 1536, which is the
+         * dimension for OpenAI text-embedding-3-small).
+         * 
+         * The option is a: <code>java.lang.Integer</code> type.
+         * 
+         * Default: 1536
+         * Group: common
+         * 
+         * @param vectorDimensions the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder vectorDimensions(Integer vectorDimensions) {
+            doSetProperty("vectorDimensions", vectorDimensions);
+            return this;
+        }
+        /**
+         * The dimensions of the vector embeddings (default: 1536, which is the
+         * dimension for OpenAI text-embedding-3-small).
+         * 
+         * The option will be converted to a <code>java.lang.Integer</code>
+         * type.
+         * 
+         * Default: 1536
+         * Group: common
+         * 
+         * @param vectorDimensions the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder vectorDimensions(String vectorDimensions) {
+            doSetProperty("vectorDimensions", vectorDimensions);
+            return this;
+        }
+        /**
+         * The name of the vector index.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: common
+         * 
+         * @param vectorIndexName the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder vectorIndexName(String vectorIndexName) {
+            doSetProperty("vectorIndexName", vectorIndexName);
+            return this;
+        }
+        /**
+         * Optional metadata filter for the consumer to filter vectors during
+         * polling.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: consumer
+         * 
+         * @param consumerMetadataFilter the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder consumerMetadataFilter(String consumerMetadataFilter) {
+            doSetProperty("consumerMetadataFilter", consumerMetadataFilter);
+            return this;
+        }
+        /**
+         * The query vector to use for the consumer to poll for similar vectors.
+         * Specified as comma-separated float values (e.g., 0.1,0.2,0.3). If not
+         * specified, the consumer will not poll.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: consumer
+         * 
+         * @param consumerQueryVector the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder consumerQueryVector(String consumerQueryVector) {
+            doSetProperty("consumerQueryVector", consumerQueryVector);
+            return this;
+        }
+        /**
+         * Milliseconds before the next poll for the consumer.
+         * 
+         * The option is a: <code>long</code> type.
+         * 
+         * Default: 500
+         * Group: consumer
+         * 
+         * @param delay the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder delay(long delay) {
+            doSetProperty("delay", delay);
+            return this;
+        }
+        /**
+         * Milliseconds before the next poll for the consumer.
+         * 
+         * The option will be converted to a <code>long</code> type.
+         * 
+         * Default: 500
+         * Group: consumer
+         * 
+         * @param delay the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder delay(String delay) {
+            doSetProperty("delay", delay);
+            return this;
+        }
+        /**
+         * Delete vectors after they have been consumed.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param deleteAfterRead the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder deleteAfterRead(boolean deleteAfterRead) {
+            doSetProperty("deleteAfterRead", deleteAfterRead);
+            return this;
+        }
+        /**
+         * Delete vectors after they have been consumed.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param deleteAfterRead the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder deleteAfterRead(String deleteAfterRead) {
+            doSetProperty("deleteAfterRead", deleteAfterRead);
+            return this;
+        }
+        /**
+         * The maximum number of messages to consume per poll for the consumer.
+         * 
+         * The option is a: <code>int</code> type.
+         * 
+         * Default: 10
+         * Group: consumer
+         * 
+         * @param maxMessagesPerPoll the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder maxMessagesPerPoll(int maxMessagesPerPoll) {
+            doSetProperty("maxMessagesPerPoll", maxMessagesPerPoll);
+            return this;
+        }
+        /**
+         * The maximum number of messages to consume per poll for the consumer.
+         * 
+         * The option will be converted to a <code>int</code> type.
+         * 
+         * Default: 10
+         * Group: consumer
+         * 
+         * @param maxMessagesPerPoll the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder maxMessagesPerPoll(String maxMessagesPerPoll) {
+            doSetProperty("maxMessagesPerPoll", maxMessagesPerPoll);
+            return this;
+        }
+        /**
+         * If the polling consumer did not poll any files, you can enable this
+         * option to send an empty message (no body) instead.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param sendEmptyMessageWhenIdle the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder sendEmptyMessageWhenIdle(boolean sendEmptyMessageWhenIdle) {
+            doSetProperty("sendEmptyMessageWhenIdle", sendEmptyMessageWhenIdle);
+            return this;
+        }
+        /**
+         * If the polling consumer did not poll any files, you can enable this
+         * option to send an empty message (no body) instead.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param sendEmptyMessageWhenIdle the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder sendEmptyMessageWhenIdle(String sendEmptyMessageWhenIdle) {
+            doSetProperty("sendEmptyMessageWhenIdle", sendEmptyMessageWhenIdle);
+            return this;
+        }
+        /**
+         * To define a proxy host when instantiating the S3 Vectors client.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: proxy
+         * 
+         * @param proxyHost the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder proxyHost(String proxyHost) {
+            doSetProperty("proxyHost", proxyHost);
+            return this;
+        }
+        /**
+         * To define a proxy port when instantiating the S3 Vectors client.
+         * 
+         * The option is a: <code>java.lang.Integer</code> type.
+         * 
+         * Group: proxy
+         * 
+         * @param proxyPort the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder proxyPort(Integer proxyPort) {
+            doSetProperty("proxyPort", proxyPort);
+            return this;
+        }
+        /**
+         * To define a proxy port when instantiating the S3 Vectors client.
+         * 
+         * The option will be converted to a <code>java.lang.Integer</code>
+         * type.
+         * 
+         * Group: proxy
+         * 
+         * @param proxyPort the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder proxyPort(String proxyPort) {
+            doSetProperty("proxyPort", proxyPort);
+            return this;
+        }
+        /**
+         * To define a proxy protocol when instantiating the S3 Vectors client.
+         * 
+         * The option is a: <code>software.amazon.awssdk.core.Protocol</code>
+         * type.
+         * 
+         * Default: HTTPS
+         * Group: proxy
+         * 
+         * @param proxyProtocol the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder proxyProtocol(software.amazon.awssdk.core.Protocol proxyProtocol) {
+            doSetProperty("proxyProtocol", proxyProtocol);
+            return this;
+        }
+        /**
+         * To define a proxy protocol when instantiating the S3 Vectors client.
+         * 
+         * The option will be converted to a
+         * <code>software.amazon.awssdk.core.Protocol</code> type.
+         * 
+         * Default: HTTPS
+         * Group: proxy
+         * 
+         * @param proxyProtocol the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder proxyProtocol(String proxyProtocol) {
+            doSetProperty("proxyProtocol", proxyProtocol);
+            return this;
+        }
+        /**
+         * The number of subsequent error polls (failed due some error) that
+         * should happen before the backoffMultipler should kick-in.
+         * 
+         * The option is a: <code>int</code> type.
+         * 
+         * Group: scheduler
+         * 
+         * @param backoffErrorThreshold the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder backoffErrorThreshold(int backoffErrorThreshold) {
+            doSetProperty("backoffErrorThreshold", backoffErrorThreshold);
+            return this;
+        }
+        /**
+         * The number of subsequent error polls (failed due some error) that
+         * should happen before the backoffMultipler should kick-in.
+         * 
+         * The option will be converted to a <code>int</code> type.
+         * 
+         * Group: scheduler
+         * 
+         * @param backoffErrorThreshold the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder backoffErrorThreshold(String backoffErrorThreshold) {
+            doSetProperty("backoffErrorThreshold", backoffErrorThreshold);
+            return this;
+        }
+        /**
+         * The number of subsequent idle polls that should happen before the
+         * backoffMultipler should kick-in.
+         * 
+         * The option is a: <code>int</code> type.
+         * 
+         * Group: scheduler
+         * 
+         * @param backoffIdleThreshold the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder backoffIdleThreshold(int backoffIdleThreshold) {
+            doSetProperty("backoffIdleThreshold", backoffIdleThreshold);
+            return this;
+        }
+        /**
+         * The number of subsequent idle polls that should happen before the
+         * backoffMultipler should kick-in.
+         * 
+         * The option will be converted to a <code>int</code> type.
+         * 
+         * Group: scheduler
+         * 
+         * @param backoffIdleThreshold the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder backoffIdleThreshold(String backoffIdleThreshold) {
+            doSetProperty("backoffIdleThreshold", backoffIdleThreshold);
+            return this;
+        }
+        /**
+         * To let the scheduled polling consumer backoff if there has been a
+         * number of subsequent idles/errors in a row. The multiplier is then
+         * the number of polls that will be skipped before the next actual
+         * attempt is happening again. When this option is in use then
+         * backoffIdleThreshold and/or backoffErrorThreshold must also be
+         * configured.
+         * 
+         * The option is a: <code>int</code> type.
+         * 
+         * Group: scheduler
+         * 
+         * @param backoffMultiplier the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder backoffMultiplier(int backoffMultiplier) {
+            doSetProperty("backoffMultiplier", backoffMultiplier);
+            return this;
+        }
+        /**
+         * To let the scheduled polling consumer backoff if there has been a
+         * number of subsequent idles/errors in a row. The multiplier is then
+         * the number of polls that will be skipped before the next actual
+         * attempt is happening again. When this option is in use then
+         * backoffIdleThreshold and/or backoffErrorThreshold must also be
+         * configured.
+         * 
+         * The option will be converted to a <code>int</code> type.
+         * 
+         * Group: scheduler
+         * 
+         * @param backoffMultiplier the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder backoffMultiplier(String backoffMultiplier) {
+            doSetProperty("backoffMultiplier", backoffMultiplier);
+            return this;
+        }
+        /**
+         * If greedy is enabled, then the ScheduledPollConsumer will run
+         * immediately again, if the previous run polled 1 or more messages.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: scheduler
+         * 
+         * @param greedy the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder greedy(boolean greedy) {
+            doSetProperty("greedy", greedy);
+            return this;
+        }
+        /**
+         * If greedy is enabled, then the ScheduledPollConsumer will run
+         * immediately again, if the previous run polled 1 or more messages.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: scheduler
+         * 
+         * @param greedy the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder greedy(String greedy) {
+            doSetProperty("greedy", greedy);
+            return this;
+        }
+        /**
+         * Milliseconds before the first poll starts.
+         * 
+         * The option is a: <code>long</code> type.
+         * 
+         * Default: 1000
+         * Group: scheduler
+         * 
+         * @param initialDelay the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder initialDelay(long initialDelay) {
+            doSetProperty("initialDelay", initialDelay);
+            return this;
+        }
+        /**
+         * Milliseconds before the first poll starts.
+         * 
+         * The option will be converted to a <code>long</code> type.
+         * 
+         * Default: 1000
+         * Group: scheduler
+         * 
+         * @param initialDelay the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder initialDelay(String initialDelay) {
+            doSetProperty("initialDelay", initialDelay);
+            return this;
+        }
+        /**
+         * Specifies a maximum limit of number of fires. So if you set it to 1,
+         * the scheduler will only fire once. If you set it to 5, it will only
+         * fire five times. A value of zero or negative means fire forever.
+         * 
+         * The option is a: <code>long</code> type.
+         * 
+         * Default: 0
+         * Group: scheduler
+         * 
+         * @param repeatCount the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder repeatCount(long repeatCount) {
+            doSetProperty("repeatCount", repeatCount);
+            return this;
+        }
+        /**
+         * Specifies a maximum limit of number of fires. So if you set it to 1,
+         * the scheduler will only fire once. If you set it to 5, it will only
+         * fire five times. A value of zero or negative means fire forever.
+         * 
+         * The option will be converted to a <code>long</code> type.
+         * 
+         * Default: 0
+         * Group: scheduler
+         * 
+         * @param repeatCount the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder repeatCount(String repeatCount) {
+            doSetProperty("repeatCount", repeatCount);
+            return this;
+        }
+        /**
+         * The consumer logs a start/complete log line when it polls. This
+         * option allows you to configure the logging level for that.
+         * 
+         * The option is a: <code>org.apache.camel.LoggingLevel</code> type.
+         * 
+         * Default: TRACE
+         * Group: scheduler
+         * 
+         * @param runLoggingLevel the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder runLoggingLevel(org.apache.camel.LoggingLevel runLoggingLevel) {
+            doSetProperty("runLoggingLevel", runLoggingLevel);
+            return this;
+        }
+        /**
+         * The consumer logs a start/complete log line when it polls. This
+         * option allows you to configure the logging level for that.
+         * 
+         * The option will be converted to a
+         * <code>org.apache.camel.LoggingLevel</code> type.
+         * 
+         * Default: TRACE
+         * Group: scheduler
+         * 
+         * @param runLoggingLevel the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder runLoggingLevel(String runLoggingLevel) {
+            doSetProperty("runLoggingLevel", runLoggingLevel);
+            return this;
+        }
+        /**
+         * Allows for configuring a custom/shared thread pool to use for the
+         * consumer. By default each consumer has its own single threaded thread
+         * pool.
+         * 
+         * The option is a:
+         * <code>java.util.concurrent.ScheduledExecutorService</code> type.
+         * 
+         * Group: scheduler
+         * 
+         * @param scheduledExecutorService the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder scheduledExecutorService(ScheduledExecutorService scheduledExecutorService) {
+            doSetProperty("scheduledExecutorService", scheduledExecutorService);
+            return this;
+        }
+        /**
+         * Allows for configuring a custom/shared thread pool to use for the
+         * consumer. By default each consumer has its own single threaded thread
+         * pool.
+         * 
+         * The option will be converted to a
+         * <code>java.util.concurrent.ScheduledExecutorService</code> type.
+         * 
+         * Group: scheduler
+         * 
+         * @param scheduledExecutorService the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder scheduledExecutorService(String scheduledExecutorService) {
+            doSetProperty("scheduledExecutorService", scheduledExecutorService);
+            return this;
+        }
+        /**
+         * To use a cron scheduler from either camel-spring or camel-quartz
+         * component. Use value spring or quartz for built in scheduler.
+         * 
+         * The option is a: <code>java.lang.Object</code> type.
+         * 
+         * Default: none
+         * Group: scheduler
+         * 
+         * @param scheduler the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder scheduler(Object scheduler) {
+            doSetProperty("scheduler", scheduler);
+            return this;
+        }
+        /**
+         * To use a cron scheduler from either camel-spring or camel-quartz
+         * component. Use value spring or quartz for built in scheduler.
+         * 
+         * The option will be converted to a <code>java.lang.Object</code> type.
+         * 
+         * Default: none
+         * Group: scheduler
+         * 
+         * @param scheduler the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder scheduler(String scheduler) {
+            doSetProperty("scheduler", scheduler);
+            return this;
+        }
+        /**
+         * To configure additional properties when using a custom scheduler or
+         * any of the Quartz, Spring based scheduler. This is a multi-value
+         * option with prefix: scheduler.
+         * 
+         * The option is a: <code>java.util.Map&lt;java.lang.String,
+         * java.lang.Object&gt;</code> type.
+         * The option is multivalued, and you can use the
+         * schedulerProperties(String, Object) method to add a value (call the
+         * method multiple times to set more values).
+         * 
+         * Group: scheduler
+         * 
+         * @param key the option key
+         * @param value the option value
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder schedulerProperties(String key, Object value) {
+            doSetMultiValueProperty("schedulerProperties", "scheduler." + key, value);
+            return this;
+        }
+        /**
+         * To configure additional properties when using a custom scheduler or
+         * any of the Quartz, Spring based scheduler. This is a multi-value
+         * option with prefix: scheduler.
+         * 
+         * The option is a: <code>java.util.Map&lt;java.lang.String,
+         * java.lang.Object&gt;</code> type.
+         * The option is multivalued, and you can use the
+         * schedulerProperties(String, Object) method to add a value (call the
+         * method multiple times to set more values).
+         * 
+         * Group: scheduler
+         * 
+         * @param values the values
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder schedulerProperties(Map values) {
+            doSetMultiValueProperties("schedulerProperties", "scheduler.", values);
+            return this;
+        }
+        /**
+         * Whether the scheduler should be auto started.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: true
+         * Group: scheduler
+         * 
+         * @param startScheduler the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder startScheduler(boolean startScheduler) {
+            doSetProperty("startScheduler", startScheduler);
+            return this;
+        }
+        /**
+         * Whether the scheduler should be auto started.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: true
+         * Group: scheduler
+         * 
+         * @param startScheduler the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder startScheduler(String startScheduler) {
+            doSetProperty("startScheduler", startScheduler);
+            return this;
+        }
+        /**
+         * Time unit for initialDelay and delay options.
+         * 
+         * The option is a: <code>java.util.concurrent.TimeUnit</code> type.
+         * 
+         * Default: MILLISECONDS
+         * Group: scheduler
+         * 
+         * @param timeUnit the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder timeUnit(TimeUnit timeUnit) {
+            doSetProperty("timeUnit", timeUnit);
+            return this;
+        }
+        /**
+         * Time unit for initialDelay and delay options.
+         * 
+         * The option will be converted to a
+         * <code>java.util.concurrent.TimeUnit</code> type.
+         * 
+         * Default: MILLISECONDS
+         * Group: scheduler
+         * 
+         * @param timeUnit the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder timeUnit(String timeUnit) {
+            doSetProperty("timeUnit", timeUnit);
+            return this;
+        }
+        /**
+         * Controls if fixed delay or fixed rate is used. See
+         * ScheduledExecutorService in JDK for details.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: true
+         * Group: scheduler
+         * 
+         * @param useFixedDelay the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder useFixedDelay(boolean useFixedDelay) {
+            doSetProperty("useFixedDelay", useFixedDelay);
+            return this;
+        }
+        /**
+         * Controls if fixed delay or fixed rate is used. See
+         * ScheduledExecutorService in JDK for details.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: true
+         * Group: scheduler
+         * 
+         * @param useFixedDelay the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder useFixedDelay(String useFixedDelay) {
+            doSetProperty("useFixedDelay", useFixedDelay);
+            return this;
+        }
+        /**
+         * Amazon AWS Access Key.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         * 
+         * @param accessKey the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder accessKey(String accessKey) {
+            doSetProperty("accessKey", accessKey);
+            return this;
+        }
+        /**
+         * If using a profile credentials provider, this parameter will set the
+         * profile name.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         * 
+         * @param profileCredentialsName the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder profileCredentialsName(String profileCredentialsName) {
+            doSetProperty("profileCredentialsName", profileCredentialsName);
+            return this;
+        }
+        /**
+         * Amazon AWS Secret Key.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         * 
+         * @param secretKey the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder secretKey(String secretKey) {
+            doSetProperty("secretKey", secretKey);
+            return this;
+        }
+        /**
+         * Amazon AWS Session Token used when the user needs to assume an IAM
+         * role.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         * 
+         * @param sessionToken the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder sessionToken(String sessionToken) {
+            doSetProperty("sessionToken", sessionToken);
+            return this;
+        }
+        /**
+         * If we want to trust all certificates in case of overriding the
+         * endpoint.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param trustAllCertificates the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder trustAllCertificates(boolean trustAllCertificates) {
+            doSetProperty("trustAllCertificates", trustAllCertificates);
+            return this;
+        }
+        /**
+         * If we want to trust all certificates in case of overriding the
+         * endpoint.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param trustAllCertificates the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder trustAllCertificates(String trustAllCertificates) {
+            doSetProperty("trustAllCertificates", trustAllCertificates);
+            return this;
+        }
+        /**
+         * Set whether the S3 Vectors client should expect to load credentials
+         * through a default credentials provider.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param useDefaultCredentialsProvider the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder useDefaultCredentialsProvider(boolean useDefaultCredentialsProvider) {
+            doSetProperty("useDefaultCredentialsProvider", useDefaultCredentialsProvider);
+            return this;
+        }
+        /**
+         * Set whether the S3 Vectors client should expect to load credentials
+         * through a default credentials provider.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param useDefaultCredentialsProvider the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder useDefaultCredentialsProvider(String useDefaultCredentialsProvider) {
+            doSetProperty("useDefaultCredentialsProvider", useDefaultCredentialsProvider);
+            return this;
+        }
+        /**
+         * Set whether the S3 Vectors client should expect to load credentials
+         * through a profile credentials provider.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param useProfileCredentialsProvider the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder useProfileCredentialsProvider(boolean useProfileCredentialsProvider) {
+            doSetProperty("useProfileCredentialsProvider", useProfileCredentialsProvider);
+            return this;
+        }
+        /**
+         * Set whether the S3 Vectors client should expect to load credentials
+         * through a profile credentials provider.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param useProfileCredentialsProvider the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder useProfileCredentialsProvider(String useProfileCredentialsProvider) {
+            doSetProperty("useProfileCredentialsProvider", useProfileCredentialsProvider);
+            return this;
+        }
+        /**
+         * Set whether the S3 Vectors client should expect to use Session
+         * Credentials. This is useful in a situation in which the user needs to
+         * assume an IAM role for doing operations in S3 Vectors.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param useSessionCredentials the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder useSessionCredentials(boolean useSessionCredentials) {
+            doSetProperty("useSessionCredentials", useSessionCredentials);
+            return this;
+        }
+        /**
+         * Set whether the S3 Vectors client should expect to use Session
+         * Credentials. This is useful in a situation in which the user needs to
+         * assume an IAM role for doing operations in S3 Vectors.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param useSessionCredentials the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointConsumerBuilder useSessionCredentials(String useSessionCredentials) {
+            doSetProperty("useSessionCredentials", useSessionCredentials);
+            return this;
+        }
+    }
+
+    /**
+     * Advanced builder for endpoint consumers for the AWS S3 Vectors component.
+     */
+    public interface AdvancedAWS2S3VectorsEndpointConsumerBuilder
+            extends
+                EndpointConsumerBuilder {
+        default AWS2S3VectorsEndpointConsumerBuilder basic() {
+            return (AWS2S3VectorsEndpointConsumerBuilder) this;
+        }
+        /**
+         * Allows for bridging the consumer to the Camel routing Error Handler,
+         * which mean any exceptions (if possible) occurred while the Camel
+         * consumer is trying to pickup incoming messages, or the likes, will
+         * now be processed as a message and handled by the routing Error
+         * Handler. Important: This is only possible if the 3rd party component
+         * allows Camel to be alerted if an exception was thrown. Some
+         * components handle this internally only, and therefore
+         * bridgeErrorHandler is not possible. In other situations we may
+         * improve the Camel component to hook into the 3rd party component and
+         * make this possible for future releases. By default the consumer will
+         * use the org.apache.camel.spi.ExceptionHandler to deal with
+         * exceptions, that will be logged at WARN or ERROR level and ignored.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: consumer (advanced)
+         * 
+         * @param bridgeErrorHandler the value to set
+         * @return the dsl builder
+         */
+        default AdvancedAWS2S3VectorsEndpointConsumerBuilder bridgeErrorHandler(boolean bridgeErrorHandler) {
+            doSetProperty("bridgeErrorHandler", bridgeErrorHandler);
+            return this;
+        }
+        /**
+         * Allows for bridging the consumer to the Camel routing Error Handler,
+         * which mean any exceptions (if possible) occurred while the Camel
+         * consumer is trying to pickup incoming messages, or the likes, will
+         * now be processed as a message and handled by the routing Error
+         * Handler. Important: This is only possible if the 3rd party component
+         * allows Camel to be alerted if an exception was thrown. Some
+         * components handle this internally only, and therefore
+         * bridgeErrorHandler is not possible. In other situations we may
+         * improve the Camel component to hook into the 3rd party component and
+         * make this possible for future releases. By default the consumer will
+         * use the org.apache.camel.spi.ExceptionHandler to deal with
+         * exceptions, that will be logged at WARN or ERROR level and ignored.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: consumer (advanced)
+         * 
+         * @param bridgeErrorHandler the value to set
+         * @return the dsl builder
+         */
+        default AdvancedAWS2S3VectorsEndpointConsumerBuilder bridgeErrorHandler(String bridgeErrorHandler) {
+            doSetProperty("bridgeErrorHandler", bridgeErrorHandler);
+            return this;
+        }
+        /**
+         * To let the consumer use a custom ExceptionHandler. Notice if the
+         * option bridgeErrorHandler is enabled then this option is not in use.
+         * By default the consumer will deal with exceptions, that will be
+         * logged at WARN or ERROR level and ignored.
+         * 
+         * The option is a: <code>org.apache.camel.spi.ExceptionHandler</code>
+         * type.
+         * 
+         * Group: consumer (advanced)
+         * 
+         * @param exceptionHandler the value to set
+         * @return the dsl builder
+         */
+        default AdvancedAWS2S3VectorsEndpointConsumerBuilder exceptionHandler(org.apache.camel.spi.ExceptionHandler exceptionHandler) {
+            doSetProperty("exceptionHandler", exceptionHandler);
+            return this;
+        }
+        /**
+         * To let the consumer use a custom ExceptionHandler. Notice if the
+         * option bridgeErrorHandler is enabled then this option is not in use.
+         * By default the consumer will deal with exceptions, that will be
+         * logged at WARN or ERROR level and ignored.
+         * 
+         * The option will be converted to a
+         * <code>org.apache.camel.spi.ExceptionHandler</code> type.
+         * 
+         * Group: consumer (advanced)
+         * 
+         * @param exceptionHandler the value to set
+         * @return the dsl builder
+         */
+        default AdvancedAWS2S3VectorsEndpointConsumerBuilder exceptionHandler(String exceptionHandler) {
+            doSetProperty("exceptionHandler", exceptionHandler);
+            return this;
+        }
+        /**
+         * Sets the exchange pattern when the consumer creates an exchange.
+         * 
+         * The option is a: <code>org.apache.camel.ExchangePattern</code> type.
+         * 
+         * Group: consumer (advanced)
+         * 
+         * @param exchangePattern the value to set
+         * @return the dsl builder
+         */
+        default AdvancedAWS2S3VectorsEndpointConsumerBuilder exchangePattern(org.apache.camel.ExchangePattern exchangePattern) {
+            doSetProperty("exchangePattern", exchangePattern);
+            return this;
+        }
+        /**
+         * Sets the exchange pattern when the consumer creates an exchange.
+         * 
+         * The option will be converted to a
+         * <code>org.apache.camel.ExchangePattern</code> type.
+         * 
+         * Group: consumer (advanced)
+         * 
+         * @param exchangePattern the value to set
+         * @return the dsl builder
+         */
+        default AdvancedAWS2S3VectorsEndpointConsumerBuilder exchangePattern(String exchangePattern) {
+            doSetProperty("exchangePattern", exchangePattern);
+            return this;
+        }
+        /**
+         * A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing
+         * you to provide your custom implementation to control error handling
+         * usually occurred during the poll operation before an Exchange have
+         * been created and being routed in Camel.
+         * 
+         * The option is a:
+         * <code>org.apache.camel.spi.PollingConsumerPollStrategy</code> type.
+         * 
+         * Group: consumer (advanced)
+         * 
+         * @param pollStrategy the value to set
+         * @return the dsl builder
+         */
+        default AdvancedAWS2S3VectorsEndpointConsumerBuilder pollStrategy(org.apache.camel.spi.PollingConsumerPollStrategy pollStrategy) {
+            doSetProperty("pollStrategy", pollStrategy);
+            return this;
+        }
+        /**
+         * A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing
+         * you to provide your custom implementation to control error handling
+         * usually occurred during the poll operation before an Exchange have
+         * been created and being routed in Camel.
+         * 
+         * The option will be converted to a
+         * <code>org.apache.camel.spi.PollingConsumerPollStrategy</code> type.
+         * 
+         * Group: consumer (advanced)
+         * 
+         * @param pollStrategy the value to set
+         * @return the dsl builder
+         */
+        default AdvancedAWS2S3VectorsEndpointConsumerBuilder pollStrategy(String pollStrategy) {
+            doSetProperty("pollStrategy", pollStrategy);
+            return this;
+        }
+        /**
+         * Reference to a
+         * software.amazon.awssdk.services.s3vectors.S3VectorsClient in the
+         * registry.
+         * 
+         * The option is a:
+         * <code>software.amazon.awssdk.services.s3vectors.S3VectorsClient</code> type.
+         * 
+         * Group: advanced
+         * 
+         * @param s3VectorsClient the value to set
+         * @return the dsl builder
+         */
+        default AdvancedAWS2S3VectorsEndpointConsumerBuilder s3VectorsClient(software.amazon.awssdk.services.s3vectors.S3VectorsClient s3VectorsClient) {
+            doSetProperty("s3VectorsClient", s3VectorsClient);
+            return this;
+        }
+        /**
+         * Reference to a
+         * software.amazon.awssdk.services.s3vectors.S3VectorsClient in the
+         * registry.
+         * 
+         * The option will be converted to a
+         * <code>software.amazon.awssdk.services.s3vectors.S3VectorsClient</code> type.
+         * 
+         * Group: advanced
+         * 
+         * @param s3VectorsClient the value to set
+         * @return the dsl builder
+         */
+        default AdvancedAWS2S3VectorsEndpointConsumerBuilder s3VectorsClient(String s3VectorsClient) {
+            doSetProperty("s3VectorsClient", s3VectorsClient);
+            return this;
+        }
+    }
+
+    /**
+     * Builder for endpoint producers for the AWS S3 Vectors component.
+     */
+    public interface AWS2S3VectorsEndpointProducerBuilder
+            extends
+                EndpointProducerBuilder {
+        default AdvancedAWS2S3VectorsEndpointProducerBuilder advanced() {
+            return (AdvancedAWS2S3VectorsEndpointProducerBuilder) this;
+        }
+
+        /**
+         * The data type of the vector. Options: float32, float16.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Default: float32
+         * Group: common
+         * 
+         * @param dataType the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder dataType(String dataType) {
+            doSetProperty("dataType", dataType);
+            return this;
+        }
+        /**
+         * The distance metric to use for similarity search. Options: cosine,
+         * euclidean, dot-product.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Default: cosine
+         * Group: common
+         * 
+         * @param distanceMetric the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder distanceMetric(String distanceMetric) {
+            doSetProperty("distanceMetric", distanceMetric);
+            return this;
+        }
+        /**
+         * Set the need for overriding the endpoint. This option needs to be
+         * used in combination with uriEndpointOverride option.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: common
+         * 
+         * @param overrideEndpoint the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder overrideEndpoint(boolean overrideEndpoint) {
+            doSetProperty("overrideEndpoint", overrideEndpoint);
+            return this;
+        }
+        /**
+         * Set the need for overriding the endpoint. This option needs to be
+         * used in combination with uriEndpointOverride option.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: common
+         * 
+         * @param overrideEndpoint the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder overrideEndpoint(String overrideEndpoint) {
+            doSetProperty("overrideEndpoint", overrideEndpoint);
+            return this;
+        }
+        /**
+         * The region in which S3 Vectors client needs to work. When using this
+         * parameter, the configuration will expect the lowercase name of the
+         * region (for example ap-east-1).
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: common
+         * 
+         * @param region the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder region(String region) {
+            doSetProperty("region", region);
+            return this;
+        }
+        /**
+         * The minimum similarity threshold for results.
+         * 
+         * The option is a: <code>java.lang.Float</code> type.
+         * 
+         * Group: common
+         * 
+         * @param similarityThreshold the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder similarityThreshold(Float similarityThreshold) {
+            doSetProperty("similarityThreshold", similarityThreshold);
+            return this;
+        }
+        /**
+         * The minimum similarity threshold for results.
+         * 
+         * The option will be converted to a <code>java.lang.Float</code> type.
+         * 
+         * Group: common
+         * 
+         * @param similarityThreshold the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder similarityThreshold(String similarityThreshold) {
+            doSetProperty("similarityThreshold", similarityThreshold);
+            return this;
+        }
+        /**
+         * The number of top similar vectors to return in a query.
+         * 
+         * The option is a: <code>java.lang.Integer</code> type.
+         * 
+         * Default: 10
+         * Group: common
+         * 
+         * @param topK the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder topK(Integer topK) {
+            doSetProperty("topK", topK);
+            return this;
+        }
+        /**
+         * The number of top similar vectors to return in a query.
+         * 
+         * The option will be converted to a <code>java.lang.Integer</code>
+         * type.
+         * 
+         * Default: 10
+         * Group: common
+         * 
+         * @param topK the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder topK(String topK) {
+            doSetProperty("topK", topK);
+            return this;
+        }
+        /**
+         * Set the overriding uri endpoint. This option needs to be used in
+         * combination with overrideEndpoint option.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: common
+         * 
+         * @param uriEndpointOverride the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder uriEndpointOverride(String uriEndpointOverride) {
+            doSetProperty("uriEndpointOverride", uriEndpointOverride);
+            return this;
+        }
+        /**
+         * The dimensions of the vector embeddings (default: 1536, which is the
+         * dimension for OpenAI text-embedding-3-small).
+         * 
+         * The option is a: <code>java.lang.Integer</code> type.
+         * 
+         * Default: 1536
+         * Group: common
+         * 
+         * @param vectorDimensions the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder vectorDimensions(Integer vectorDimensions) {
+            doSetProperty("vectorDimensions", vectorDimensions);
+            return this;
+        }
+        /**
+         * The dimensions of the vector embeddings (default: 1536, which is the
+         * dimension for OpenAI text-embedding-3-small).
+         * 
+         * The option will be converted to a <code>java.lang.Integer</code>
+         * type.
+         * 
+         * Default: 1536
+         * Group: common
+         * 
+         * @param vectorDimensions the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder vectorDimensions(String vectorDimensions) {
+            doSetProperty("vectorDimensions", vectorDimensions);
+            return this;
+        }
+        /**
+         * The name of the vector index.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: common
+         * 
+         * @param vectorIndexName the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder vectorIndexName(String vectorIndexName) {
+            doSetProperty("vectorIndexName", vectorIndexName);
+            return this;
+        }
+        /**
+         * The operation to perform.
+         * 
+         * The option is a:
+         * <code>org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsOperations</code> type.
+         * 
+         * Group: producer
+         * 
+         * @param operation the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder operation(org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsOperations operation) {
+            doSetProperty("operation", operation);
+            return this;
+        }
+        /**
+         * The operation to perform.
+         * 
+         * The option will be converted to a
+         * <code>org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsOperations</code> type.
+         * 
+         * Group: producer
+         * 
+         * @param operation the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder operation(String operation) {
+            doSetProperty("operation", operation);
+            return this;
+        }
+        /**
+         * To define a proxy host when instantiating the S3 Vectors client.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: proxy
+         * 
+         * @param proxyHost the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder proxyHost(String proxyHost) {
+            doSetProperty("proxyHost", proxyHost);
+            return this;
+        }
+        /**
+         * To define a proxy port when instantiating the S3 Vectors client.
+         * 
+         * The option is a: <code>java.lang.Integer</code> type.
+         * 
+         * Group: proxy
+         * 
+         * @param proxyPort the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder proxyPort(Integer proxyPort) {
+            doSetProperty("proxyPort", proxyPort);
+            return this;
+        }
+        /**
+         * To define a proxy port when instantiating the S3 Vectors client.
+         * 
+         * The option will be converted to a <code>java.lang.Integer</code>
+         * type.
+         * 
+         * Group: proxy
+         * 
+         * @param proxyPort the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder proxyPort(String proxyPort) {
+            doSetProperty("proxyPort", proxyPort);
+            return this;
+        }
+        /**
+         * To define a proxy protocol when instantiating the S3 Vectors client.
+         * 
+         * The option is a: <code>software.amazon.awssdk.core.Protocol</code>
+         * type.
+         * 
+         * Default: HTTPS
+         * Group: proxy
+         * 
+         * @param proxyProtocol the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder proxyProtocol(software.amazon.awssdk.core.Protocol proxyProtocol) {
+            doSetProperty("proxyProtocol", proxyProtocol);
+            return this;
+        }
+        /**
+         * To define a proxy protocol when instantiating the S3 Vectors client.
+         * 
+         * The option will be converted to a
+         * <code>software.amazon.awssdk.core.Protocol</code> type.
+         * 
+         * Default: HTTPS
+         * Group: proxy
+         * 
+         * @param proxyProtocol the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder proxyProtocol(String proxyProtocol) {
+            doSetProperty("proxyProtocol", proxyProtocol);
+            return this;
+        }
+        /**
+         * Amazon AWS Access Key.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         * 
+         * @param accessKey the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder accessKey(String accessKey) {
+            doSetProperty("accessKey", accessKey);
+            return this;
+        }
+        /**
+         * If using a profile credentials provider, this parameter will set the
+         * profile name.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         * 
+         * @param profileCredentialsName the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder profileCredentialsName(String profileCredentialsName) {
+            doSetProperty("profileCredentialsName", profileCredentialsName);
+            return this;
+        }
+        /**
+         * Amazon AWS Secret Key.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         * 
+         * @param secretKey the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder secretKey(String secretKey) {
+            doSetProperty("secretKey", secretKey);
+            return this;
+        }
+        /**
+         * Amazon AWS Session Token used when the user needs to assume an IAM
+         * role.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         * 
+         * @param sessionToken the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder sessionToken(String sessionToken) {
+            doSetProperty("sessionToken", sessionToken);
+            return this;
+        }
+        /**
+         * If we want to trust all certificates in case of overriding the
+         * endpoint.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param trustAllCertificates the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder trustAllCertificates(boolean trustAllCertificates) {
+            doSetProperty("trustAllCertificates", trustAllCertificates);
+            return this;
+        }
+        /**
+         * If we want to trust all certificates in case of overriding the
+         * endpoint.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param trustAllCertificates the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder trustAllCertificates(String trustAllCertificates) {
+            doSetProperty("trustAllCertificates", trustAllCertificates);
+            return this;
+        }
+        /**
+         * Set whether the S3 Vectors client should expect to load credentials
+         * through a default credentials provider.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param useDefaultCredentialsProvider the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder useDefaultCredentialsProvider(boolean useDefaultCredentialsProvider) {
+            doSetProperty("useDefaultCredentialsProvider", useDefaultCredentialsProvider);
+            return this;
+        }
+        /**
+         * Set whether the S3 Vectors client should expect to load credentials
+         * through a default credentials provider.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param useDefaultCredentialsProvider the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder useDefaultCredentialsProvider(String useDefaultCredentialsProvider) {
+            doSetProperty("useDefaultCredentialsProvider", useDefaultCredentialsProvider);
+            return this;
+        }
+        /**
+         * Set whether the S3 Vectors client should expect to load credentials
+         * through a profile credentials provider.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param useProfileCredentialsProvider the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder useProfileCredentialsProvider(boolean useProfileCredentialsProvider) {
+            doSetProperty("useProfileCredentialsProvider", useProfileCredentialsProvider);
+            return this;
+        }
+        /**
+         * Set whether the S3 Vectors client should expect to load credentials
+         * through a profile credentials provider.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param useProfileCredentialsProvider the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder useProfileCredentialsProvider(String useProfileCredentialsProvider) {
+            doSetProperty("useProfileCredentialsProvider", useProfileCredentialsProvider);
+            return this;
+        }
+        /**
+         * Set whether the S3 Vectors client should expect to use Session
+         * Credentials. This is useful in a situation in which the user needs to
+         * assume an IAM role for doing operations in S3 Vectors.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param useSessionCredentials the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder useSessionCredentials(boolean useSessionCredentials) {
+            doSetProperty("useSessionCredentials", useSessionCredentials);
+            return this;
+        }
+        /**
+         * Set whether the S3 Vectors client should expect to use Session
+         * Credentials. This is useful in a situation in which the user needs to
+         * assume an IAM role for doing operations in S3 Vectors.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param useSessionCredentials the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointProducerBuilder useSessionCredentials(String useSessionCredentials) {
+            doSetProperty("useSessionCredentials", useSessionCredentials);
+            return this;
+        }
+    }
+
+    /**
+     * Advanced builder for endpoint producers for the AWS S3 Vectors component.
+     */
+    public interface AdvancedAWS2S3VectorsEndpointProducerBuilder extends EndpointProducerBuilder {
+        default AWS2S3VectorsEndpointProducerBuilder basic() {
+            return (AWS2S3VectorsEndpointProducerBuilder) this;
+        }
+
+        /**
+         * Whether the producer should be started lazy (on the first message).
+         * By starting lazy you can use this to allow CamelContext and routes to
+         * startup in situations where a producer may otherwise fail during
+         * starting and cause the route to fail being started. By deferring this
+         * startup to be lazy then the startup failure can be handled during
+         * routing messages via Camel's routing error handlers. Beware that when
+         * the first message is processed then creating and starting the
+         * producer may take a little time and prolong the total processing time
+         * of the processing.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: producer (advanced)
+         * 
+         * @param lazyStartProducer the value to set
+         * @return the dsl builder
+         */
+        default AdvancedAWS2S3VectorsEndpointProducerBuilder lazyStartProducer(boolean lazyStartProducer) {
+            doSetProperty("lazyStartProducer", lazyStartProducer);
+            return this;
+        }
+        /**
+         * Whether the producer should be started lazy (on the first message).
+         * By starting lazy you can use this to allow CamelContext and routes to
+         * startup in situations where a producer may otherwise fail during
+         * starting and cause the route to fail being started. By deferring this
+         * startup to be lazy then the startup failure can be handled during
+         * routing messages via Camel's routing error handlers. Beware that when
+         * the first message is processed then creating and starting the
+         * producer may take a little time and prolong the total processing time
+         * of the processing.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: producer (advanced)
+         * 
+         * @param lazyStartProducer the value to set
+         * @return the dsl builder
+         */
+        default AdvancedAWS2S3VectorsEndpointProducerBuilder lazyStartProducer(String lazyStartProducer) {
+            doSetProperty("lazyStartProducer", lazyStartProducer);
+            return this;
+        }
+        /**
+         * Reference to a
+         * software.amazon.awssdk.services.s3vectors.S3VectorsClient in the
+         * registry.
+         * 
+         * The option is a:
+         * <code>software.amazon.awssdk.services.s3vectors.S3VectorsClient</code> type.
+         * 
+         * Group: advanced
+         * 
+         * @param s3VectorsClient the value to set
+         * @return the dsl builder
+         */
+        default AdvancedAWS2S3VectorsEndpointProducerBuilder s3VectorsClient(software.amazon.awssdk.services.s3vectors.S3VectorsClient s3VectorsClient) {
+            doSetProperty("s3VectorsClient", s3VectorsClient);
+            return this;
+        }
+        /**
+         * Reference to a
+         * software.amazon.awssdk.services.s3vectors.S3VectorsClient in the
+         * registry.
+         * 
+         * The option will be converted to a
+         * <code>software.amazon.awssdk.services.s3vectors.S3VectorsClient</code> type.
+         * 
+         * Group: advanced
+         * 
+         * @param s3VectorsClient the value to set
+         * @return the dsl builder
+         */
+        default AdvancedAWS2S3VectorsEndpointProducerBuilder s3VectorsClient(String s3VectorsClient) {
+            doSetProperty("s3VectorsClient", s3VectorsClient);
+            return this;
+        }
+    }
+
+    /**
+     * Builder for endpoint for the AWS S3 Vectors component.
+     */
+    public interface AWS2S3VectorsEndpointBuilder
+            extends
+                AWS2S3VectorsEndpointConsumerBuilder,
+                AWS2S3VectorsEndpointProducerBuilder {
+        default AdvancedAWS2S3VectorsEndpointBuilder advanced() {
+            return (AdvancedAWS2S3VectorsEndpointBuilder) this;
+        }
+
+        /**
+         * The data type of the vector. Options: float32, float16.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Default: float32
+         * Group: common
+         * 
+         * @param dataType the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder dataType(String dataType) {
+            doSetProperty("dataType", dataType);
+            return this;
+        }
+        /**
+         * The distance metric to use for similarity search. Options: cosine,
+         * euclidean, dot-product.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Default: cosine
+         * Group: common
+         * 
+         * @param distanceMetric the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder distanceMetric(String distanceMetric) {
+            doSetProperty("distanceMetric", distanceMetric);
+            return this;
+        }
+        /**
+         * Set the need for overriding the endpoint. This option needs to be
+         * used in combination with uriEndpointOverride option.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: common
+         * 
+         * @param overrideEndpoint the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder overrideEndpoint(boolean overrideEndpoint) {
+            doSetProperty("overrideEndpoint", overrideEndpoint);
+            return this;
+        }
+        /**
+         * Set the need for overriding the endpoint. This option needs to be
+         * used in combination with uriEndpointOverride option.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: common
+         * 
+         * @param overrideEndpoint the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder overrideEndpoint(String overrideEndpoint) {
+            doSetProperty("overrideEndpoint", overrideEndpoint);
+            return this;
+        }
+        /**
+         * The region in which S3 Vectors client needs to work. When using this
+         * parameter, the configuration will expect the lowercase name of the
+         * region (for example ap-east-1).
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: common
+         * 
+         * @param region the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder region(String region) {
+            doSetProperty("region", region);
+            return this;
+        }
+        /**
+         * The minimum similarity threshold for results.
+         * 
+         * The option is a: <code>java.lang.Float</code> type.
+         * 
+         * Group: common
+         * 
+         * @param similarityThreshold the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder similarityThreshold(Float similarityThreshold) {
+            doSetProperty("similarityThreshold", similarityThreshold);
+            return this;
+        }
+        /**
+         * The minimum similarity threshold for results.
+         * 
+         * The option will be converted to a <code>java.lang.Float</code> type.
+         * 
+         * Group: common
+         * 
+         * @param similarityThreshold the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder similarityThreshold(String similarityThreshold) {
+            doSetProperty("similarityThreshold", similarityThreshold);
+            return this;
+        }
+        /**
+         * The number of top similar vectors to return in a query.
+         * 
+         * The option is a: <code>java.lang.Integer</code> type.
+         * 
+         * Default: 10
+         * Group: common
+         * 
+         * @param topK the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder topK(Integer topK) {
+            doSetProperty("topK", topK);
+            return this;
+        }
+        /**
+         * The number of top similar vectors to return in a query.
+         * 
+         * The option will be converted to a <code>java.lang.Integer</code>
+         * type.
+         * 
+         * Default: 10
+         * Group: common
+         * 
+         * @param topK the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder topK(String topK) {
+            doSetProperty("topK", topK);
+            return this;
+        }
+        /**
+         * Set the overriding uri endpoint. This option needs to be used in
+         * combination with overrideEndpoint option.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: common
+         * 
+         * @param uriEndpointOverride the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder uriEndpointOverride(String uriEndpointOverride) {
+            doSetProperty("uriEndpointOverride", uriEndpointOverride);
+            return this;
+        }
+        /**
+         * The dimensions of the vector embeddings (default: 1536, which is the
+         * dimension for OpenAI text-embedding-3-small).
+         * 
+         * The option is a: <code>java.lang.Integer</code> type.
+         * 
+         * Default: 1536
+         * Group: common
+         * 
+         * @param vectorDimensions the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder vectorDimensions(Integer vectorDimensions) {
+            doSetProperty("vectorDimensions", vectorDimensions);
+            return this;
+        }
+        /**
+         * The dimensions of the vector embeddings (default: 1536, which is the
+         * dimension for OpenAI text-embedding-3-small).
+         * 
+         * The option will be converted to a <code>java.lang.Integer</code>
+         * type.
+         * 
+         * Default: 1536
+         * Group: common
+         * 
+         * @param vectorDimensions the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder vectorDimensions(String vectorDimensions) {
+            doSetProperty("vectorDimensions", vectorDimensions);
+            return this;
+        }
+        /**
+         * The name of the vector index.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: common
+         * 
+         * @param vectorIndexName the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder vectorIndexName(String vectorIndexName) {
+            doSetProperty("vectorIndexName", vectorIndexName);
+            return this;
+        }
+        /**
+         * To define a proxy host when instantiating the S3 Vectors client.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: proxy
+         * 
+         * @param proxyHost the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder proxyHost(String proxyHost) {
+            doSetProperty("proxyHost", proxyHost);
+            return this;
+        }
+        /**
+         * To define a proxy port when instantiating the S3 Vectors client.
+         * 
+         * The option is a: <code>java.lang.Integer</code> type.
+         * 
+         * Group: proxy
+         * 
+         * @param proxyPort the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder proxyPort(Integer proxyPort) {
+            doSetProperty("proxyPort", proxyPort);
+            return this;
+        }
+        /**
+         * To define a proxy port when instantiating the S3 Vectors client.
+         * 
+         * The option will be converted to a <code>java.lang.Integer</code>
+         * type.
+         * 
+         * Group: proxy
+         * 
+         * @param proxyPort the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder proxyPort(String proxyPort) {
+            doSetProperty("proxyPort", proxyPort);
+            return this;
+        }
+        /**
+         * To define a proxy protocol when instantiating the S3 Vectors client.
+         * 
+         * The option is a: <code>software.amazon.awssdk.core.Protocol</code>
+         * type.
+         * 
+         * Default: HTTPS
+         * Group: proxy
+         * 
+         * @param proxyProtocol the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder proxyProtocol(software.amazon.awssdk.core.Protocol proxyProtocol) {
+            doSetProperty("proxyProtocol", proxyProtocol);
+            return this;
+        }
+        /**
+         * To define a proxy protocol when instantiating the S3 Vectors client.
+         * 
+         * The option will be converted to a
+         * <code>software.amazon.awssdk.core.Protocol</code> type.
+         * 
+         * Default: HTTPS
+         * Group: proxy
+         * 
+         * @param proxyProtocol the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder proxyProtocol(String proxyProtocol) {
+            doSetProperty("proxyProtocol", proxyProtocol);
+            return this;
+        }
+        /**
+         * Amazon AWS Access Key.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         * 
+         * @param accessKey the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder accessKey(String accessKey) {
+            doSetProperty("accessKey", accessKey);
+            return this;
+        }
+        /**
+         * If using a profile credentials provider, this parameter will set the
+         * profile name.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         * 
+         * @param profileCredentialsName the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder profileCredentialsName(String profileCredentialsName) {
+            doSetProperty("profileCredentialsName", profileCredentialsName);
+            return this;
+        }
+        /**
+         * Amazon AWS Secret Key.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         * 
+         * @param secretKey the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder secretKey(String secretKey) {
+            doSetProperty("secretKey", secretKey);
+            return this;
+        }
+        /**
+         * Amazon AWS Session Token used when the user needs to assume an IAM
+         * role.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         * 
+         * @param sessionToken the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder sessionToken(String sessionToken) {
+            doSetProperty("sessionToken", sessionToken);
+            return this;
+        }
+        /**
+         * If we want to trust all certificates in case of overriding the
+         * endpoint.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param trustAllCertificates the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder trustAllCertificates(boolean trustAllCertificates) {
+            doSetProperty("trustAllCertificates", trustAllCertificates);
+            return this;
+        }
+        /**
+         * If we want to trust all certificates in case of overriding the
+         * endpoint.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param trustAllCertificates the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder trustAllCertificates(String trustAllCertificates) {
+            doSetProperty("trustAllCertificates", trustAllCertificates);
+            return this;
+        }
+        /**
+         * Set whether the S3 Vectors client should expect to load credentials
+         * through a default credentials provider.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param useDefaultCredentialsProvider the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder useDefaultCredentialsProvider(boolean useDefaultCredentialsProvider) {
+            doSetProperty("useDefaultCredentialsProvider", useDefaultCredentialsProvider);
+            return this;
+        }
+        /**
+         * Set whether the S3 Vectors client should expect to load credentials
+         * through a default credentials provider.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param useDefaultCredentialsProvider the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder useDefaultCredentialsProvider(String useDefaultCredentialsProvider) {
+            doSetProperty("useDefaultCredentialsProvider", useDefaultCredentialsProvider);
+            return this;
+        }
+        /**
+         * Set whether the S3 Vectors client should expect to load credentials
+         * through a profile credentials provider.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param useProfileCredentialsProvider the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder useProfileCredentialsProvider(boolean useProfileCredentialsProvider) {
+            doSetProperty("useProfileCredentialsProvider", useProfileCredentialsProvider);
+            return this;
+        }
+        /**
+         * Set whether the S3 Vectors client should expect to load credentials
+         * through a profile credentials provider.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param useProfileCredentialsProvider the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder useProfileCredentialsProvider(String useProfileCredentialsProvider) {
+            doSetProperty("useProfileCredentialsProvider", useProfileCredentialsProvider);
+            return this;
+        }
+        /**
+         * Set whether the S3 Vectors client should expect to use Session
+         * Credentials. This is useful in a situation in which the user needs to
+         * assume an IAM role for doing operations in S3 Vectors.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param useSessionCredentials the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder useSessionCredentials(boolean useSessionCredentials) {
+            doSetProperty("useSessionCredentials", useSessionCredentials);
+            return this;
+        }
+        /**
+         * Set whether the S3 Vectors client should expect to use Session
+         * Credentials. This is useful in a situation in which the user needs to
+         * assume an IAM role for doing operations in S3 Vectors.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param useSessionCredentials the value to set
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder useSessionCredentials(String useSessionCredentials) {
+            doSetProperty("useSessionCredentials", useSessionCredentials);
+            return this;
+        }
+    }
+
+    /**
+     * Advanced builder for endpoint for the AWS S3 Vectors component.
+     */
+    public interface AdvancedAWS2S3VectorsEndpointBuilder
+            extends
+                AdvancedAWS2S3VectorsEndpointConsumerBuilder,
+                AdvancedAWS2S3VectorsEndpointProducerBuilder {
+        default AWS2S3VectorsEndpointBuilder basic() {
+            return (AWS2S3VectorsEndpointBuilder) this;
+        }
+
+        /**
+         * Reference to a
+         * software.amazon.awssdk.services.s3vectors.S3VectorsClient in the
+         * registry.
+         * 
+         * The option is a:
+         * <code>software.amazon.awssdk.services.s3vectors.S3VectorsClient</code> type.
+         * 
+         * Group: advanced
+         * 
+         * @param s3VectorsClient the value to set
+         * @return the dsl builder
+         */
+        default AdvancedAWS2S3VectorsEndpointBuilder s3VectorsClient(software.amazon.awssdk.services.s3vectors.S3VectorsClient s3VectorsClient) {
+            doSetProperty("s3VectorsClient", s3VectorsClient);
+            return this;
+        }
+        /**
+         * Reference to a
+         * software.amazon.awssdk.services.s3vectors.S3VectorsClient in the
+         * registry.
+         * 
+         * The option will be converted to a
+         * <code>software.amazon.awssdk.services.s3vectors.S3VectorsClient</code> type.
+         * 
+         * Group: advanced
+         * 
+         * @param s3VectorsClient the value to set
+         * @return the dsl builder
+         */
+        default AdvancedAWS2S3VectorsEndpointBuilder s3VectorsClient(String s3VectorsClient) {
+            doSetProperty("s3VectorsClient", s3VectorsClient);
+            return this;
+        }
+    }
+
+    public interface AWS2S3VectorsBuilders {
+        /**
+         * AWS S3 Vectors (camel-aws2-s3-vectors)
+         * Store and query vector embeddings using AWS S3 Vectors with
+         * similarity search.
+         * 
+         * Category: cloud,ai
+         * Since: 4.17
+         * Maven coordinates: org.apache.camel:camel-aws2-s3-vectors
+         * 
+         * @return the dsl builder for the headers' name.
+         */
+        default AWS2S3VectorsHeaderNameBuilder aws2S3Vectors() {
+            return AWS2S3VectorsHeaderNameBuilder.INSTANCE;
+        }
+        /**
+         * AWS S3 Vectors (camel-aws2-s3-vectors)
+         * Store and query vector embeddings using AWS S3 Vectors with
+         * similarity search.
+         * 
+         * Category: cloud,ai
+         * Since: 4.17
+         * Maven coordinates: org.apache.camel:camel-aws2-s3-vectors
+         * 
+         * Syntax: <code>aws2-s3-vectors://vectorBucketName</code>
+         * 
+         * Path parameter: vectorBucketName (required)
+         * Vector bucket name or ARN
+         * 
+         * @param path vectorBucketName
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder aws2S3Vectors(String path) {
+            return AWS2S3VectorsEndpointBuilderFactory.endpointBuilder("aws2-s3-vectors", path);
+        }
+        /**
+         * AWS S3 Vectors (camel-aws2-s3-vectors)
+         * Store and query vector embeddings using AWS S3 Vectors with
+         * similarity search.
+         * 
+         * Category: cloud,ai
+         * Since: 4.17
+         * Maven coordinates: org.apache.camel:camel-aws2-s3-vectors
+         * 
+         * Syntax: <code>aws2-s3-vectors://vectorBucketName</code>
+         * 
+         * Path parameter: vectorBucketName (required)
+         * Vector bucket name or ARN
+         * 
+         * @param componentName to use a custom component name for the endpoint
+         * instead of the default name
+         * @param path vectorBucketName
+         * @return the dsl builder
+         */
+        default AWS2S3VectorsEndpointBuilder aws2S3Vectors(String componentName, String path) {
+            return AWS2S3VectorsEndpointBuilderFactory.endpointBuilder(componentName, path);
+        }
+
+    }
+    /**
+     * The builder of headers' name for the AWS S3 Vectors component.
+     */
+    public static class AWS2S3VectorsHeaderNameBuilder {
+        /**
+         * The internal instance of the builder used to access to all the
+         * methods representing the name of headers.
+         */
+        private static final AWS2S3VectorsHeaderNameBuilder INSTANCE = new AWS2S3VectorsHeaderNameBuilder();
+
+        /**
+         * The operation to perform.
+         * 
+         * The option is a: {@code String} type.
+         * 
+         * Group: common
+         * 
+         * @return the name of the header {@code AwsS3VectorsOperation}.
+         */
+        public String awsS3VectorsOperation() {
+            return "CamelAwsS3VectorsOperation";
+        }
+        /**
+         * The name of the vector bucket which will be used for the current
+         * operation.
+         * 
+         * The option is a: {@code String} type.
+         * 
+         * Group: common
+         * 
+         * @return the name of the header {@code AwsS3VectorsVectorBucketName}.
+         */
+        public String awsS3VectorsVectorBucketName() {
+            return "CamelAwsS3VectorsVectorBucketName";
+        }
+        /**
+         * The name of the vector index which will be used for the current
+         * operation.
+         * 
+         * The option is a: {@code String} type.
+         * 
+         * Group: common
+         * 
+         * @return the name of the header {@code AwsS3VectorsVectorIndexName}.
+         */
+        public String awsS3VectorsVectorIndexName() {
+            return "CamelAwsS3VectorsVectorIndexName";
+        }
+        /**
+         * The unique identifier for a vector.
+         * 
+         * The option is a: {@code String} type.
+         * 
+         * Group: producer
+         * 
+         * @return the name of the header {@code AwsS3VectorsVectorId}.
+         */
+        public String awsS3VectorsVectorId() {
+            return "CamelAwsS3VectorsVectorId";
+        }
+        /**
+         * The vector embedding data as a list of floats or float array.
+         * 
+         * The option is a: {@code List<Float> or float[]} type.
+         * 
+         * Group: producer
+         * 
+         * @return the name of the header {@code AwsS3VectorsVectorData}.
+         */
+        public String awsS3VectorsVectorData() {
+            return "CamelAwsS3VectorsVectorData";
+        }
+        /**
+         * The dimensions of the vector.
+         * 
+         * The option is a: {@code Integer} type.
+         * 
+         * Group: producer
+         * 
+         * @return the name of the header {@code AwsS3VectorsVectorDimensions}.
+         */
+        public String awsS3VectorsVectorDimensions() {
+            return "CamelAwsS3VectorsVectorDimensions";
+        }
+        /**
+         * The data type of the vector (float32 or float16).
+         * 
+         * The option is a: {@code String} type.
+         * 
+         * Group: producer
+         * 
+         * @return the name of the header {@code AwsS3VectorsDataType}.
+         */
+        public String awsS3VectorsDataType() {
+            return "CamelAwsS3VectorsDataType";
+        }
+        /**
+         * Additional metadata for the vector as a map.
+         * 
+         * The option is a: {@code Map<String, String>} type.
+         * 
+         * Group: producer
+         * 
+         * @return the name of the header {@code AwsS3VectorsVectorMetadata}.
+         */
+        public String awsS3VectorsVectorMetadata() {
+            return "CamelAwsS3VectorsVectorMetadata";
+        }
+        /**
+         * The query vector for similarity search as a list of floats or float
+         * array.
+         * 
+         * The option is a: {@code List<Float> or float[]} type.
+         * 
+         * Group: producer
+         * 
+         * @return the name of the header {@code AwsS3VectorsQueryVector}.
+         */
+        public String awsS3VectorsQueryVector() {
+            return "CamelAwsS3VectorsQueryVector";
+        }
+        /**
+         * The number of top similar vectors to return.
+         * 
+         * The option is a: {@code Integer} type.
+         * 
+         * Group: producer
+         * 
+         * @return the name of the header {@code AwsS3VectorsTopK}.
+         */
+        public String awsS3VectorsTopK() {
+            return "CamelAwsS3VectorsTopK";
+        }
+        /**
+         * The distance metric to use for similarity search (cosine, euclidean,
+         * dot-product).
+         * 
+         * The option is a: {@code String} type.
+         * 
+         * Group: producer
+         * 
+         * @return the name of the header {@code AwsS3VectorsDistanceMetric}.
+         */
+        public String awsS3VectorsDistanceMetric() {
+            return "CamelAwsS3VectorsDistanceMetric";
+        }
+        /**
+         * The minimum similarity threshold for results.
+         * 
+         * The option is a: {@code Float} type.
+         * 
+         * Group: producer
+         * 
+         * @return the name of the header {@code
+         * AwsS3VectorsSimilarityThreshold}.
+         */
+        public String awsS3VectorsSimilarityThreshold() {
+            return "CamelAwsS3VectorsSimilarityThreshold";
+        }
+        /**
+         * Optional filter expression for metadata filtering during vector
+         * search.
+         * 
+         * The option is a: {@code String} type.
+         * 
+         * Group: producer
+         * 
+         * @return the name of the header {@code AwsS3VectorsMetadataFilter}.
+         */
+        public String awsS3VectorsMetadataFilter() {
+            return "CamelAwsS3VectorsMetadataFilter";
+        }
+        /**
+         * The similarity score of the returned vector.
+         * 
+         * The option is a: {@code Float} type.
+         * 
+         * Group: consumer
+         * 
+         * @return the name of the header {@code AwsS3VectorsSimilarityScore}.
+         */
+        public String awsS3VectorsSimilarityScore() {
+            return "CamelAwsS3VectorsSimilarityScore";
+        }
+        /**
+         * The number of vectors returned in the result.
+         * 
+         * The option is a: {@code Integer} type.
+         * 
+         * Group: consumer
+         * 
+         * @return the name of the header {@code AwsS3VectorsResultCount}.
+         */
+        public String awsS3VectorsResultCount() {
+            return "CamelAwsS3VectorsResultCount";
+        }
+        /**
+         * The status of the vector index.
+         * 
+         * The option is a: {@code String} type.
+         * 
+         * Group: consumer
+         * 
+         * @return the name of the header {@code AwsS3VectorsIndexStatus}.
+         */
+        public String awsS3VectorsIndexStatus() {
+            return "CamelAwsS3VectorsIndexStatus";
+        }
+        /**
+         * The ARN of the vector bucket.
+         * 
+         * The option is a: {@code String} type.
+         * 
+         * Group: consumer
+         * 
+         * @return the name of the header {@code AwsS3VectorsVectorBucketArn}.
+         */
+        public String awsS3VectorsVectorBucketArn() {
+            return "CamelAwsS3VectorsVectorBucketArn";
+        }
+    }
+    static AWS2S3VectorsEndpointBuilder endpointBuilder(String componentName, String path) {
+        class AWS2S3VectorsEndpointBuilderImpl extends AbstractEndpointBuilder implements AWS2S3VectorsEndpointBuilder, AdvancedAWS2S3VectorsEndpointBuilder {
+            public AWS2S3VectorsEndpointBuilderImpl(String path) {
+                super(componentName, path);
+            }
+        }
+        return new AWS2S3VectorsEndpointBuilderImpl(path);
+    }
+}
\ No newline at end of file
diff --git a/dsl/camel-kamelet-main/src/generated/resources/camel-component-known-dependencies.properties b/dsl/camel-kamelet-main/src/generated/resources/camel-component-known-dependencies.properties
index 1068ace241e2..9b1b4d19829d 100644
--- a/dsl/camel-kamelet-main/src/generated/resources/camel-component-known-dependencies.properties
+++ b/dsl/camel-kamelet-main/src/generated/resources/camel-component-known-dependencies.properties
@@ -49,6 +49,7 @@ org.apache.camel.component.aws2.mq.MQ2Component=camel:aws2-mq
 org.apache.camel.component.aws2.msk.MSK2Component=camel:aws2-msk
 org.apache.camel.component.aws2.redshift.data.RedshiftData2Component=camel:aws2-redshift
 org.apache.camel.component.aws2.s3.AWS2S3Component=camel:aws2-s3
+org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsComponent=camel:aws2-s3-vectors
 org.apache.camel.component.aws2.ses.Ses2Component=camel:aws2-ses
 org.apache.camel.component.aws2.sns.Sns2Component=camel:aws2-sns
 org.apache.camel.component.aws2.sqs.Sqs2Component=camel:aws2-sqs
diff --git a/parent/pom.xml b/parent/pom.xml
index 4e844c75d4bb..d534c32cdcb4 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -895,6 +895,11 @@
                 <artifactId>camel-aws2-s3</artifactId>
                 <version>${project.version}</version>
             </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
+                <artifactId>camel-aws2-s3-vectors</artifactId>
+                <version>${project.version}</version>
+            </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
                 <artifactId>camel-aws2-ses</artifactId>
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/MojoHelper.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/MojoHelper.java
index 02ed0611423c..8dc42eba968a 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/MojoHelper.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/MojoHelper.java
@@ -123,7 +123,8 @@ public final class MojoHelper {
                         dir.resolve("camel-aws2-timestream"), dir.resolve("camel-aws2-translate"),
                         dir.resolve("camel-aws-xray"), dir.resolve("camel-aws-secrets-manager"),
                         dir.resolve("camel-aws-cloudtrail"), dir.resolve("camel-aws-config"), dir.resolve("camel-aws-bedrock"),
-                        dir.resolve("camel-aws2-textract"), dir.resolve("camel-aws2-transcribe"));
+                        dir.resolve("camel-aws2-textract"), dir.resolve("camel-aws2-transcribe"),
+                        dir.resolve("camel-aws2-s3-vectors"));
             case "camel-vertx":
                 return Arrays.asList(dir.resolve("camel-vertx"),
                         dir.resolve("camel-vertx-http"),