diff --git a/locales/en/plugin__odf-console.json b/locales/en/plugin__odf-console.json index c4ffb84c1..2e087c035 100644 --- a/locales/en/plugin__odf-console.json +++ b/locales/en/plugin__odf-console.json @@ -151,6 +151,7 @@ "404: Not Found": "404: Not Found", "8 {{sizeUnit}}": "8 {{sizeUnit}}", "A BackingStore represents a storage target to be used as the underlying storage layer in Multicloud Object Gateway buckets.": "A BackingStore represents a storage target to be used as the underlying storage layer in Multicloud Object Gateway buckets.", + "A dimension is the number of values in a vector. Larger dimensions require more storage.": "A dimension is the number of values in a vector. Larger dimensions require more storage.", "A dimension must be an integer between 1 and 4096": "A dimension must be an integer between 1 and 4096", "A failover will occur for all namespaces currently under this DRPC.": "A failover will occur for all namespaces currently under this DRPC.", "A list of all Multicloud Object Gateway resources that are currently in use. Those resources are used to store data according to the buckets' policies and can be a cloud-based resource or a bare metal resource.": "A list of all Multicloud Object Gateway resources that are currently in use. Those resources are used to store data according to the buckets' policies and can be a cloud-based resource or a bare metal resource.", @@ -180,7 +181,7 @@ "A unique name for your bucket.": "A unique name for your bucket.", "A unique name to identify and manage this protection.": "A unique name to identify and manage this protection.", "A unique name within this vector bucket.": "A unique name within this vector bucket.", - "A vector bucket stores vector indexes for semantic search and similar workloads. You can create one with an Object Bucket Claim or directly through the S3 Vectors API.": "A vector bucket stores vector indexes for semantic search and similar workloads. You can create one with an Object Bucket Claim or directly through the S3 Vectors API.", + "A vector bucket is a storage container that organizes and manages vector datasets (indexes), allowing users to store, retrieve and control access to data efficiently.": "A vector bucket is a storage container that organizes and manages vector datasets (indexes), allowing users to store, retrieve and control access to data efficiently.", "Abort incomplete multipart uploads after {{ days }} days.": "Abort incomplete multipart uploads after {{ days }} days.", "Above object tags and object size filters are not applicable for this rule action. Expired object delete markers will be removed from the bucket regardless of any filters you have configured.": "Above object tags and object size filters are not applicable for this rule action. Expired object delete markers will be removed from the bucket regardless of any filters you have configured.", "Above object tags and object size filters are not applicable for this rule action. Incomplete multipart uploads will be removed from the bucket regardless of any filters you have configured.": "Above object tags and object size filters are not applicable for this rule action. Incomplete multipart uploads will be removed from the bucket regardless of any filters you have configured.", @@ -276,7 +277,6 @@ "All required fields are not set": "All required fields are not set", "All resources are unhealthy": "All resources are unhealthy", "All selected nodes must have the network.rook.io/mon-ip annotation when using a dedicated storage network.": "All selected nodes must have the network.rook.io/mon-ip annotation when using a dedicated storage network.", - "All vectors in the index will be permanently removed. If you delete this index, you can create another index with the same name later.": "All vectors in the index will be permanently removed. If you delete this index, you can create another index with the same name later.", "All volumes & Kubernetes resources are synced": "All volumes & Kubernetes resources are synced", "All volumes are synced": "All volumes are synced", "Allocate quota": "Allocate quota", @@ -663,7 +663,6 @@ "Create a vector bucket to store and manage your vector indexes.": "Create a vector bucket to store and manage your vector indexes.", "Create a vector index to start storing AI-ready vectors in this bucket.": "Create a vector index to start storing AI-ready vectors in this bucket.", "Create and manage your buckets": "Create and manage your buckets", - "Create and manage your vector buckets": "Create and manage your vector buckets", "Create BackingStore": "Create BackingStore", "Create BackingStore ": "Create BackingStore ", "Create bucket": "Create bucket", @@ -674,7 +673,6 @@ "Create folder": "Create folder", "Create IAM user": "Create IAM user", "Create IBM Scale (CNSA)": "Create IBM Scale (CNSA)", - "Create index": "Create index", "Create lifecycle rule": "Create lifecycle rule", "Create local volume set": "Create local volume set", "Create LocalVolumeSet": "Create LocalVolumeSet", @@ -840,7 +838,6 @@ "Deleting": "Deleting", "Deleting a bucket cannot be undone.": "Deleting a bucket cannot be undone.", "Deleting a bucket cannot be undone. Bucket names are unique. If you delete a bucket, another S3 user can use the name.": "Deleting a bucket cannot be undone. Bucket names are unique. If you delete a bucket, another S3 user can use the name.", - "Deleting a vector index cannot be undone.": "Deleting a vector index cannot be undone.", "Deleting this lifecycle rule may prevent the removal of existing objects, potentially increasing storage costs.": "Deleting this lifecycle rule may prevent the removal of existing objects, potentially increasing storage costs.", "Deletion policy": "Deletion policy", "Denies access to the bucket if the request is not made over HTTPS": "Denies access to the bucket if the request is not made over HTTPS", @@ -956,7 +953,6 @@ "Edit Storage Pool": "Edit Storage Pool", "Edit storage quota": "Edit storage quota", "Edit to add resources": "Edit to add resources", - "Edit vector bucket policy": "Edit vector bucket policy", "Effective capacity": "Effective capacity", "Egress": "Egress", "Egress Per Provider": "Egress Per Provider", @@ -1031,6 +1027,7 @@ "Enter a prefix": "Enter a prefix", "Enter a unique name": "Enter a unique name", "Enter a valid rule name": "Enter a valid rule name", + "Enter a valid unix path": "Enter a valid unix path", "Enter an exposed header": "Enter an exposed header", "Enter at least one IBM Scale management endpoint to authenticate and configure the remote cluster (For high availability, define 2 or more endpoints). Use valid credentials to verify and establish a connection to the remote cluster.": "Enter at least one IBM Scale management endpoint to authenticate and configure the remote cluster (For high availability, define 2 or more endpoints). Use valid credentials to verify and establish a connection to the remote cluster.", "Enter client": "Enter client", @@ -1400,8 +1397,8 @@ "Maximum available:": "Maximum available:", "Maximum disks limit": "Maximum disks limit", "MCG endpoint": "MCG endpoint", - "Measures straight-line distance between vectors.": "Measures straight-line distance between vectors.", - "Measures the angle between vectors. Best for normalized vectors.": "Measures the angle between vectors. Best for normalized vectors.", + "Measures similarity between two vectors based only on direction.": "Measures similarity between two vectors based only on direction.", + "Measures straight-line distance between two vectors using both direction and magnitude.": "Measures straight-line distance between two vectors using both direction and magnitude.", "Memory": "Memory", "Memory required": "Memory required", "Message": "Message", @@ -2245,6 +2242,7 @@ "The Data Foundation operator is the primary operator of Data Foundation": "The Data Foundation operator is the primary operator of Data Foundation", "The data resiliency includes 2 services": "The data resiliency includes 2 services", "The data will be temporarily copied on a backing store in order to later access it much more quickly.": "The data will be temporarily copied on a backing store in order to later access it much more quickly.", + "The distance metric measures the distance between a query vector and stored vector.": "The distance metric measures the distance between a query vector and stored vector.", "The DR Policy validation failed": "The DR Policy validation failed", "The endpoint is not a valid IP address": "The endpoint is not a valid IP address", "The endpoint server name. Useful when the KMIP endpoint does not have a DNS entry.": "The endpoint server name. Useful when the KMIP endpoint does not have a DNS entry.", @@ -2286,6 +2284,7 @@ "Thick": "Thick", "Thin": "Thin", "This action cannot be undone": "This action cannot be undone", + "This action deletes the vector index within the bucket. This cannot be undone.": "This action deletes the vector index within the bucket. This cannot be undone.", "This action may expose the bucket's contents to the public and introduce potential risks. Are you sure you want to proceed?": "This action may expose the bucket's contents to the public and introduce potential risks. Are you sure you want to proceed?", "This action will overwrite the existing configuration, and any updates will immediately affect access permissions for users and applications. Review your changes carefully before proceeding.": "This action will overwrite the existing configuration, and any updates will immediately affect access permissions for users and applications. Review your changes carefully before proceeding.", "This action will remove all associated access permissions, and any users or applications relying on this policy may lose access. This change cannot be undone.": "This action will remove all associated access permissions, and any users or applications relying on this policy may lose access. This change cannot be undone.", @@ -2425,6 +2424,7 @@ "Use a predefined policy configuration?": "Use a predefined policy configuration?", "Use an existing StorageClass": "Use an existing StorageClass", "Use bucket policy to grant public or restricted access to the objects stored in the bucket.": "Use bucket policy to grant public or restricted access to the objects stored in the bucket.", + "Use bucket policy to grant public or restricted access to the vectors stored in the bucket.": "Use bucket policy to grant public or restricted access to the vectors stored in the bucket.", "Use Ceph RBD as the default StorageClass": "Use Ceph RBD as the default StorageClass", "Use CIDR notation. Eg: 192.168.200.0/24": "Use CIDR notation. Eg: 192.168.200.0/24", "Use cluster network": "Use cluster network", @@ -2442,7 +2442,6 @@ "Use the default OVN network for all internal communication.": "Use the default OVN network for all internal communication.", "Use the host network to allow external access, support custom networking, or connect additional clusters to the storage provider. If no networks are specified, the default network will be used.": "Use the host network to allow external access, support custom networking, or connect additional clusters to the storage provider. If no networks are specified, the default network will be used.", "Use the same S3 connection details as the first cluster": "Use the same S3 connection details as the first cluster", - "Use vector bucket policy to grant public or restricted access to the vector indexes stored in the bucket.": "Use vector bucket policy to grant public or restricted access to the vector indexes stored in the bucket.", "used": "used", "Used": "Used", "Used / Total": "Used / Total", @@ -2482,7 +2481,6 @@ "Vector": "Vector", "Vector bucket policy applied.": "Vector bucket policy applied.", "Vector buckets": "Vector buckets", - "Vector Buckets": "Vector Buckets", "Vector DB type": "Vector DB type", "Vector index": "Vector index", "Vector index name": "Vector index name", @@ -2497,6 +2495,7 @@ "Versions": "Versions", "View {{title}} metrics in query browser": "View {{title}} metrics in query browser", "View all": "View all", + "View and manage your vector buckets": "View and manage your vector buckets", "View buckets": "View buckets", "View details": "View details", "View did not complete successfully.": "View did not complete successfully.", @@ -2568,7 +2567,6 @@ "You can now delete the access key.": "You can now delete the access key.", "You cannot (connect or) attach additional cluster to the storage provider.": "You cannot (connect or) attach additional cluster to the storage provider.", "You do not have an active bucket policy.": "You do not have an active bucket policy.", - "You do not have an active vector bucket policy.": "You do not have an active vector bucket policy.", "You do not have any CORS rule.": "You do not have any CORS rule.", "You do not have any objects in this bucket": "You do not have any objects in this bucket", "You do not have any SSD/NVMe disks available. Data Foundation supports only SSD/NVMe disk type in internal mode.": "You do not have any SSD/NVMe disks available. Data Foundation supports only SSD/NVMe disk type in internal mode.", diff --git a/packages/odf/components/mcg/CreateObjectBucketClaim.tsx b/packages/odf/components/mcg/CreateObjectBucketClaim.tsx index e8142819d..6183884f1 100644 --- a/packages/odf/components/mcg/CreateObjectBucketClaim.tsx +++ b/packages/odf/components/mcg/CreateObjectBucketClaim.tsx @@ -345,6 +345,7 @@ export const CreateOBCForm: React.FC = (props) => { setS3VectorSubpath(value)} className="pf-v6-c-form-control" diff --git a/packages/odf/components/s3-browser/bucket-policy/BucketPolicy.tsx b/packages/odf/components/s3-browser/bucket-policy/BucketPolicy.tsx index 54f609b39..d9fa2fcf8 100644 --- a/packages/odf/components/s3-browser/bucket-policy/BucketPolicy.tsx +++ b/packages/odf/components/s3-browser/bucket-policy/BucketPolicy.tsx @@ -140,8 +140,6 @@ const BucketPolicyContent: React.FC = ({ editTooltip={t( 'Edit or delete the current bucket policy to customize access permissions or remove the existing configuration.' )} - editButtonLabel={t('Edit bucket policy')} - emptyStateTitle={t('You do not have an active bucket policy.')} schemaUri={BUCKET_POLICY_SCHEMA_URI} > {edit && } diff --git a/packages/odf/components/s3-common/bucket-policy/bucket-policy-sections.tsx b/packages/odf/components/s3-common/bucket-policy/bucket-policy-sections.tsx index 4784ac823..f89a77946 100644 --- a/packages/odf/components/s3-common/bucket-policy/bucket-policy-sections.tsx +++ b/packages/odf/components/s3-common/bucket-policy/bucket-policy-sections.tsx @@ -61,8 +61,6 @@ export type PolicyBodyProps = { setCode: React.Dispatch>; noPolicyExists: boolean; editTooltip: string; - editButtonLabel: string; - emptyStateTitle: string; schemaUri: string; children?: React.ReactNode; }; @@ -74,8 +72,6 @@ export const PolicyBody: React.FC = ({ setEdit, noPolicyExists, editTooltip, - editButtonLabel, - emptyStateTitle, schemaUri, children, }) => { @@ -115,7 +111,7 @@ export const PolicyBody: React.FC = ({ onClick={onEdit} className="pf-v6-u-my-sm s3-policy-edit--margin" > - {editButtonLabel}{' '} + {t('Edit bucket policy')} )} @@ -131,7 +127,7 @@ export const PolicyBody: React.FC = ({ setCode(value); !edit && onEdit(); }} - emptyStateTitle={emptyStateTitle} + emptyStateTitle={t('You do not have an active bucket policy.')} emptyStateBody={t( 'Drag a file here, upload files, or start from scratch.' )} diff --git a/packages/odf/components/s3-vectors/create-vector-bucket/CreateVectorBucket.tsx b/packages/odf/components/s3-vectors/create-vector-bucket/CreateVectorBucket.tsx index f7b0d857d..dc98087fa 100644 --- a/packages/odf/components/s3-vectors/create-vector-bucket/CreateVectorBucket.tsx +++ b/packages/odf/components/s3-vectors/create-vector-bucket/CreateVectorBucket.tsx @@ -12,7 +12,7 @@ const CreateVectorBucket: React.FC<{}> = () => { { setSubpathValue(value)} className="pf-v6-c-form-control" data-test-id="vector-bucket-subpath-s3" /> +
+ {t( + 'An optional path within the bucket used to separate vector storage.' + )} +
diff --git a/packages/odf/components/s3-vectors/create-vector-index/CreateVectorIndex.tsx b/packages/odf/components/s3-vectors/create-vector-index/CreateVectorIndex.tsx index 3205f036c..c0f33cb71 100644 --- a/packages/odf/components/s3-vectors/create-vector-index/CreateVectorIndex.tsx +++ b/packages/odf/components/s3-vectors/create-vector-index/CreateVectorIndex.tsx @@ -11,6 +11,7 @@ import { useYupValidationResolver, formSettings, useCustomTranslation, + FieldLevelHelp, } from '@odf/shared'; import PageHeading from '@odf/shared/heading/page-heading'; import { useForm } from 'react-hook-form'; @@ -30,6 +31,7 @@ import { HelperText, HelperTextItem, NumberInput, + PopoverPosition, Radio, } from '@patternfly/react-core'; import { useS3BucketFormValidation as useS3VectorIndexFormValidation } from '../../s3-common/hooks/useS3BucketFormValidation'; @@ -152,7 +154,7 @@ const CreateVectorIndexForm: React.FC = () => { return ( <> - + {t( 'Create a vector index to start storing AI-ready vectors in this bucket.' )} @@ -189,6 +191,13 @@ const CreateVectorIndexForm: React.FC = () => { label={t('Dimension')} className="pf-v6-u-mb-sm" isRequired + labelHelp={ + + {t( + 'A dimension is the number of values in a vector. Larger dimensions require more storage.' + )} + + } > { isRequired fieldId="distance-metric" className="pf-v6-u-mb-md" + labelHelp={ + + {t( + 'The distance metric measures the distance between a query vector and stored vector.' + )} + + } > { = ({ setSuccess={setSuccess} title={t('Bucket policy')} description={t( - 'Use vector bucket policy to grant public or restricted access to the vector indexes stored in the bucket.' + 'Use bucket policy to grant public or restricted access to the vectors stored in the bucket.' )} successAlertTitle={t('Vector bucket policy applied.')} successAlertBody={t( @@ -149,8 +149,6 @@ const VectorBucketPolicyContent: React.FC = ({ editTooltip={t( 'Edit or delete the current vector bucket policy to customize access permissions or remove the existing configuration.' )} - editButtonLabel={t('Edit vector bucket policy')} - emptyStateTitle={t('You do not have an active vector bucket policy.')} schemaUri={VECTOR_BUCKET_POLICY_SCHEMA_URI} /> {edit && ( diff --git a/packages/odf/components/s3-vectors/vector-buckets-list-page/VectorBucketsListPage.tsx b/packages/odf/components/s3-vectors/vector-buckets-list-page/VectorBucketsListPage.tsx index 46fba6d7a..f2802c0c8 100644 --- a/packages/odf/components/s3-vectors/vector-buckets-list-page/VectorBucketsListPage.tsx +++ b/packages/odf/components/s3-vectors/vector-buckets-list-page/VectorBucketsListPage.tsx @@ -100,8 +100,8 @@ const VectorBucketsListPageContent: React.FC = () => { return ( <> diff --git a/packages/odf/components/s3-vectors/vector-index-details/VectorIndexDetailsPage.tsx b/packages/odf/components/s3-vectors/vector-index-details/VectorIndexDetailsPage.tsx index f5528436a..836e6b6c5 100644 --- a/packages/odf/components/s3-vectors/vector-index-details/VectorIndexDetailsPage.tsx +++ b/packages/odf/components/s3-vectors/vector-index-details/VectorIndexDetailsPage.tsx @@ -6,6 +6,7 @@ import { } from '@odf/core/constants/s3-vectors'; import { S3ProviderType } from '@odf/core/types'; import { DASH, PageHeading } from '@odf/shared'; +import { Timestamp } from '@odf/shared/details-page/timestamp'; import { SectionHeading } from '@odf/shared/heading/page-heading'; import { useCustomTranslation } from '@odf/shared/useCustomTranslationHook'; import { useParams } from 'react-router-dom-v5-compat'; @@ -50,7 +51,7 @@ const VectorIndexDetails: React.FC<{}> = () => { {t('Created on')} - {createdOn} + diff --git a/packages/odf/components/s3-vectors/vector-indexes-list-page/VectorIndexesListPage.tsx b/packages/odf/components/s3-vectors/vector-indexes-list-page/VectorIndexesListPage.tsx index 83ce210ff..04e8a55c7 100644 --- a/packages/odf/components/s3-vectors/vector-indexes-list-page/VectorIndexesListPage.tsx +++ b/packages/odf/components/s3-vectors/vector-indexes-list-page/VectorIndexesListPage.tsx @@ -75,7 +75,7 @@ const TableActions: React.FC = ({ navigate(getVectorIndexCreateRoute(vectorBucketName, providerType)) } > - {t('Create index')} + {t('Create vector index')} diff --git a/packages/odf/modals/s3-vectors/delete-vector-index/DeleteVectorIndexModal.tsx b/packages/odf/modals/s3-vectors/delete-vector-index/DeleteVectorIndexModal.tsx index 74fced053..8659a8487 100644 --- a/packages/odf/modals/s3-vectors/delete-vector-index/DeleteVectorIndexModal.tsx +++ b/packages/odf/modals/s3-vectors/delete-vector-index/DeleteVectorIndexModal.tsx @@ -102,16 +102,12 @@ const DeleteVectorIndexModal: React.FC< ]} > - - {t('Deleting a vector index cannot be undone.')} - {t( - 'All vectors in the index will be permanently removed. If you delete this index, you can create another index with the same name later.' + 'This action deletes the vector index within the bucket. This cannot be undone.' )} -