This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push: new 7ae963e3353 CAMEL-21588 Add indexName, collectionSimilarityMetric, dimension, cloud, and region to the configuration (#17270) 7ae963e3353 is described below commit 7ae963e33538b986eae1a8e4aa95c154fe78ef13 Author: Tom Cunningham <tcunn...@redhat.com> AuthorDate: Wed Feb 26 02:40:53 2025 -0500 CAMEL-21588 Add indexName, collectionSimilarityMetric, dimension, cloud, and region to the configuration (#17270) --- .../apache/camel/catalog/components/pinecone.json | 22 ++++-- .../PineconeVectorDbComponentConfigurer.java | 27 +++++++ .../PineconeVectorDbConfigurationConfigurer.java | 27 +++++++ .../PineconeVectorDbEndpointConfigurer.java | 27 +++++++ .../PineconeVectorDbEndpointUriFactory.java | 7 +- .../apache/camel/component/pinecone/pinecone.json | 22 ++++-- .../pinecone/PineconeVectorDbConfiguration.java | 70 +++++++++++++++++ .../pinecone/PineconeVectorDbProducer.java | 91 ++++++++++++++++++---- .../PineconeComponentConfigurationTest.java | 65 ++++++++++++++++ .../component/pinecone/it/PineconeComponentIT.java | 6 +- .../src/test/resources/pinecone_index.properties | 21 +++++ .../dsl/PineconeComponentBuilderFactory.java | 81 +++++++++++++++++++ .../PineconeVectorDbEndpointBuilderFactory.java | 86 ++++++++++++++++++++ 13 files changed, 520 insertions(+), 32 deletions(-) diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/pinecone.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/pinecone.json index 289d0f4b144..3419caa1b63 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/pinecone.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/pinecone.json @@ -24,10 +24,15 @@ "remote": true }, "componentProperties": { - "configuration": { "index": 0, "kind": "property", "displayName": "Configuration", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "deprecated": false, "autowired": false, "secret": false, "description": "The configuration;" }, - "lazyStartProducer": { "index": 1, "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 fail [...] - "token": { "index": 2, "kind": "property", "displayName": "Token", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "configurationField": "configuration", "description": "Sets the API key to use for authentication" }, - "autowiredEnabled": { "index": 3, "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 t [...] + "cloud": { "index": 0, "kind": "property", "displayName": "Cloud", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "configurationField": "configuration", "description": "Sets the cloud type to use (aws\/gcp\/azure)" }, + "cloudRegion": { "index": 1, "kind": "property", "displayName": "Cloud Region", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "configurationField": "configuration", "description": "Sets the cloud region" }, + "collectionDimension": { "index": 2, "kind": "property", "displayName": "Collection Dimension", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "configurationField": "configuration", "description": "Sets the Collection Dimension to use (1-1536)" }, + "collectionSimilarityMetric": { "index": 3, "kind": "property", "displayName": "Collection Similarity Metric", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "configurationField": "configuration", "description": "Sets the Collection Similarity Metric to use (cosine\/euclidea [...] + "configuration": { "index": 4, "kind": "property", "displayName": "Configuration", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "deprecated": false, "autowired": false, "secret": false, "description": "The configuration;" }, + "indexName": { "index": 5, "kind": "property", "displayName": "Index Name", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "configurationField": "configuration", "description": "Sets the index name to use" }, + "lazyStartProducer": { "index": 6, "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 fail [...] + "token": { "index": 7, "kind": "property", "displayName": "Token", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "configurationField": "configuration", "description": "Sets the API key to use for authentication" }, + "autowiredEnabled": { "index": 8, "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 t [...] }, "headers": { "CamelPineconeAction": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "enum": [ "CREATE_COLLECTION", "CREATE_INDEX", "UPSERT", "INSERT", "SEARCH", "DELETE", "UPDATE", "QUERY", "QUERY_BY_ID" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The action to be performed.", "constantName": "org.apache.camel.component.pinecone.PineconeVectorDb$Headers#ACTION" }, @@ -46,7 +51,12 @@ }, "properties": { "collection": { "index": 0, "kind": "path", "displayName": "Collection", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The collection Name" }, - "token": { "index": 1, "kind": "parameter", "displayName": "Token", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "configurationField": "configuration", "description": "Sets the API key to use for authentication" }, - "lazyStartProducer": { "index": 2, "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 produc [...] + "cloud": { "index": 1, "kind": "parameter", "displayName": "Cloud", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "configurationField": "configuration", "description": "Sets the cloud type to use (aws\/gcp\/azure)" }, + "cloudRegion": { "index": 2, "kind": "parameter", "displayName": "Cloud Region", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "configurationField": "configuration", "description": "Sets the cloud region" }, + "collectionDimension": { "index": 3, "kind": "parameter", "displayName": "Collection Dimension", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "configurationField": "configuration", "description": "Sets the Collection Dimension to use (1-1536)" }, + "collectionSimilarityMetric": { "index": 4, "kind": "parameter", "displayName": "Collection Similarity Metric", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "configurationField": "configuration", "description": "Sets the Collection Similarity Metric to use (cosine\/euclide [...] + "indexName": { "index": 5, "kind": "parameter", "displayName": "Index Name", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "configurationField": "configuration", "description": "Sets the index name to use" }, + "token": { "index": 6, "kind": "parameter", "displayName": "Token", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "configurationField": "configuration", "description": "Sets the API key to use for authentication" }, + "lazyStartProducer": { "index": 7, "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 produc [...] } } diff --git a/components/camel-ai/camel-pinecone/src/generated/java/org/apache/camel/component/pinecone/PineconeVectorDbComponentConfigurer.java b/components/camel-ai/camel-pinecone/src/generated/java/org/apache/camel/component/pinecone/PineconeVectorDbComponentConfigurer.java index dd6535b3461..410362fea3a 100644 --- a/components/camel-ai/camel-pinecone/src/generated/java/org/apache/camel/component/pinecone/PineconeVectorDbComponentConfigurer.java +++ b/components/camel-ai/camel-pinecone/src/generated/java/org/apache/camel/component/pinecone/PineconeVectorDbComponentConfigurer.java @@ -32,7 +32,16 @@ public class PineconeVectorDbComponentConfigurer extends PropertyConfigurerSuppo switch (ignoreCase ? name.toLowerCase() : name) { case "autowiredenabled": case "autowiredEnabled": target.setAutowiredEnabled(property(camelContext, boolean.class, value)); return true; + case "cloud": getOrCreateConfiguration(target).setCloud(property(camelContext, java.lang.String.class, value)); return true; + case "cloudregion": + case "cloudRegion": getOrCreateConfiguration(target).setCloudRegion(property(camelContext, java.lang.String.class, value)); return true; + case "collectiondimension": + case "collectionDimension": getOrCreateConfiguration(target).setCollectionDimension(property(camelContext, java.lang.Integer.class, value)); return true; + case "collectionsimilaritymetric": + case "collectionSimilarityMetric": getOrCreateConfiguration(target).setCollectionSimilarityMetric(property(camelContext, java.lang.String.class, value)); return true; case "configuration": target.setConfiguration(property(camelContext, org.apache.camel.component.pinecone.PineconeVectorDbConfiguration.class, value)); return true; + case "indexname": + case "indexName": getOrCreateConfiguration(target).setIndexName(property(camelContext, java.lang.String.class, value)); return true; case "lazystartproducer": case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true; case "token": getOrCreateConfiguration(target).setToken(property(camelContext, java.lang.String.class, value)); return true; @@ -45,7 +54,16 @@ public class PineconeVectorDbComponentConfigurer extends PropertyConfigurerSuppo switch (ignoreCase ? name.toLowerCase() : name) { case "autowiredenabled": case "autowiredEnabled": return boolean.class; + case "cloud": return java.lang.String.class; + case "cloudregion": + case "cloudRegion": return java.lang.String.class; + case "collectiondimension": + case "collectionDimension": return java.lang.Integer.class; + case "collectionsimilaritymetric": + case "collectionSimilarityMetric": return java.lang.String.class; case "configuration": return org.apache.camel.component.pinecone.PineconeVectorDbConfiguration.class; + case "indexname": + case "indexName": return java.lang.String.class; case "lazystartproducer": case "lazyStartProducer": return boolean.class; case "token": return java.lang.String.class; @@ -59,7 +77,16 @@ public class PineconeVectorDbComponentConfigurer extends PropertyConfigurerSuppo switch (ignoreCase ? name.toLowerCase() : name) { case "autowiredenabled": case "autowiredEnabled": return target.isAutowiredEnabled(); + case "cloud": return getOrCreateConfiguration(target).getCloud(); + case "cloudregion": + case "cloudRegion": return getOrCreateConfiguration(target).getCloudRegion(); + case "collectiondimension": + case "collectionDimension": return getOrCreateConfiguration(target).getCollectionDimension(); + case "collectionsimilaritymetric": + case "collectionSimilarityMetric": return getOrCreateConfiguration(target).getCollectionSimilarityMetric(); case "configuration": return target.getConfiguration(); + case "indexname": + case "indexName": return getOrCreateConfiguration(target).getIndexName(); case "lazystartproducer": case "lazyStartProducer": return target.isLazyStartProducer(); case "token": return getOrCreateConfiguration(target).getToken(); diff --git a/components/camel-ai/camel-pinecone/src/generated/java/org/apache/camel/component/pinecone/PineconeVectorDbConfigurationConfigurer.java b/components/camel-ai/camel-pinecone/src/generated/java/org/apache/camel/component/pinecone/PineconeVectorDbConfigurationConfigurer.java index befae42d11c..5192a73ec7c 100644 --- a/components/camel-ai/camel-pinecone/src/generated/java/org/apache/camel/component/pinecone/PineconeVectorDbConfigurationConfigurer.java +++ b/components/camel-ai/camel-pinecone/src/generated/java/org/apache/camel/component/pinecone/PineconeVectorDbConfigurationConfigurer.java @@ -24,6 +24,15 @@ public class PineconeVectorDbConfigurationConfigurer extends org.apache.camel.su org.apache.camel.component.pinecone.PineconeVectorDbConfiguration target = (org.apache.camel.component.pinecone.PineconeVectorDbConfiguration) obj; switch (ignoreCase ? name.toLowerCase() : name) { case "client": target.setClient(property(camelContext, io.pinecone.clients.Pinecone.class, value)); return true; + case "cloud": target.setCloud(property(camelContext, java.lang.String.class, value)); return true; + case "cloudregion": + case "cloudRegion": target.setCloudRegion(property(camelContext, java.lang.String.class, value)); return true; + case "collectiondimension": + case "collectionDimension": target.setCollectionDimension(property(camelContext, java.lang.Integer.class, value)); return true; + case "collectionsimilaritymetric": + case "collectionSimilarityMetric": target.setCollectionSimilarityMetric(property(camelContext, java.lang.String.class, value)); return true; + case "indexname": + case "indexName": target.setIndexName(property(camelContext, java.lang.String.class, value)); return true; case "token": target.setToken(property(camelContext, java.lang.String.class, value)); return true; default: return false; } @@ -33,6 +42,15 @@ public class PineconeVectorDbConfigurationConfigurer extends org.apache.camel.su public Class<?> getOptionType(String name, boolean ignoreCase) { switch (ignoreCase ? name.toLowerCase() : name) { case "client": return io.pinecone.clients.Pinecone.class; + case "cloud": return java.lang.String.class; + case "cloudregion": + case "cloudRegion": return java.lang.String.class; + case "collectiondimension": + case "collectionDimension": return java.lang.Integer.class; + case "collectionsimilaritymetric": + case "collectionSimilarityMetric": return java.lang.String.class; + case "indexname": + case "indexName": return java.lang.String.class; case "token": return java.lang.String.class; default: return null; } @@ -43,6 +61,15 @@ public class PineconeVectorDbConfigurationConfigurer extends org.apache.camel.su org.apache.camel.component.pinecone.PineconeVectorDbConfiguration target = (org.apache.camel.component.pinecone.PineconeVectorDbConfiguration) obj; switch (ignoreCase ? name.toLowerCase() : name) { case "client": return target.getClient(); + case "cloud": return target.getCloud(); + case "cloudregion": + case "cloudRegion": return target.getCloudRegion(); + case "collectiondimension": + case "collectionDimension": return target.getCollectionDimension(); + case "collectionsimilaritymetric": + case "collectionSimilarityMetric": return target.getCollectionSimilarityMetric(); + case "indexname": + case "indexName": return target.getIndexName(); case "token": return target.getToken(); default: return null; } diff --git a/components/camel-ai/camel-pinecone/src/generated/java/org/apache/camel/component/pinecone/PineconeVectorDbEndpointConfigurer.java b/components/camel-ai/camel-pinecone/src/generated/java/org/apache/camel/component/pinecone/PineconeVectorDbEndpointConfigurer.java index 5a6b067416e..109b265e4b3 100644 --- a/components/camel-ai/camel-pinecone/src/generated/java/org/apache/camel/component/pinecone/PineconeVectorDbEndpointConfigurer.java +++ b/components/camel-ai/camel-pinecone/src/generated/java/org/apache/camel/component/pinecone/PineconeVectorDbEndpointConfigurer.java @@ -23,6 +23,15 @@ public class PineconeVectorDbEndpointConfigurer extends PropertyConfigurerSuppor public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) { PineconeVectorDbEndpoint target = (PineconeVectorDbEndpoint) obj; switch (ignoreCase ? name.toLowerCase() : name) { + case "cloud": target.getConfiguration().setCloud(property(camelContext, java.lang.String.class, value)); return true; + case "cloudregion": + case "cloudRegion": target.getConfiguration().setCloudRegion(property(camelContext, java.lang.String.class, value)); return true; + case "collectiondimension": + case "collectionDimension": target.getConfiguration().setCollectionDimension(property(camelContext, java.lang.Integer.class, value)); return true; + case "collectionsimilaritymetric": + case "collectionSimilarityMetric": target.getConfiguration().setCollectionSimilarityMetric(property(camelContext, java.lang.String.class, value)); return true; + case "indexname": + case "indexName": target.getConfiguration().setIndexName(property(camelContext, java.lang.String.class, value)); return true; case "lazystartproducer": case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true; case "token": target.getConfiguration().setToken(property(camelContext, java.lang.String.class, value)); return true; @@ -33,6 +42,15 @@ public class PineconeVectorDbEndpointConfigurer extends PropertyConfigurerSuppor @Override public Class<?> getOptionType(String name, boolean ignoreCase) { switch (ignoreCase ? name.toLowerCase() : name) { + case "cloud": return java.lang.String.class; + case "cloudregion": + case "cloudRegion": return java.lang.String.class; + case "collectiondimension": + case "collectionDimension": return java.lang.Integer.class; + case "collectionsimilaritymetric": + case "collectionSimilarityMetric": return java.lang.String.class; + case "indexname": + case "indexName": return java.lang.String.class; case "lazystartproducer": case "lazyStartProducer": return boolean.class; case "token": return java.lang.String.class; @@ -44,6 +62,15 @@ public class PineconeVectorDbEndpointConfigurer extends PropertyConfigurerSuppor public Object getOptionValue(Object obj, String name, boolean ignoreCase) { PineconeVectorDbEndpoint target = (PineconeVectorDbEndpoint) obj; switch (ignoreCase ? name.toLowerCase() : name) { + case "cloud": return target.getConfiguration().getCloud(); + case "cloudregion": + case "cloudRegion": return target.getConfiguration().getCloudRegion(); + case "collectiondimension": + case "collectionDimension": return target.getConfiguration().getCollectionDimension(); + case "collectionsimilaritymetric": + case "collectionSimilarityMetric": return target.getConfiguration().getCollectionSimilarityMetric(); + case "indexname": + case "indexName": return target.getConfiguration().getIndexName(); case "lazystartproducer": case "lazyStartProducer": return target.isLazyStartProducer(); case "token": return target.getConfiguration().getToken(); diff --git a/components/camel-ai/camel-pinecone/src/generated/java/org/apache/camel/component/pinecone/PineconeVectorDbEndpointUriFactory.java b/components/camel-ai/camel-pinecone/src/generated/java/org/apache/camel/component/pinecone/PineconeVectorDbEndpointUriFactory.java index c0a692cfb59..ce8e48b99d6 100644 --- a/components/camel-ai/camel-pinecone/src/generated/java/org/apache/camel/component/pinecone/PineconeVectorDbEndpointUriFactory.java +++ b/components/camel-ai/camel-pinecone/src/generated/java/org/apache/camel/component/pinecone/PineconeVectorDbEndpointUriFactory.java @@ -23,8 +23,13 @@ public class PineconeVectorDbEndpointUriFactory extends org.apache.camel.support private static final Set<String> SECRET_PROPERTY_NAMES; private static final Set<String> MULTI_VALUE_PREFIXES; static { - Set<String> props = new HashSet<>(3); + Set<String> props = new HashSet<>(8); + props.add("cloud"); + props.add("cloudRegion"); props.add("collection"); + props.add("collectionDimension"); + props.add("collectionSimilarityMetric"); + props.add("indexName"); props.add("lazyStartProducer"); props.add("token"); PROPERTY_NAMES = Collections.unmodifiableSet(props); diff --git a/components/camel-ai/camel-pinecone/src/generated/resources/META-INF/org/apache/camel/component/pinecone/pinecone.json b/components/camel-ai/camel-pinecone/src/generated/resources/META-INF/org/apache/camel/component/pinecone/pinecone.json index 289d0f4b144..3419caa1b63 100644 --- a/components/camel-ai/camel-pinecone/src/generated/resources/META-INF/org/apache/camel/component/pinecone/pinecone.json +++ b/components/camel-ai/camel-pinecone/src/generated/resources/META-INF/org/apache/camel/component/pinecone/pinecone.json @@ -24,10 +24,15 @@ "remote": true }, "componentProperties": { - "configuration": { "index": 0, "kind": "property", "displayName": "Configuration", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "deprecated": false, "autowired": false, "secret": false, "description": "The configuration;" }, - "lazyStartProducer": { "index": 1, "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 fail [...] - "token": { "index": 2, "kind": "property", "displayName": "Token", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "configurationField": "configuration", "description": "Sets the API key to use for authentication" }, - "autowiredEnabled": { "index": 3, "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 t [...] + "cloud": { "index": 0, "kind": "property", "displayName": "Cloud", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "configurationField": "configuration", "description": "Sets the cloud type to use (aws\/gcp\/azure)" }, + "cloudRegion": { "index": 1, "kind": "property", "displayName": "Cloud Region", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "configurationField": "configuration", "description": "Sets the cloud region" }, + "collectionDimension": { "index": 2, "kind": "property", "displayName": "Collection Dimension", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "configurationField": "configuration", "description": "Sets the Collection Dimension to use (1-1536)" }, + "collectionSimilarityMetric": { "index": 3, "kind": "property", "displayName": "Collection Similarity Metric", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "configurationField": "configuration", "description": "Sets the Collection Similarity Metric to use (cosine\/euclidea [...] + "configuration": { "index": 4, "kind": "property", "displayName": "Configuration", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "deprecated": false, "autowired": false, "secret": false, "description": "The configuration;" }, + "indexName": { "index": 5, "kind": "property", "displayName": "Index Name", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "configurationField": "configuration", "description": "Sets the index name to use" }, + "lazyStartProducer": { "index": 6, "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 fail [...] + "token": { "index": 7, "kind": "property", "displayName": "Token", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "configurationField": "configuration", "description": "Sets the API key to use for authentication" }, + "autowiredEnabled": { "index": 8, "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 t [...] }, "headers": { "CamelPineconeAction": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "enum": [ "CREATE_COLLECTION", "CREATE_INDEX", "UPSERT", "INSERT", "SEARCH", "DELETE", "UPDATE", "QUERY", "QUERY_BY_ID" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The action to be performed.", "constantName": "org.apache.camel.component.pinecone.PineconeVectorDb$Headers#ACTION" }, @@ -46,7 +51,12 @@ }, "properties": { "collection": { "index": 0, "kind": "path", "displayName": "Collection", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The collection Name" }, - "token": { "index": 1, "kind": "parameter", "displayName": "Token", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "configurationField": "configuration", "description": "Sets the API key to use for authentication" }, - "lazyStartProducer": { "index": 2, "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 produc [...] + "cloud": { "index": 1, "kind": "parameter", "displayName": "Cloud", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "configurationField": "configuration", "description": "Sets the cloud type to use (aws\/gcp\/azure)" }, + "cloudRegion": { "index": 2, "kind": "parameter", "displayName": "Cloud Region", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "configurationField": "configuration", "description": "Sets the cloud region" }, + "collectionDimension": { "index": 3, "kind": "parameter", "displayName": "Collection Dimension", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "configurationField": "configuration", "description": "Sets the Collection Dimension to use (1-1536)" }, + "collectionSimilarityMetric": { "index": 4, "kind": "parameter", "displayName": "Collection Similarity Metric", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "configurationField": "configuration", "description": "Sets the Collection Similarity Metric to use (cosine\/euclide [...] + "indexName": { "index": 5, "kind": "parameter", "displayName": "Index Name", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "configurationField": "configuration", "description": "Sets the index name to use" }, + "token": { "index": 6, "kind": "parameter", "displayName": "Token", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.pinecone.PineconeVectorDbConfiguration", "configurationField": "configuration", "description": "Sets the API key to use for authentication" }, + "lazyStartProducer": { "index": 7, "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 produc [...] } } diff --git a/components/camel-ai/camel-pinecone/src/main/java/org/apache/camel/component/pinecone/PineconeVectorDbConfiguration.java b/components/camel-ai/camel-pinecone/src/main/java/org/apache/camel/component/pinecone/PineconeVectorDbConfiguration.java index b95e6fd9604..df06a7076ab 100644 --- a/components/camel-ai/camel-pinecone/src/main/java/org/apache/camel/component/pinecone/PineconeVectorDbConfiguration.java +++ b/components/camel-ai/camel-pinecone/src/main/java/org/apache/camel/component/pinecone/PineconeVectorDbConfiguration.java @@ -34,6 +34,76 @@ public class PineconeVectorDbConfiguration implements Cloneable { @Metadata(autowired = true) private Pinecone client; + @UriParam(label = "producer") + private String indexName; + + @UriParam(label = "producer") + private String collectionSimilarityMetric; + + @UriParam(label = "producer") + private Integer collectionDimension; + + @UriParam(label = "producer") + private String cloud; + + @UriParam(label = "producer") + private String cloudRegion; + + public String getIndexName() { + return indexName; + } + + /** + * Sets the index name to use + */ + public void setIndexName(String indexName) { + this.indexName = indexName; + } + + public String getCollectionSimilarityMetric() { + return collectionSimilarityMetric; + } + + /** + * Sets the Collection Similarity Metric to use (cosine/euclidean/dotproduct) + */ + public void setCollectionSimilarityMetric(String collectionSimilarityMetric) { + this.collectionSimilarityMetric = collectionSimilarityMetric; + } + + public Integer getCollectionDimension() { + return collectionDimension; + } + + /** + * Sets the Collection Dimension to use (1-1536) + */ + public void setCollectionDimension(Integer collectionDimension) { + this.collectionDimension = collectionDimension; + } + + public String getCloud() { + return cloud; + } + + /** + * Sets the cloud type to use (aws/gcp/azure) + */ + public void setCloud(String cloud) { + this.cloud = cloud; + } + + public String getCloudRegion() { + return cloudRegion; + } + + /** + * Sets the cloud region + */ + public void setCloudRegion(String cloudRegion) { + this.cloudRegion = cloudRegion; + } + public String getToken() { return token; } diff --git a/components/camel-ai/camel-pinecone/src/main/java/org/apache/camel/component/pinecone/PineconeVectorDbProducer.java b/components/camel-ai/camel-pinecone/src/main/java/org/apache/camel/component/pinecone/PineconeVectorDbProducer.java index 351c79ce528..5293b225dad 100644 --- a/components/camel-ai/camel-pinecone/src/main/java/org/apache/camel/component/pinecone/PineconeVectorDbProducer.java +++ b/components/camel-ai/camel-pinecone/src/main/java/org/apache/camel/component/pinecone/PineconeVectorDbProducer.java @@ -107,8 +107,13 @@ public class PineconeVectorDbProducer extends DefaultProducer { private void createCollection(Exchange exchange) throws Exception { final Message in = exchange.getMessage(); + + String indexName = getEndpoint().getConfiguration().getIndexName(); + String collectionName = in.getHeader(PineconeVectorDb.Headers.COLLECTION_NAME, String.class); - String indexName = in.getHeader(PineconeVectorDb.Headers.INDEX_NAME, String.class); + if (in.getHeader(PineconeVectorDb.Headers.INDEX_NAME, String.class) != null) { + indexName = in.getHeader(PineconeVectorDb.Headers.INDEX_NAME, String.class); + } CollectionModel result = this.client.createCollection(collectionName, indexName); @@ -118,12 +123,31 @@ public class PineconeVectorDbProducer extends DefaultProducer { private void createServerlessIndex(Exchange exchange) throws Exception { final Message in = exchange.getMessage(); - String indexName = in.getHeader(PineconeVectorDb.Headers.INDEX_NAME, String.class); - String collectionSimilarityMetricName - = in.getHeader(PineconeVectorDb.Headers.COLLECTION_SIMILARITY_METRIC, String.class); - int collectionDimension = in.getHeader(PineconeVectorDb.Headers.COLLECTION_DIMENSION, Integer.class); - String collectionCloudName = in.getHeader(PineconeVectorDb.Headers.COLLECTION_CLOUD, String.class); - String collectionCloudRegionName = in.getHeader(PineconeVectorDb.Headers.COLLECTION_CLOUD_REGION, String.class); + + String indexName = getEndpoint().getConfiguration().getIndexName(); + String collectionSimilarityMetricName = getEndpoint().getConfiguration().getCollectionSimilarityMetric(); + int collectionDimension = getEndpoint().getConfiguration().getCollectionDimension().intValue(); + String collectionCloudName = getEndpoint().getConfiguration().getCloud(); + String collectionCloudRegionName = getEndpoint().getConfiguration().getCloudRegion(); + + if (in.getHeader(PineconeVectorDb.Headers.INDEX_NAME, String.class) != null) { + indexName = in.getHeader(PineconeVectorDb.Headers.INDEX_NAME, String.class); + } + + if (in.getHeader(PineconeVectorDb.Headers.COLLECTION_SIMILARITY_METRIC, String.class) != null) { + collectionSimilarityMetricName = in.getHeader(PineconeVectorDb.Headers.COLLECTION_SIMILARITY_METRIC, String.class); + } + + if (in.getHeader(PineconeVectorDb.Headers.COLLECTION_DIMENSION, Integer.class) != null) { + collectionDimension = in.getHeader(PineconeVectorDb.Headers.COLLECTION_DIMENSION, Integer.class); + } + if (in.getHeader(PineconeVectorDb.Headers.COLLECTION_CLOUD, String.class) != null) { + collectionCloudName = in.getHeader(PineconeVectorDb.Headers.COLLECTION_CLOUD, String.class); + } + + if (in.getHeader(PineconeVectorDb.Headers.COLLECTION_CLOUD_REGION, String.class) != null) { + collectionCloudRegionName = in.getHeader(PineconeVectorDb.Headers.COLLECTION_CLOUD_REGION, String.class); + } IndexModel result = this.client.createServerlessIndex(indexName, collectionSimilarityMetricName, collectionDimension, collectionCloudName, collectionCloudRegionName, DeletionProtection.DISABLED); @@ -134,10 +158,22 @@ public class PineconeVectorDbProducer extends DefaultProducer { private void createPodIndex(Exchange exchange) throws Exception { final Message in = exchange.getMessage(); - String indexName = in.getHeader(PineconeVectorDb.Headers.INDEX_NAME, String.class); - String collectionSimilarityMetricName - = in.getHeader(PineconeVectorDb.Headers.COLLECTION_SIMILARITY_METRIC, String.class); - int collectionDimension = in.getHeader(PineconeVectorDb.Headers.COLLECTION_DIMENSION, Integer.class); + String indexName = getEndpoint().getConfiguration().getIndexName(); + String collectionSimilarityMetricName = getEndpoint().getConfiguration().getCollectionSimilarityMetric(); + int collectionDimension = getEndpoint().getConfiguration().getCollectionDimension().intValue(); + + if (in.getHeader(PineconeVectorDb.Headers.INDEX_NAME, String.class) != null) { + indexName = in.getHeader(PineconeVectorDb.Headers.INDEX_NAME, String.class); + } + + if (in.getHeader(PineconeVectorDb.Headers.COLLECTION_SIMILARITY_METRIC, String.class) != null) { + collectionSimilarityMetricName = getEndpoint().getConfiguration().getCollectionSimilarityMetric(); + } + + if (in.getHeader(PineconeVectorDb.Headers.COLLECTION_DIMENSION, Integer.class) != null) { + collectionDimension = getEndpoint().getConfiguration().getCollectionDimension().intValue(); + } + String indexPodType = in.getHeader(PineconeVectorDb.Headers.INDEX_POD_TYPE, String.class); String indexPodEnv = in.getHeader(PineconeVectorDb.Headers.INDEX_POD_ENVIRONMENT, String.class); @@ -151,7 +187,10 @@ public class PineconeVectorDbProducer extends DefaultProducer { private void upsert(Exchange exchange) throws Exception { final Message in = exchange.getMessage(); List elements = in.getMandatoryBody(List.class); - String indexName = in.getHeader(PineconeVectorDb.Headers.INDEX_NAME, String.class); + String indexName = getEndpoint().getConfiguration().getIndexName(); + if (in.getHeader(PineconeVectorDb.Headers.INDEX_NAME, String.class) != null) { + indexName = in.getHeader(PineconeVectorDb.Headers.INDEX_NAME, String.class); + } String indexId = in.getHeader(PineconeVectorDb.Headers.INDEX_ID, String.class); Index index = this.client.getIndexConnection(indexName); @@ -164,7 +203,11 @@ public class PineconeVectorDbProducer extends DefaultProducer { private void update(Exchange exchange) throws Exception { final Message in = exchange.getMessage(); List elements = in.getMandatoryBody(List.class); - String indexName = in.getHeader(PineconeVectorDb.Headers.INDEX_NAME, String.class); + String indexName = getEndpoint().getConfiguration().getIndexName(); + + if (in.getHeader(PineconeVectorDb.Headers.INDEX_NAME, String.class) != null) { + indexName = in.getHeader(PineconeVectorDb.Headers.INDEX_NAME, String.class); + } String indexId = in.getHeader(PineconeVectorDb.Headers.INDEX_ID, String.class); Index index = this.client.getIndexConnection(indexName); @@ -176,7 +219,11 @@ public class PineconeVectorDbProducer extends DefaultProducer { private void deleteIndex(Exchange exchange) throws Exception { final Message in = exchange.getMessage(); - String indexName = in.getHeader(PineconeVectorDb.Headers.INDEX_NAME, String.class); + String indexName = getEndpoint().getConfiguration().getIndexName(); + + if (in.getHeader(PineconeVectorDb.Headers.INDEX_NAME, String.class) != null) { + indexName = in.getHeader(PineconeVectorDb.Headers.INDEX_NAME, String.class); + } this.client.deleteIndex(indexName); } @@ -189,7 +236,12 @@ public class PineconeVectorDbProducer extends DefaultProducer { private void query(Exchange exchange) throws Exception { final Message in = exchange.getMessage(); List elements = in.getMandatoryBody(List.class); - String indexName = in.getHeader(PineconeVectorDb.Headers.INDEX_NAME, String.class); + String indexName = getEndpoint().getConfiguration().getIndexName(); + + if (in.getHeader(PineconeVectorDb.Headers.INDEX_NAME, String.class) != null) { + indexName = in.getHeader(PineconeVectorDb.Headers.INDEX_NAME, String.class); + } + int topK = in.getHeader(PineconeVectorDb.Headers.QUERY_TOP_K, Integer.class); Index index = this.client.getIndexConnection(indexName); @@ -200,7 +252,14 @@ public class PineconeVectorDbProducer extends DefaultProducer { private void queryById(Exchange exchange) throws Exception { final Message in = exchange.getMessage(); - String indexName = in.getHeader(PineconeVectorDb.Headers.INDEX_NAME, String.class); + + // Check to see if indexName is stored in the header, if it is not, check the configuration + String indexName = getEndpoint().getConfiguration().getIndexName(); + + if (in.getHeader(PineconeVectorDb.Headers.INDEX_NAME, String.class) != null) { + indexName = in.getHeader(PineconeVectorDb.Headers.INDEX_NAME, String.class); + } + int topK = in.getHeader(PineconeVectorDb.Headers.QUERY_TOP_K, Integer.class); Index index = this.client.getIndexConnection(indexName); diff --git a/components/camel-ai/camel-pinecone/src/test/java/org/apache/camel/component/pinecone/PineconeComponentConfigurationTest.java b/components/camel-ai/camel-pinecone/src/test/java/org/apache/camel/component/pinecone/PineconeComponentConfigurationTest.java new file mode 100644 index 00000000000..7095f941b0d --- /dev/null +++ b/components/camel-ai/camel-pinecone/src/test/java/org/apache/camel/component/pinecone/PineconeComponentConfigurationTest.java @@ -0,0 +1,65 @@ +/* + * 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.pinecone; + +import java.io.IOException; +import java.util.Map; +import java.util.Properties; + +import org.apache.camel.test.junit5.CamelTestSupport; +import org.apache.camel.test.junit5.TestSupport; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class PineconeComponentConfigurationTest extends CamelTestSupport { + + public Properties loadPineconePropertiesFile() throws IOException { + final String fileName = "pinecone_index.properties"; + return TestSupport.loadExternalProperties(PineconeComponentConfigurationTest.class.getClassLoader(), fileName); + } + + @Test + void createEndpointWithMinimalConfiguration() throws Exception { + PineconeVectorDbComponent component = context.getComponent("pinecone", PineconeVectorDbComponent.class); + PineconeVectorDbEndpoint endpoint = (PineconeVectorDbEndpoint) component + .createEndpoint( + "pinecone://test-collection?indexName=test-serverless-index&collectionSimilarityMetric=cosine&collectionDimension=3&cloud=aws&cloudRegion=us-east-1"); + assertEquals("test-serverless-index", endpoint.getConfiguration().getIndexName()); + assertEquals("cosine", endpoint.getConfiguration().getCollectionSimilarityMetric()); + assertEquals(3, endpoint.getConfiguration().getCollectionDimension()); + assertEquals("aws", endpoint.getConfiguration().getCloud()); + assertEquals("us-east-1", endpoint.getConfiguration().getCloudRegion()); + } + + @Test + void createEndpointWithProperties() throws Exception { + Properties properties = loadPineconePropertiesFile(); + Map<String, Object> propsMap = (Map) properties; + + PineconeVectorDbComponent component = context.getComponent("pinecone", PineconeVectorDbComponent.class); + PineconeVectorDbEndpoint endpoint = (PineconeVectorDbEndpoint) component + .createEndpoint( + "pinecone://test-collection", "", propsMap); + assertEquals("test-serverless-index", endpoint.getConfiguration().getIndexName()); + assertEquals("cosine", endpoint.getConfiguration().getCollectionSimilarityMetric()); + assertEquals(3, endpoint.getConfiguration().getCollectionDimension()); + assertEquals("aws", endpoint.getConfiguration().getCloud()); + assertEquals("us-east-1", endpoint.getConfiguration().getCloudRegion()); + } + +} diff --git a/components/camel-ai/camel-pinecone/src/test/java/org/apache/camel/component/pinecone/it/PineconeComponentIT.java b/components/camel-ai/camel-pinecone/src/test/java/org/apache/camel/component/pinecone/it/PineconeComponentIT.java index 211f6fdb797..47de8aeb71e 100644 --- a/components/camel-ai/camel-pinecone/src/test/java/org/apache/camel/component/pinecone/it/PineconeComponentIT.java +++ b/components/camel-ai/camel-pinecone/src/test/java/org/apache/camel/component/pinecone/it/PineconeComponentIT.java @@ -93,7 +93,7 @@ public class PineconeComponentIT extends CamelTestSupport { } @Test - @Order(3) + @Order(4) public void queryByVector() { List<Float> elements = Arrays.asList(1.0f, 2.0f, 3.2f); @@ -112,7 +112,7 @@ public class PineconeComponentIT extends CamelTestSupport { } @Test - @Order(4) + @Order(5) public void queryById() { Exchange result = fluentTemplate.to("pinecone:test-collection?token={{pinecone.token}}") @@ -128,7 +128,7 @@ public class PineconeComponentIT extends CamelTestSupport { } @Test - @Order(5) + @Order(6) public void deleteIndex() { Exchange result = fluentTemplate.to("pinecone:test-collection?token={{pinecone.token}}") diff --git a/components/camel-ai/camel-pinecone/src/test/resources/pinecone_index.properties b/components/camel-ai/camel-pinecone/src/test/resources/pinecone_index.properties new file mode 100644 index 00000000000..8c563a7821d --- /dev/null +++ b/components/camel-ai/camel-pinecone/src/test/resources/pinecone_index.properties @@ -0,0 +1,21 @@ +## --------------------------------------------------------------------------- +## 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. +## --------------------------------------------------------------------------- +indexName=test-serverless-index +collectionSimilarityMetric=cosine +collectionDimension=3 +cloud=aws +cloudRegion=us-east-1 \ No newline at end of file diff --git a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/PineconeComponentBuilderFactory.java b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/PineconeComponentBuilderFactory.java index 7b8210dec54..1adfdd0dfb4 100644 --- a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/PineconeComponentBuilderFactory.java +++ b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/PineconeComponentBuilderFactory.java @@ -50,6 +50,67 @@ public interface PineconeComponentBuilderFactory { */ interface PineconeComponentBuilder extends ComponentBuilder<PineconeVectorDbComponent> { + /** + * Sets the cloud type to use (aws/gcp/azure). + * + * The option is a: <code>java.lang.String</code> type. + * + * Group: producer + * + * @param cloud the value to set + * @return the dsl builder + */ + default PineconeComponentBuilder cloud(java.lang.String cloud) { + doSetProperty("cloud", cloud); + return this; + } + + /** + * Sets the cloud region. + * + * The option is a: <code>java.lang.String</code> type. + * + * Group: producer + * + * @param cloudRegion the value to set + * @return the dsl builder + */ + default PineconeComponentBuilder cloudRegion(java.lang.String cloudRegion) { + doSetProperty("cloudRegion", cloudRegion); + return this; + } + + /** + * Sets the Collection Dimension to use (1-1536). + * + * The option is a: <code>java.lang.Integer</code> type. + * + * Group: producer + * + * @param collectionDimension the value to set + * @return the dsl builder + */ + default PineconeComponentBuilder collectionDimension(java.lang.Integer collectionDimension) { + doSetProperty("collectionDimension", collectionDimension); + return this; + } + + /** + * Sets the Collection Similarity Metric to use + * (cosine/euclidean/dotproduct). + * + * The option is a: <code>java.lang.String</code> type. + * + * Group: producer + * + * @param collectionSimilarityMetric the value to set + * @return the dsl builder + */ + default PineconeComponentBuilder collectionSimilarityMetric(java.lang.String collectionSimilarityMetric) { + doSetProperty("collectionSimilarityMetric", collectionSimilarityMetric); + return this; + } + /** * The configuration;. * @@ -66,6 +127,21 @@ public interface PineconeComponentBuilderFactory { return this; } + /** + * Sets the index name to use. + * + * The option is a: <code>java.lang.String</code> type. + * + * Group: producer + * + * @param indexName the value to set + * @return the dsl builder + */ + default PineconeComponentBuilder indexName(java.lang.String indexName) { + doSetProperty("indexName", indexName); + return this; + } + /** * Whether the producer should be started lazy (on the first message). @@ -148,7 +224,12 @@ public interface PineconeComponentBuilderFactory { String name, Object value) { switch (name) { + case "cloud": getOrCreateConfiguration((PineconeVectorDbComponent) component).setCloud((java.lang.String) value); return true; + case "cloudRegion": getOrCreateConfiguration((PineconeVectorDbComponent) component).setCloudRegion((java.lang.String) value); return true; + case "collectionDimension": getOrCreateConfiguration((PineconeVectorDbComponent) component).setCollectionDimension((java.lang.Integer) value); return true; + case "collectionSimilarityMetric": getOrCreateConfiguration((PineconeVectorDbComponent) component).setCollectionSimilarityMetric((java.lang.String) value); return true; case "configuration": ((PineconeVectorDbComponent) component).setConfiguration((org.apache.camel.component.pinecone.PineconeVectorDbConfiguration) value); return true; + case "indexName": getOrCreateConfiguration((PineconeVectorDbComponent) component).setIndexName((java.lang.String) value); return true; case "lazyStartProducer": ((PineconeVectorDbComponent) component).setLazyStartProducer((boolean) value); return true; case "token": getOrCreateConfiguration((PineconeVectorDbComponent) component).setToken((java.lang.String) value); return true; case "autowiredEnabled": ((PineconeVectorDbComponent) component).setAutowiredEnabled((boolean) value); return true; diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/PineconeVectorDbEndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/PineconeVectorDbEndpointBuilderFactory.java index 56bbfb4ea2f..3b92a950009 100644 --- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/PineconeVectorDbEndpointBuilderFactory.java +++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/PineconeVectorDbEndpointBuilderFactory.java @@ -44,6 +44,92 @@ public interface PineconeVectorDbEndpointBuilderFactory { return (AdvancedPineconeVectorDbEndpointBuilder) this; } + /** + * Sets the cloud type to use (aws/gcp/azure). + * + * The option is a: <code>java.lang.String</code> type. + * + * Group: producer + * + * @param cloud the value to set + * @return the dsl builder + */ + default PineconeVectorDbEndpointBuilder cloud(String cloud) { + doSetProperty("cloud", cloud); + return this; + } + /** + * Sets the cloud region. + * + * The option is a: <code>java.lang.String</code> type. + * + * Group: producer + * + * @param cloudRegion the value to set + * @return the dsl builder + */ + default PineconeVectorDbEndpointBuilder cloudRegion(String cloudRegion) { + doSetProperty("cloudRegion", cloudRegion); + return this; + } + /** + * Sets the Collection Dimension to use (1-1536). + * + * The option is a: <code>java.lang.Integer</code> type. + * + * Group: producer + * + * @param collectionDimension the value to set + * @return the dsl builder + */ + default PineconeVectorDbEndpointBuilder collectionDimension(Integer collectionDimension) { + doSetProperty("collectionDimension", collectionDimension); + return this; + } + /** + * Sets the Collection Dimension to use (1-1536). + * + * The option will be converted to a <code>java.lang.Integer</code> + * type. + * + * Group: producer + * + * @param collectionDimension the value to set + * @return the dsl builder + */ + default PineconeVectorDbEndpointBuilder collectionDimension(String collectionDimension) { + doSetProperty("collectionDimension", collectionDimension); + return this; + } + /** + * Sets the Collection Similarity Metric to use + * (cosine/euclidean/dotproduct). + * + * The option is a: <code>java.lang.String</code> type. + * + * Group: producer + * + * @param collectionSimilarityMetric the value to set + * @return the dsl builder + */ + default PineconeVectorDbEndpointBuilder collectionSimilarityMetric(String collectionSimilarityMetric) { + doSetProperty("collectionSimilarityMetric", collectionSimilarityMetric); + return this; + } + /** + * Sets the index name to use. + * + * The option is a: <code>java.lang.String</code> type. + * + * Group: producer + * + * @param indexName the value to set + * @return the dsl builder + */ + default PineconeVectorDbEndpointBuilder indexName(String indexName) { + doSetProperty("indexName", indexName); + return this; + } /** * Sets the API key to use for authentication. *