feat: Add VEC_PRODUCT, VEC_ELEM_PRODUCT, VEC_NORM. (#5303)

* feat: Add `vec_product(col)` function.

* feat: Add `vec_elem_product` function

* feat: Add `vec_norm` function.
This commit is contained in:
Lin Yihai
2025-01-09 14:26:51 +08:00
committed by GitHub
parent 812a775b3d
commit fdbfebf4be
9 changed files with 686 additions and 0 deletions

View File

@@ -158,3 +158,75 @@ SELECT vec_to_string(vec_div('[1.0, -2.0]', parse_vec('[0.0, 0.0]')));
| [inf,-inf] |
+---------------------------------------------------------------------------+
SELECT vec_elem_product('[1.0, 2.0, 3.0, 4.0]');
+------------------------------------------------+
| vec_elem_product(Utf8("[1.0, 2.0, 3.0, 4.0]")) |
+------------------------------------------------+
| 24.0 |
+------------------------------------------------+
SELECT vec_elem_product('[-1.0, -2.0, -3.0, 4.0]');
+---------------------------------------------------+
| vec_elem_product(Utf8("[-1.0, -2.0, -3.0, 4.0]")) |
+---------------------------------------------------+
| -24.0 |
+---------------------------------------------------+
SELECT vec_elem_product(parse_vec('[1.0, 2.0, 3.0, 4.0]'));
+-----------------------------------------------------------+
| vec_elem_product(parse_vec(Utf8("[1.0, 2.0, 3.0, 4.0]"))) |
+-----------------------------------------------------------+
| 24.0 |
+-----------------------------------------------------------+
SELECT vec_elem_product(parse_vec('[-1.0, -2.0, -3.0, 4.0]'));
+--------------------------------------------------------------+
| vec_elem_product(parse_vec(Utf8("[-1.0, -2.0, -3.0, 4.0]"))) |
+--------------------------------------------------------------+
| -24.0 |
+--------------------------------------------------------------+
SELECT vec_to_string(vec_norm('[0.0, 2.0, 3.0]'));
+--------------------------------------------------+
| vec_to_string(vec_norm(Utf8("[0.0, 2.0, 3.0]"))) |
+--------------------------------------------------+
| [0,0.5547002,0.8320503] |
+--------------------------------------------------+
SELECT vec_to_string(vec_norm('[1.0, 2.0, 3.0]'));
+--------------------------------------------------+
| vec_to_string(vec_norm(Utf8("[1.0, 2.0, 3.0]"))) |
+--------------------------------------------------+
| [0.26726124,0.5345225,0.8017837] |
+--------------------------------------------------+
SELECT vec_to_string(vec_norm('[7.0, 8.0, 9.0]'));
+--------------------------------------------------+
| vec_to_string(vec_norm(Utf8("[7.0, 8.0, 9.0]"))) |
+--------------------------------------------------+
| [0.5025707,0.5743665,0.64616233] |
+--------------------------------------------------+
SELECT vec_to_string(vec_norm('[7.0, -8.0, 9.0]'));
+---------------------------------------------------+
| vec_to_string(vec_norm(Utf8("[7.0, -8.0, 9.0]"))) |
+---------------------------------------------------+
| [0.5025707,-0.5743665,0.64616233] |
+---------------------------------------------------+
SELECT vec_to_string(vec_norm(parse_vec('[7.0, -8.0, 9.0]')));
+--------------------------------------------------------------+
| vec_to_string(vec_norm(parse_vec(Utf8("[7.0, -8.0, 9.0]")))) |
+--------------------------------------------------------------+
| [0.5025707,-0.5743665,0.64616233] |
+--------------------------------------------------------------+

View File

@@ -37,3 +37,21 @@ SELECT vec_to_string(vec_div(parse_vec('[1.0, 2.0]'), '[3.0, 4.0]'));
SELECT vec_to_string(vec_div('[1.0, 2.0]', parse_vec('[3.0, 4.0]')));
SELECT vec_to_string(vec_div('[1.0, -2.0]', parse_vec('[0.0, 0.0]')));
SELECT vec_elem_product('[1.0, 2.0, 3.0, 4.0]');
SELECT vec_elem_product('[-1.0, -2.0, -3.0, 4.0]');
SELECT vec_elem_product(parse_vec('[1.0, 2.0, 3.0, 4.0]'));
SELECT vec_elem_product(parse_vec('[-1.0, -2.0, -3.0, 4.0]'));
SELECT vec_to_string(vec_norm('[0.0, 2.0, 3.0]'));
SELECT vec_to_string(vec_norm('[1.0, 2.0, 3.0]'));
SELECT vec_to_string(vec_norm('[7.0, 8.0, 9.0]'));
SELECT vec_to_string(vec_norm('[7.0, -8.0, 9.0]'));
SELECT vec_to_string(vec_norm(parse_vec('[7.0, -8.0, 9.0]')));