@orion-js/vectors 4.1.5 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +4 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +4 -8
- package/dist/index.js.map +1 -1
- package/package.json +11 -12
- package/LICENSE +0 -21
package/dist/index.cjs
CHANGED
|
@@ -80,14 +80,10 @@ var S3VectorStore = class {
|
|
|
80
80
|
})
|
|
81
81
|
);
|
|
82
82
|
const vectors = ((_a = result.vectors) == null ? void 0 : _a.map(
|
|
83
|
-
(vector) => {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
vector: (_a2 = vector.data) == null ? void 0 : _a2.float32,
|
|
88
|
-
metadata: vector.metadata
|
|
89
|
-
};
|
|
90
|
-
}
|
|
83
|
+
(vector) => ({
|
|
84
|
+
key: vector.key,
|
|
85
|
+
metadata: vector.metadata
|
|
86
|
+
})
|
|
91
87
|
)) ?? [];
|
|
92
88
|
return {
|
|
93
89
|
vectors
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/providers/S3VectorProvider.ts","../src/providers/S3VectorStore.ts"],"sourcesContent":["/**\n * @orion-js/vectors\n *\n * A package for working with vector operations.\n * Provides interfaces and implementations for vector storage providers.\n */\n\n// Core types and interfaces\nexport type {\n DistanceMetric,\n VectorDataType,\n VectorIndexConfig,\n VectorStoreConfig,\n VectorData,\n VectorQueryParams,\n VectorQueryResult,\n} from './types'\n\n// VectorStore interface and related types\nexport type {VectorStore} from './VectorStore'\n\n// Provider interfaces\nexport type {\n VectorStorageProvider,\n VectorStorageProviderConfig,\n} from './VectorStorageProvider'\n\n// AWS S3 provider\nexport type {S3VectorProviderConfig} from './providers/S3VectorProvider'\nexport {S3VectorProvider} from './providers/S3VectorProvider'\n","import type {VectorStorageProvider, VectorStorageProviderConfig} from '../VectorStorageProvider'\nimport type {VectorStoreConfig, VectorIndexConfig} from '../types'\nimport {\n CreateVectorBucketCommand,\n GetVectorBucketCommand,\n NotFoundException,\n S3VectorsClient,\n S3VectorsClientConfig,\n} from '@aws-sdk/client-s3vectors'\nimport {S3VectorStore} from './S3VectorStore'\n\n/**\n * Configuration for AWS S3 Vector provider\n */\nexport interface S3VectorProviderConfig extends VectorStorageProviderConfig {\n s3Options: S3VectorsClientConfig\n}\n\n/**\n * AWS S3 Vector storage provider implementation\n *\n * This provider implements vector storage using AWS S3's native vector capabilities.\n * It manages vector buckets and indexes according to the S3 Vector API.\n */\nexport class S3VectorProvider implements VectorStorageProvider {\n private config: S3VectorProviderConfig\n private client: S3VectorsClient\n\n constructor(config: S3VectorProviderConfig) {\n this.config = config\n this.validateConfig()\n this.client = new S3VectorsClient(this.config.s3Options)\n }\n\n /**\n * Validate the provider configuration\n */\n private validateConfig(): void {\n if (!this.config.s3Options) {\n throw new Error('S3Options are required for S3VectorProvider')\n }\n }\n\n createVectorStore(config: VectorStoreConfig) {\n this.validateVectorStoreConfig(config)\n\n this.setupVectorStore(config)\n\n // Return a VectorStore instance\n return new S3VectorStore(this.client, config)\n }\n\n private async setupVectorStore(config: VectorStoreConfig): Promise<void> {\n // Ensure the vector bucket exists\n await this.ensureVectorBucketExists(config)\n }\n\n private async storeExists(storeName: string): Promise<boolean> {\n try {\n await this.client.send(\n new GetVectorBucketCommand({\n vectorBucketName: storeName,\n }),\n )\n\n return true\n } catch (error) {\n if (this.isNotFoundError(error)) {\n return false\n }\n throw error\n }\n }\n\n /**\n * Ensure a vector bucket exists, create if it doesn't\n */\n private async ensureVectorBucketExists(config: VectorStoreConfig): Promise<void> {\n const exists = await this.storeExists(config.storeName)\n if (!exists) {\n await this.createVectorBucket(config)\n }\n }\n\n /**\n * Create a new vector bucket\n */\n private async createVectorBucket(config: VectorStoreConfig): Promise<void> {\n await this.client.send(\n new CreateVectorBucketCommand({\n vectorBucketName: config.storeName,\n encryptionConfiguration: config.encryptionConfiguration,\n }),\n )\n }\n\n /**\n * Validate vector store configuration\n */\n private validateVectorStoreConfig(config: VectorStoreConfig): void {\n if (!config.storeName || config.storeName.length < 3 || config.storeName.length > 63) {\n throw new Error('Store name must be between 3 and 63 characters')\n }\n\n if (!/^[a-z0-9-]+$/.test(config.storeName)) {\n throw new Error('Store name must contain only lowercase letters, numbers, and hyphens')\n }\n\n if (!config.index) {\n throw new Error('Index must be specified')\n }\n\n this.validateIndexConfig(config.index)\n }\n\n /**\n * Validate vector index configuration\n */\n private validateIndexConfig(indexConfig: VectorIndexConfig): void {\n if (indexConfig.dimension < 1 || indexConfig.dimension > 4096) {\n throw new Error('Vector dimension must be between 1 and 4096')\n }\n\n if (!['cosine', 'euclidean'].includes(indexConfig.distanceMetric)) {\n throw new Error('Distance metric must be either \"cosine\" or \"euclidean\"')\n }\n }\n\n /**\n * Check if an error indicates a resource was not found\n */\n private isNotFoundError(error: unknown): boolean {\n if (error instanceof NotFoundException) {\n return true\n }\n return false\n }\n}\n","import {\n CreateIndexCommand,\n DeleteIndexCommand,\n DeleteVectorsCommand,\n ListVectorsCommand,\n ListVectorsCommandInput,\n NotFoundException,\n PutVectorsCommand,\n QueryVectorsCommand,\n QueryVectorsCommandInput,\n S3VectorsClient,\n} from '@aws-sdk/client-s3vectors'\nimport {VectorData, VectorIndexConfig, VectorStoreConfig} from '../types'\nimport {VectorStore} from '../VectorStore'\n\n/**\n * S3 Vector Store implementation that provides CRUD operations for a specific vector store\n */\nexport class S3VectorStore<TVectorData extends VectorData = VectorData>\n implements VectorStore<TVectorData>\n{\n private config: VectorStoreConfig\n private client: S3VectorsClient\n\n constructor(client: S3VectorsClient, config: VectorStoreConfig) {\n this.client = client\n this.config = config\n }\n\n private async wrapOperationWithIndexCreation<TOperation extends () => Promise<any>>(\n namespace: string,\n operation: TOperation,\n ): Promise<Awaited<ReturnType<TOperation>>> {\n try {\n return await operation()\n } catch (error) {\n if (error instanceof NotFoundException) {\n if (error.message === 'The specified index could not be found') {\n await this.createVectorIndex(namespace, this.config, this.config.index)\n return this.wrapOperationWithIndexCreation(namespace, operation)\n }\n }\n throw error\n }\n }\n\n async insertVectors(namespace: string, vectors: TVectorData[]) {\n return await this.wrapOperationWithIndexCreation(namespace, async () => {\n const result = await this.client.send(\n new PutVectorsCommand({\n vectorBucketName: this.config.storeName,\n indexName: namespace,\n vectors: vectors.map(vector => ({\n key: vector.key,\n data: {\n float32: vector.vector,\n },\n metadata: vector.metadata,\n })),\n }),\n )\n\n return result\n })\n }\n\n async queryVectors(\n namespace: string,\n options?: Omit<QueryVectorsCommandInput, 'vectorBucketName' | 'indexName' | 'queryVector'> & {\n queryVector: number[]\n },\n ) {\n return await this.wrapOperationWithIndexCreation(namespace, async () => {\n const result = await this.client.send(\n new QueryVectorsCommand({\n ...options,\n vectorBucketName: this.config.storeName,\n indexName: namespace,\n queryVector: {\n float32: options.queryVector,\n },\n }),\n )\n\n const vectors: TVectorData[] =\n result.vectors?.map(\n vector =>\n ({\n key: vector.key,\n vector: vector.data?.float32,\n metadata: vector.metadata,\n }) as TVectorData,\n ) ?? []\n\n return {\n vectors,\n }\n })\n }\n\n async deleteVectors(namespace: string, keys: string[]) {\n return await this.client.send(\n new DeleteVectorsCommand({\n vectorBucketName: this.config.storeName,\n indexName: namespace,\n keys,\n }),\n )\n }\n\n async listVectors(\n namespace: string,\n options?: Omit<ListVectorsCommandInput, 'vectorBucketName' | 'indexName'>,\n ) {\n return await this.wrapOperationWithIndexCreation(namespace, async () => {\n const result = await this.client.send(\n new ListVectorsCommand({\n vectorBucketName: this.config.storeName,\n indexName: namespace,\n ...options,\n }),\n )\n\n return (result.vectors?.map(vector => ({\n key: vector.key,\n vector: vector.data?.float32,\n metadata: vector.metadata as TVectorData['metadata'],\n })) ?? []) as Partial<TVectorData>[]\n })\n }\n\n async listVectorKeys(\n namespace: string,\n options?: Omit<\n ListVectorsCommandInput,\n 'vectorBucketName' | 'indexName' | 'returnData' | 'returnMetadata'\n >,\n ) {\n const result = await this.listVectors(namespace, {\n ...options,\n returnData: false,\n returnMetadata: false,\n })\n return result.map(vector => vector.key)\n }\n\n /**\n * Create a new vector index\n */\n private async createVectorIndex(\n namespace: string,\n config: VectorStoreConfig,\n indexConfig: VectorIndexConfig,\n ): Promise<void> {\n await this.client.send(\n new CreateIndexCommand({\n indexName: namespace,\n dataType: 'float32',\n dimension: indexConfig.dimension,\n distanceMetric: indexConfig.distanceMetric,\n vectorBucketName: config.storeName,\n metadataConfiguration: indexConfig.metadataConfiguration,\n }),\n )\n }\n\n async deleteNamespace(namespace: string) {\n return await this.client.send(\n new DeleteIndexCommand({\n vectorBucketName: this.config.storeName,\n indexName: namespace,\n }),\n )\n }\n}\n"],"mappings":"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","names":["import_client_s3vectors","_a"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/providers/S3VectorProvider.ts","../src/providers/S3VectorStore.ts"],"sourcesContent":["/**\n * @orion-js/vectors\n *\n * A package for working with vector operations.\n * Provides interfaces and implementations for vector storage providers.\n */\n\n// Core types and interfaces\nexport type {\n DistanceMetric,\n VectorDataType,\n VectorIndexConfig,\n VectorStoreConfig,\n VectorData,\n VectorQueryParams,\n VectorQueryResult,\n} from './types'\n\n// VectorStore interface and related types\nexport type {VectorStore} from './VectorStore'\n\n// Provider interfaces\nexport type {\n VectorStorageProvider,\n VectorStorageProviderConfig,\n} from './VectorStorageProvider'\n\n// AWS S3 provider\nexport type {S3VectorProviderConfig} from './providers/S3VectorProvider'\nexport {S3VectorProvider} from './providers/S3VectorProvider'\n","import type {VectorStorageProvider, VectorStorageProviderConfig} from '../VectorStorageProvider'\nimport type {VectorStoreConfig, VectorIndexConfig} from '../types'\nimport {\n CreateVectorBucketCommand,\n GetVectorBucketCommand,\n NotFoundException,\n S3VectorsClient,\n S3VectorsClientConfig,\n} from '@aws-sdk/client-s3vectors'\nimport {S3VectorStore} from './S3VectorStore'\n\n/**\n * Configuration for AWS S3 Vector provider\n */\nexport interface S3VectorProviderConfig extends VectorStorageProviderConfig {\n s3Options: S3VectorsClientConfig\n}\n\n/**\n * AWS S3 Vector storage provider implementation\n *\n * This provider implements vector storage using AWS S3's native vector capabilities.\n * It manages vector buckets and indexes according to the S3 Vector API.\n */\nexport class S3VectorProvider implements VectorStorageProvider {\n private config: S3VectorProviderConfig\n private client: S3VectorsClient\n\n constructor(config: S3VectorProviderConfig) {\n this.config = config\n this.validateConfig()\n this.client = new S3VectorsClient(this.config.s3Options)\n }\n\n /**\n * Validate the provider configuration\n */\n private validateConfig(): void {\n if (!this.config.s3Options) {\n throw new Error('S3Options are required for S3VectorProvider')\n }\n }\n\n createVectorStore(config: VectorStoreConfig) {\n this.validateVectorStoreConfig(config)\n\n this.setupVectorStore(config)\n\n // Return a VectorStore instance\n return new S3VectorStore(this.client, config)\n }\n\n private async setupVectorStore(config: VectorStoreConfig): Promise<void> {\n // Ensure the vector bucket exists\n await this.ensureVectorBucketExists(config)\n }\n\n private async storeExists(storeName: string): Promise<boolean> {\n try {\n await this.client.send(\n new GetVectorBucketCommand({\n vectorBucketName: storeName,\n }),\n )\n\n return true\n } catch (error) {\n if (this.isNotFoundError(error)) {\n return false\n }\n throw error\n }\n }\n\n /**\n * Ensure a vector bucket exists, create if it doesn't\n */\n private async ensureVectorBucketExists(config: VectorStoreConfig): Promise<void> {\n const exists = await this.storeExists(config.storeName)\n if (!exists) {\n await this.createVectorBucket(config)\n }\n }\n\n /**\n * Create a new vector bucket\n */\n private async createVectorBucket(config: VectorStoreConfig): Promise<void> {\n await this.client.send(\n new CreateVectorBucketCommand({\n vectorBucketName: config.storeName,\n encryptionConfiguration: config.encryptionConfiguration,\n }),\n )\n }\n\n /**\n * Validate vector store configuration\n */\n private validateVectorStoreConfig(config: VectorStoreConfig): void {\n if (!config.storeName || config.storeName.length < 3 || config.storeName.length > 63) {\n throw new Error('Store name must be between 3 and 63 characters')\n }\n\n if (!/^[a-z0-9-]+$/.test(config.storeName)) {\n throw new Error('Store name must contain only lowercase letters, numbers, and hyphens')\n }\n\n if (!config.index) {\n throw new Error('Index must be specified')\n }\n\n this.validateIndexConfig(config.index)\n }\n\n /**\n * Validate vector index configuration\n */\n private validateIndexConfig(indexConfig: VectorIndexConfig): void {\n if (indexConfig.dimension < 1 || indexConfig.dimension > 4096) {\n throw new Error('Vector dimension must be between 1 and 4096')\n }\n\n if (!['cosine', 'euclidean'].includes(indexConfig.distanceMetric)) {\n throw new Error('Distance metric must be either \"cosine\" or \"euclidean\"')\n }\n }\n\n /**\n * Check if an error indicates a resource was not found\n */\n private isNotFoundError(error: unknown): boolean {\n if (error instanceof NotFoundException) {\n return true\n }\n return false\n }\n}\n","import {\n CreateIndexCommand,\n DeleteIndexCommand,\n DeleteVectorsCommand,\n ListVectorsCommand,\n ListVectorsCommandInput,\n NotFoundException,\n PutVectorsCommand,\n QueryVectorsCommand,\n QueryVectorsCommandInput,\n S3VectorsClient,\n} from '@aws-sdk/client-s3vectors'\nimport {VectorData, VectorIndexConfig, VectorStoreConfig} from '../types'\nimport {VectorStore} from '../VectorStore'\n\n/**\n * S3 Vector Store implementation that provides CRUD operations for a specific vector store\n */\nexport class S3VectorStore<TVectorData extends VectorData = VectorData>\n implements VectorStore<TVectorData>\n{\n private config: VectorStoreConfig\n private client: S3VectorsClient\n\n constructor(client: S3VectorsClient, config: VectorStoreConfig) {\n this.client = client\n this.config = config\n }\n\n private async wrapOperationWithIndexCreation<TOperation extends () => Promise<any>>(\n namespace: string,\n operation: TOperation,\n ): Promise<Awaited<ReturnType<TOperation>>> {\n try {\n return await operation()\n } catch (error) {\n if (error instanceof NotFoundException) {\n if (error.message === 'The specified index could not be found') {\n await this.createVectorIndex(namespace, this.config, this.config.index)\n return this.wrapOperationWithIndexCreation(namespace, operation)\n }\n }\n throw error\n }\n }\n\n async insertVectors(namespace: string, vectors: TVectorData[]) {\n return await this.wrapOperationWithIndexCreation(namespace, async () => {\n const result = await this.client.send(\n new PutVectorsCommand({\n vectorBucketName: this.config.storeName,\n indexName: namespace,\n vectors: vectors.map(vector => ({\n key: vector.key,\n data: {\n float32: vector.vector,\n },\n metadata: vector.metadata,\n })),\n }),\n )\n\n return result\n })\n }\n\n async queryVectors(\n namespace: string,\n options?: Omit<QueryVectorsCommandInput, 'vectorBucketName' | 'indexName' | 'queryVector'> & {\n queryVector: number[]\n },\n ) {\n return await this.wrapOperationWithIndexCreation(namespace, async () => {\n const result = await this.client.send(\n new QueryVectorsCommand({\n ...options,\n vectorBucketName: this.config.storeName,\n indexName: namespace,\n queryVector: {\n float32: options.queryVector,\n },\n }),\n )\n\n const vectors: TVectorData[] =\n result.vectors?.map(\n vector =>\n ({\n key: vector.key,\n metadata: vector.metadata,\n }) as TVectorData,\n ) ?? []\n\n return {\n vectors,\n }\n })\n }\n\n async deleteVectors(namespace: string, keys: string[]) {\n return await this.client.send(\n new DeleteVectorsCommand({\n vectorBucketName: this.config.storeName,\n indexName: namespace,\n keys,\n }),\n )\n }\n\n async listVectors(\n namespace: string,\n options?: Omit<ListVectorsCommandInput, 'vectorBucketName' | 'indexName'>,\n ) {\n return await this.wrapOperationWithIndexCreation(namespace, async () => {\n const result = await this.client.send(\n new ListVectorsCommand({\n vectorBucketName: this.config.storeName,\n indexName: namespace,\n ...options,\n }),\n )\n\n return (result.vectors?.map(vector => ({\n key: vector.key,\n vector: vector.data?.float32,\n metadata: vector.metadata as TVectorData['metadata'],\n })) ?? []) as Partial<TVectorData>[]\n })\n }\n\n async listVectorKeys(\n namespace: string,\n options?: Omit<\n ListVectorsCommandInput,\n 'vectorBucketName' | 'indexName' | 'returnData' | 'returnMetadata'\n >,\n ) {\n const result = await this.listVectors(namespace, {\n ...options,\n returnData: false,\n returnMetadata: false,\n })\n return result.map(vector => vector.key)\n }\n\n /**\n * Create a new vector index\n */\n private async createVectorIndex(\n namespace: string,\n config: VectorStoreConfig,\n indexConfig: VectorIndexConfig,\n ): Promise<void> {\n await this.client.send(\n new CreateIndexCommand({\n indexName: namespace,\n dataType: 'float32',\n dimension: indexConfig.dimension,\n distanceMetric: indexConfig.distanceMetric,\n vectorBucketName: config.storeName,\n metadataConfiguration: indexConfig.metadataConfiguration,\n }),\n )\n }\n\n async deleteNamespace(namespace: string) {\n return await this.client.send(\n new DeleteIndexCommand({\n vectorBucketName: this.config.storeName,\n indexName: namespace,\n }),\n )\n }\n}\n"],"mappings":"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","names":["import_client_s3vectors","_a"]}
|
package/dist/index.js
CHANGED
|
@@ -68,14 +68,10 @@ var S3VectorStore = class {
|
|
|
68
68
|
})
|
|
69
69
|
);
|
|
70
70
|
const vectors = ((_a = result.vectors) == null ? void 0 : _a.map(
|
|
71
|
-
(vector) => {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
vector: (_a2 = vector.data) == null ? void 0 : _a2.float32,
|
|
76
|
-
metadata: vector.metadata
|
|
77
|
-
};
|
|
78
|
-
}
|
|
71
|
+
(vector) => ({
|
|
72
|
+
key: vector.key,
|
|
73
|
+
metadata: vector.metadata
|
|
74
|
+
})
|
|
79
75
|
)) ?? [];
|
|
80
76
|
return {
|
|
81
77
|
vectors
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/providers/S3VectorProvider.ts","../src/providers/S3VectorStore.ts"],"sourcesContent":["import type {VectorStorageProvider, VectorStorageProviderConfig} from '../VectorStorageProvider'\nimport type {VectorStoreConfig, VectorIndexConfig} from '../types'\nimport {\n CreateVectorBucketCommand,\n GetVectorBucketCommand,\n NotFoundException,\n S3VectorsClient,\n S3VectorsClientConfig,\n} from '@aws-sdk/client-s3vectors'\nimport {S3VectorStore} from './S3VectorStore'\n\n/**\n * Configuration for AWS S3 Vector provider\n */\nexport interface S3VectorProviderConfig extends VectorStorageProviderConfig {\n s3Options: S3VectorsClientConfig\n}\n\n/**\n * AWS S3 Vector storage provider implementation\n *\n * This provider implements vector storage using AWS S3's native vector capabilities.\n * It manages vector buckets and indexes according to the S3 Vector API.\n */\nexport class S3VectorProvider implements VectorStorageProvider {\n private config: S3VectorProviderConfig\n private client: S3VectorsClient\n\n constructor(config: S3VectorProviderConfig) {\n this.config = config\n this.validateConfig()\n this.client = new S3VectorsClient(this.config.s3Options)\n }\n\n /**\n * Validate the provider configuration\n */\n private validateConfig(): void {\n if (!this.config.s3Options) {\n throw new Error('S3Options are required for S3VectorProvider')\n }\n }\n\n createVectorStore(config: VectorStoreConfig) {\n this.validateVectorStoreConfig(config)\n\n this.setupVectorStore(config)\n\n // Return a VectorStore instance\n return new S3VectorStore(this.client, config)\n }\n\n private async setupVectorStore(config: VectorStoreConfig): Promise<void> {\n // Ensure the vector bucket exists\n await this.ensureVectorBucketExists(config)\n }\n\n private async storeExists(storeName: string): Promise<boolean> {\n try {\n await this.client.send(\n new GetVectorBucketCommand({\n vectorBucketName: storeName,\n }),\n )\n\n return true\n } catch (error) {\n if (this.isNotFoundError(error)) {\n return false\n }\n throw error\n }\n }\n\n /**\n * Ensure a vector bucket exists, create if it doesn't\n */\n private async ensureVectorBucketExists(config: VectorStoreConfig): Promise<void> {\n const exists = await this.storeExists(config.storeName)\n if (!exists) {\n await this.createVectorBucket(config)\n }\n }\n\n /**\n * Create a new vector bucket\n */\n private async createVectorBucket(config: VectorStoreConfig): Promise<void> {\n await this.client.send(\n new CreateVectorBucketCommand({\n vectorBucketName: config.storeName,\n encryptionConfiguration: config.encryptionConfiguration,\n }),\n )\n }\n\n /**\n * Validate vector store configuration\n */\n private validateVectorStoreConfig(config: VectorStoreConfig): void {\n if (!config.storeName || config.storeName.length < 3 || config.storeName.length > 63) {\n throw new Error('Store name must be between 3 and 63 characters')\n }\n\n if (!/^[a-z0-9-]+$/.test(config.storeName)) {\n throw new Error('Store name must contain only lowercase letters, numbers, and hyphens')\n }\n\n if (!config.index) {\n throw new Error('Index must be specified')\n }\n\n this.validateIndexConfig(config.index)\n }\n\n /**\n * Validate vector index configuration\n */\n private validateIndexConfig(indexConfig: VectorIndexConfig): void {\n if (indexConfig.dimension < 1 || indexConfig.dimension > 4096) {\n throw new Error('Vector dimension must be between 1 and 4096')\n }\n\n if (!['cosine', 'euclidean'].includes(indexConfig.distanceMetric)) {\n throw new Error('Distance metric must be either \"cosine\" or \"euclidean\"')\n }\n }\n\n /**\n * Check if an error indicates a resource was not found\n */\n private isNotFoundError(error: unknown): boolean {\n if (error instanceof NotFoundException) {\n return true\n }\n return false\n }\n}\n","import {\n CreateIndexCommand,\n DeleteIndexCommand,\n DeleteVectorsCommand,\n ListVectorsCommand,\n ListVectorsCommandInput,\n NotFoundException,\n PutVectorsCommand,\n QueryVectorsCommand,\n QueryVectorsCommandInput,\n S3VectorsClient,\n} from '@aws-sdk/client-s3vectors'\nimport {VectorData, VectorIndexConfig, VectorStoreConfig} from '../types'\nimport {VectorStore} from '../VectorStore'\n\n/**\n * S3 Vector Store implementation that provides CRUD operations for a specific vector store\n */\nexport class S3VectorStore<TVectorData extends VectorData = VectorData>\n implements VectorStore<TVectorData>\n{\n private config: VectorStoreConfig\n private client: S3VectorsClient\n\n constructor(client: S3VectorsClient, config: VectorStoreConfig) {\n this.client = client\n this.config = config\n }\n\n private async wrapOperationWithIndexCreation<TOperation extends () => Promise<any>>(\n namespace: string,\n operation: TOperation,\n ): Promise<Awaited<ReturnType<TOperation>>> {\n try {\n return await operation()\n } catch (error) {\n if (error instanceof NotFoundException) {\n if (error.message === 'The specified index could not be found') {\n await this.createVectorIndex(namespace, this.config, this.config.index)\n return this.wrapOperationWithIndexCreation(namespace, operation)\n }\n }\n throw error\n }\n }\n\n async insertVectors(namespace: string, vectors: TVectorData[]) {\n return await this.wrapOperationWithIndexCreation(namespace, async () => {\n const result = await this.client.send(\n new PutVectorsCommand({\n vectorBucketName: this.config.storeName,\n indexName: namespace,\n vectors: vectors.map(vector => ({\n key: vector.key,\n data: {\n float32: vector.vector,\n },\n metadata: vector.metadata,\n })),\n }),\n )\n\n return result\n })\n }\n\n async queryVectors(\n namespace: string,\n options?: Omit<QueryVectorsCommandInput, 'vectorBucketName' | 'indexName' | 'queryVector'> & {\n queryVector: number[]\n },\n ) {\n return await this.wrapOperationWithIndexCreation(namespace, async () => {\n const result = await this.client.send(\n new QueryVectorsCommand({\n ...options,\n vectorBucketName: this.config.storeName,\n indexName: namespace,\n queryVector: {\n float32: options.queryVector,\n },\n }),\n )\n\n const vectors: TVectorData[] =\n result.vectors?.map(\n vector =>\n ({\n key: vector.key,\n vector: vector.data?.float32,\n metadata: vector.metadata,\n }) as TVectorData,\n ) ?? []\n\n return {\n vectors,\n }\n })\n }\n\n async deleteVectors(namespace: string, keys: string[]) {\n return await this.client.send(\n new DeleteVectorsCommand({\n vectorBucketName: this.config.storeName,\n indexName: namespace,\n keys,\n }),\n )\n }\n\n async listVectors(\n namespace: string,\n options?: Omit<ListVectorsCommandInput, 'vectorBucketName' | 'indexName'>,\n ) {\n return await this.wrapOperationWithIndexCreation(namespace, async () => {\n const result = await this.client.send(\n new ListVectorsCommand({\n vectorBucketName: this.config.storeName,\n indexName: namespace,\n ...options,\n }),\n )\n\n return (result.vectors?.map(vector => ({\n key: vector.key,\n vector: vector.data?.float32,\n metadata: vector.metadata as TVectorData['metadata'],\n })) ?? []) as Partial<TVectorData>[]\n })\n }\n\n async listVectorKeys(\n namespace: string,\n options?: Omit<\n ListVectorsCommandInput,\n 'vectorBucketName' | 'indexName' | 'returnData' | 'returnMetadata'\n >,\n ) {\n const result = await this.listVectors(namespace, {\n ...options,\n returnData: false,\n returnMetadata: false,\n })\n return result.map(vector => vector.key)\n }\n\n /**\n * Create a new vector index\n */\n private async createVectorIndex(\n namespace: string,\n config: VectorStoreConfig,\n indexConfig: VectorIndexConfig,\n ): Promise<void> {\n await this.client.send(\n new CreateIndexCommand({\n indexName: namespace,\n dataType: 'float32',\n dimension: indexConfig.dimension,\n distanceMetric: indexConfig.distanceMetric,\n vectorBucketName: config.storeName,\n metadataConfiguration: indexConfig.metadataConfiguration,\n }),\n )\n }\n\n async deleteNamespace(namespace: string) {\n return await this.client.send(\n new DeleteIndexCommand({\n vectorBucketName: this.config.storeName,\n indexName: namespace,\n }),\n )\n }\n}\n"],"mappings":"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","names":["NotFoundException","S3VectorsClient","_a","S3VectorsClient","NotFoundException"]}
|
|
1
|
+
{"version":3,"sources":["../src/providers/S3VectorProvider.ts","../src/providers/S3VectorStore.ts"],"sourcesContent":["import type {VectorStorageProvider, VectorStorageProviderConfig} from '../VectorStorageProvider'\nimport type {VectorStoreConfig, VectorIndexConfig} from '../types'\nimport {\n CreateVectorBucketCommand,\n GetVectorBucketCommand,\n NotFoundException,\n S3VectorsClient,\n S3VectorsClientConfig,\n} from '@aws-sdk/client-s3vectors'\nimport {S3VectorStore} from './S3VectorStore'\n\n/**\n * Configuration for AWS S3 Vector provider\n */\nexport interface S3VectorProviderConfig extends VectorStorageProviderConfig {\n s3Options: S3VectorsClientConfig\n}\n\n/**\n * AWS S3 Vector storage provider implementation\n *\n * This provider implements vector storage using AWS S3's native vector capabilities.\n * It manages vector buckets and indexes according to the S3 Vector API.\n */\nexport class S3VectorProvider implements VectorStorageProvider {\n private config: S3VectorProviderConfig\n private client: S3VectorsClient\n\n constructor(config: S3VectorProviderConfig) {\n this.config = config\n this.validateConfig()\n this.client = new S3VectorsClient(this.config.s3Options)\n }\n\n /**\n * Validate the provider configuration\n */\n private validateConfig(): void {\n if (!this.config.s3Options) {\n throw new Error('S3Options are required for S3VectorProvider')\n }\n }\n\n createVectorStore(config: VectorStoreConfig) {\n this.validateVectorStoreConfig(config)\n\n this.setupVectorStore(config)\n\n // Return a VectorStore instance\n return new S3VectorStore(this.client, config)\n }\n\n private async setupVectorStore(config: VectorStoreConfig): Promise<void> {\n // Ensure the vector bucket exists\n await this.ensureVectorBucketExists(config)\n }\n\n private async storeExists(storeName: string): Promise<boolean> {\n try {\n await this.client.send(\n new GetVectorBucketCommand({\n vectorBucketName: storeName,\n }),\n )\n\n return true\n } catch (error) {\n if (this.isNotFoundError(error)) {\n return false\n }\n throw error\n }\n }\n\n /**\n * Ensure a vector bucket exists, create if it doesn't\n */\n private async ensureVectorBucketExists(config: VectorStoreConfig): Promise<void> {\n const exists = await this.storeExists(config.storeName)\n if (!exists) {\n await this.createVectorBucket(config)\n }\n }\n\n /**\n * Create a new vector bucket\n */\n private async createVectorBucket(config: VectorStoreConfig): Promise<void> {\n await this.client.send(\n new CreateVectorBucketCommand({\n vectorBucketName: config.storeName,\n encryptionConfiguration: config.encryptionConfiguration,\n }),\n )\n }\n\n /**\n * Validate vector store configuration\n */\n private validateVectorStoreConfig(config: VectorStoreConfig): void {\n if (!config.storeName || config.storeName.length < 3 || config.storeName.length > 63) {\n throw new Error('Store name must be between 3 and 63 characters')\n }\n\n if (!/^[a-z0-9-]+$/.test(config.storeName)) {\n throw new Error('Store name must contain only lowercase letters, numbers, and hyphens')\n }\n\n if (!config.index) {\n throw new Error('Index must be specified')\n }\n\n this.validateIndexConfig(config.index)\n }\n\n /**\n * Validate vector index configuration\n */\n private validateIndexConfig(indexConfig: VectorIndexConfig): void {\n if (indexConfig.dimension < 1 || indexConfig.dimension > 4096) {\n throw new Error('Vector dimension must be between 1 and 4096')\n }\n\n if (!['cosine', 'euclidean'].includes(indexConfig.distanceMetric)) {\n throw new Error('Distance metric must be either \"cosine\" or \"euclidean\"')\n }\n }\n\n /**\n * Check if an error indicates a resource was not found\n */\n private isNotFoundError(error: unknown): boolean {\n if (error instanceof NotFoundException) {\n return true\n }\n return false\n }\n}\n","import {\n CreateIndexCommand,\n DeleteIndexCommand,\n DeleteVectorsCommand,\n ListVectorsCommand,\n ListVectorsCommandInput,\n NotFoundException,\n PutVectorsCommand,\n QueryVectorsCommand,\n QueryVectorsCommandInput,\n S3VectorsClient,\n} from '@aws-sdk/client-s3vectors'\nimport {VectorData, VectorIndexConfig, VectorStoreConfig} from '../types'\nimport {VectorStore} from '../VectorStore'\n\n/**\n * S3 Vector Store implementation that provides CRUD operations for a specific vector store\n */\nexport class S3VectorStore<TVectorData extends VectorData = VectorData>\n implements VectorStore<TVectorData>\n{\n private config: VectorStoreConfig\n private client: S3VectorsClient\n\n constructor(client: S3VectorsClient, config: VectorStoreConfig) {\n this.client = client\n this.config = config\n }\n\n private async wrapOperationWithIndexCreation<TOperation extends () => Promise<any>>(\n namespace: string,\n operation: TOperation,\n ): Promise<Awaited<ReturnType<TOperation>>> {\n try {\n return await operation()\n } catch (error) {\n if (error instanceof NotFoundException) {\n if (error.message === 'The specified index could not be found') {\n await this.createVectorIndex(namespace, this.config, this.config.index)\n return this.wrapOperationWithIndexCreation(namespace, operation)\n }\n }\n throw error\n }\n }\n\n async insertVectors(namespace: string, vectors: TVectorData[]) {\n return await this.wrapOperationWithIndexCreation(namespace, async () => {\n const result = await this.client.send(\n new PutVectorsCommand({\n vectorBucketName: this.config.storeName,\n indexName: namespace,\n vectors: vectors.map(vector => ({\n key: vector.key,\n data: {\n float32: vector.vector,\n },\n metadata: vector.metadata,\n })),\n }),\n )\n\n return result\n })\n }\n\n async queryVectors(\n namespace: string,\n options?: Omit<QueryVectorsCommandInput, 'vectorBucketName' | 'indexName' | 'queryVector'> & {\n queryVector: number[]\n },\n ) {\n return await this.wrapOperationWithIndexCreation(namespace, async () => {\n const result = await this.client.send(\n new QueryVectorsCommand({\n ...options,\n vectorBucketName: this.config.storeName,\n indexName: namespace,\n queryVector: {\n float32: options.queryVector,\n },\n }),\n )\n\n const vectors: TVectorData[] =\n result.vectors?.map(\n vector =>\n ({\n key: vector.key,\n metadata: vector.metadata,\n }) as TVectorData,\n ) ?? []\n\n return {\n vectors,\n }\n })\n }\n\n async deleteVectors(namespace: string, keys: string[]) {\n return await this.client.send(\n new DeleteVectorsCommand({\n vectorBucketName: this.config.storeName,\n indexName: namespace,\n keys,\n }),\n )\n }\n\n async listVectors(\n namespace: string,\n options?: Omit<ListVectorsCommandInput, 'vectorBucketName' | 'indexName'>,\n ) {\n return await this.wrapOperationWithIndexCreation(namespace, async () => {\n const result = await this.client.send(\n new ListVectorsCommand({\n vectorBucketName: this.config.storeName,\n indexName: namespace,\n ...options,\n }),\n )\n\n return (result.vectors?.map(vector => ({\n key: vector.key,\n vector: vector.data?.float32,\n metadata: vector.metadata as TVectorData['metadata'],\n })) ?? []) as Partial<TVectorData>[]\n })\n }\n\n async listVectorKeys(\n namespace: string,\n options?: Omit<\n ListVectorsCommandInput,\n 'vectorBucketName' | 'indexName' | 'returnData' | 'returnMetadata'\n >,\n ) {\n const result = await this.listVectors(namespace, {\n ...options,\n returnData: false,\n returnMetadata: false,\n })\n return result.map(vector => vector.key)\n }\n\n /**\n * Create a new vector index\n */\n private async createVectorIndex(\n namespace: string,\n config: VectorStoreConfig,\n indexConfig: VectorIndexConfig,\n ): Promise<void> {\n await this.client.send(\n new CreateIndexCommand({\n indexName: namespace,\n dataType: 'float32',\n dimension: indexConfig.dimension,\n distanceMetric: indexConfig.distanceMetric,\n vectorBucketName: config.storeName,\n metadataConfiguration: indexConfig.metadataConfiguration,\n }),\n )\n }\n\n async deleteNamespace(namespace: string) {\n return await this.client.send(\n new DeleteIndexCommand({\n vectorBucketName: this.config.storeName,\n indexName: namespace,\n }),\n )\n }\n}\n"],"mappings":"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","names":["NotFoundException","S3VectorsClient","_a","S3VectorsClient","NotFoundException"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orion-js/vectors",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.3.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.cjs",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -15,25 +15,24 @@
|
|
|
15
15
|
],
|
|
16
16
|
"author": "nicolaslopezj",
|
|
17
17
|
"license": "MIT",
|
|
18
|
+
"scripts": {
|
|
19
|
+
"test": "bun test",
|
|
20
|
+
"prepare": "bun run build",
|
|
21
|
+
"clean": "rm -rf ./dist",
|
|
22
|
+
"build": "tsup",
|
|
23
|
+
"dev": "tsup --watch"
|
|
24
|
+
},
|
|
18
25
|
"devDependencies": {
|
|
19
26
|
"@aws-sdk/client-s3vectors": "^3.911.0",
|
|
20
27
|
"@types/node": "^18.19.86",
|
|
21
28
|
"tsup": "^8.0.1",
|
|
22
|
-
"typescript": "^5.4.5"
|
|
23
|
-
"vitest": "^3.1.1"
|
|
29
|
+
"typescript": "^5.4.5"
|
|
24
30
|
},
|
|
25
31
|
"peerDependencies": {
|
|
26
32
|
"@aws-sdk/client-s3vectors": "*",
|
|
27
|
-
"@orion-js/logger": "4.
|
|
33
|
+
"@orion-js/logger": "4.3.0"
|
|
28
34
|
},
|
|
29
35
|
"publishConfig": {
|
|
30
36
|
"access": "public"
|
|
31
|
-
},
|
|
32
|
-
"scripts": {
|
|
33
|
-
"test": "vitest --config vitest.config.ts run",
|
|
34
|
-
"clean": "rm -rf ./dist",
|
|
35
|
-
"build": "tsup",
|
|
36
|
-
"upgrade-interactive": "pnpm upgrade --interactive",
|
|
37
|
-
"dev": "tsup --watch"
|
|
38
37
|
}
|
|
39
|
-
}
|
|
38
|
+
}
|
package/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2022 Orionjs Team
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|