向量数据类型
概述
在人工智能领域,向量是一种重要的数据类型,用于表示数据集中的特征或者样本。向量可以用于许多机器学习和深度学习算法中,如推荐系统、自然语言处理和图像识别。引入向量类型后,GreptimeDB 可以更有效地支持这些 AI 应用,提供强大的向量存储和计算能力。
基本介绍
在 GreptimeDB 中,向量表示为固定维度的 Float32(32 位浮点数)数组。创建向量类型列时,必须指定向量的维度,并且维度在定义后不能更改。
定义向量类型列
在 SQL 中,可以通过以下语法来定义包含向量类型的表。需要注意的是,维度 <dim>
必须是一个正整数,用于定义向量的长度。
CREATE TABLE <table_name> (
...
<vec_col> VECTOR(<dim>)
);
例如,定义一个具有维度 3 的向量类型列的表:
CREATE TABLE vecs (
ts TIMESTAMP TIME INDEX,
vec_col VECTOR(3)
);
向量写入
在 GreptimeDB 中,你可以通过多种方式将向量数据写入数据库。最简单的方法是使用字符串形式,并通过隐式转换将其存储为向量。字符串需要用方括号 []
包围。以下是使用隐式转换的 SQL 示例:
INSERT INTO <table> (<vec_col>) VALUES
('[<float32>, <float32>, ...]'),
('[<float32>, <float32>, ...]'),
...
('[<float32>, <float32>, ...]');
例如,插入 3 个三维向量:
INSERT INTO vecs (ts, vec_col) VALUES
('2024-11-18 00:00:01', '[1.0, 2.0, 3.0]'),
('2024-11-18 00:00:02', '[4.0, 5.0, 6.0]'),
('2024-11-18 00:00:03', '[7.0, 8.0, 9.0]');
如果你希望更明确地控制数据转换,可以使用 parse_vec
函数来显式地解析字符串为向量:
INSERT INTO vecs (ts, vec_col) VALUES
('2024-11-18 00:00:01', parse_vec('[1.0, 2.0, 3.0]')),
('2024-11-18 00:00:02', parse_vec('[4.0, 5.0, 6.0]')),
('2024-11-18 00:00:03', parse_vec('[7.0, 8.0, 9.0]'));