From 16cad1df30519354b28c41ab9cca46cc2cedc979 Mon Sep 17 00:00:00 2001 From: "H. Temelski" Date: Fri, 21 Mar 2025 10:17:40 +0200 Subject: [PATCH 1/2] [CAE-827] Changed ft create vector types to union, added support for int8/uint8 --- packages/search/lib/commands/CREATE.spec.ts | 83 +++++++++++++++++++++ packages/search/lib/commands/CREATE.ts | 2 +- 2 files changed, 84 insertions(+), 1 deletion(-) diff --git a/packages/search/lib/commands/CREATE.spec.ts b/packages/search/lib/commands/CREATE.spec.ts index 58888fb7ce4..aa7c0b0ec16 100644 --- a/packages/search/lib/commands/CREATE.spec.ts +++ b/packages/search/lib/commands/CREATE.spec.ts @@ -473,4 +473,87 @@ describe('FT.CREATE', () => { 'OK' ); }, GLOBAL.SERVERS.OPEN); + + testUtils.testWithClientIfVersionWithinRange([[7], 'LATEST'], 'client.ft.create vector types floats', async client => { + assert.equal( + await client.ft.create("index_float32", { + field: { + ALGORITHM: "FLAT", + TYPE: "FLOAT32", + DIM: 1, + DISTANCE_METRIC: 'COSINE', + type: 'VECTOR' + }, + }), + "OK" + ); + + assert.equal( + await client.ft.create("index_float64", { + field: { + ALGORITHM: "FLAT", + TYPE: "FLOAT64", + DIM: 1, + DISTANCE_METRIC: 'COSINE', + type: 'VECTOR' + }, + }), + "OK" + ); + + assert.equal( + await client.ft.create("index_float16", { + field: { + ALGORITHM: "FLAT", + TYPE: "FLOAT16", + DIM: 1, + DISTANCE_METRIC: 'COSINE', + type: 'VECTOR' + }, + }), + "OK" + ); + + assert.equal( + await client.ft.create("index_bloat16", { + field: { + ALGORITHM: "FLAT", + TYPE: "BFLOAT16", + DIM: 1, + DISTANCE_METRIC: 'COSINE', + type: 'VECTOR' + }, + }), + "OK" + ); + }, GLOBAL.SERVERS.OPEN); + + + testUtils.testWithClientIfVersionWithinRange([[8], 'LATEST'], 'client.ft.create vector types ints', async client => { + assert.equal( + await client.ft.create("index_int8", { + field: { + ALGORITHM: "FLAT", + TYPE: "INT8", + DIM: 1, + DISTANCE_METRIC: 'COSINE', + type: 'VECTOR' + }, + }), + "OK" + ); + + assert.equal( + await client.ft.create("index_uint8", { + field: { + ALGORITHM: "FLAT", + TYPE: "UINT8", + DIM: 1, + DISTANCE_METRIC: 'COSINE', + type: 'VECTOR' + }, + }), + "OK" + ); + }, GLOBAL.SERVERS.OPEN); }); diff --git a/packages/search/lib/commands/CREATE.ts b/packages/search/lib/commands/CREATE.ts index 5eec9799264..5645a2b2dce 100644 --- a/packages/search/lib/commands/CREATE.ts +++ b/packages/search/lib/commands/CREATE.ts @@ -61,7 +61,7 @@ export type SchemaVectorFieldAlgorithm = typeof SCHEMA_VECTOR_FIELD_ALGORITHM[ke interface SchemaVectorField extends SchemaField { ALGORITHM: SchemaVectorFieldAlgorithm; - TYPE: string; + TYPE: 'FLOAT32' | 'FLOAT64' | 'BFLOAT16' | 'FLOAT16' | 'INT8' | 'UINT8'; DIM: number; DISTANCE_METRIC: 'L2' | 'IP' | 'COSINE'; INITIAL_CAP?: number; From b85cd3716c5eaa004376f306e5ef1d5447d2711d Mon Sep 17 00:00:00 2001 From: "H. Temelski" Date: Fri, 21 Mar 2025 10:30:29 +0200 Subject: [PATCH 2/2] [CAE-827] Moved test cases --- packages/search/lib/commands/CREATE.spec.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/search/lib/commands/CREATE.spec.ts b/packages/search/lib/commands/CREATE.spec.ts index aa7c0b0ec16..2c54d3d0235 100644 --- a/packages/search/lib/commands/CREATE.spec.ts +++ b/packages/search/lib/commands/CREATE.spec.ts @@ -474,7 +474,7 @@ describe('FT.CREATE', () => { ); }, GLOBAL.SERVERS.OPEN); - testUtils.testWithClientIfVersionWithinRange([[7], 'LATEST'], 'client.ft.create vector types floats', async client => { + testUtils.testWithClientIfVersionWithinRange([[7], 'LATEST'], 'client.ft.create vector types big floats', async client => { assert.equal( await client.ft.create("index_float32", { field: { @@ -500,7 +500,10 @@ describe('FT.CREATE', () => { }), "OK" ); + }, GLOBAL.SERVERS.OPEN); + + testUtils.testWithClientIfVersionWithinRange([[8], 'LATEST'], 'client.ft.create vector types small floats and ints', async client => { assert.equal( await client.ft.create("index_float16", { field: { @@ -526,10 +529,7 @@ describe('FT.CREATE', () => { }), "OK" ); - }, GLOBAL.SERVERS.OPEN); - - - testUtils.testWithClientIfVersionWithinRange([[8], 'LATEST'], 'client.ft.create vector types ints', async client => { + assert.equal( await client.ft.create("index_int8", { field: {