IT评测·应用市场-qidao123.com技术社区

标题: ClickHouse的向量处理处罚本领 [打印本页]

作者: 前进之路    时间: 2024-7-31 00:19
标题: ClickHouse的向量处理处罚本领
ClickHouse的向量处理处罚本领

引言

在过去,非结构化数据(如文本、图片、音频、视频)通常被以为难以在数据库中直接使用,因为这些数据类型的多样性和复杂性。然而,随着技术的发展,嵌入技术可以将非结构化数据(如文本、图像、音频、视频)转换为向量,以便进行高效的向量相关的处理处罚,例如相似度计算和搜索。这种向量相关的处理处罚本领对于推荐系统、图像语义搜索和天然语言处理处罚等应用非常重要,以下列举了部分应用场景:
数据库的向量处理处罚本领是指数据库系统能够高效处理处罚和操作高维向量数据的功能。它包罗:
通过把非结构化数据转变成向量,带有向量处理处罚本领的通用OLAP数据库就能够统一有效地处理处罚和分析结构化数据和非结构化数据了。将结构化和非结构化数据联合在一个平台上,有以下好处:
向量的产生

向量可以有非常大的维度,蕴含大量的信息,可以表示词、句子、文档、图片、视频、基因、动作等等。向量数据是通过各种技术和算法从非结构化数据中生成的,以下是一些常见的方法:
只要把非结构化数据转换为向量,就可以在数据库中进行高效的存储、检索和计算。
用户可以下载现成的模型并进一步训练或微调,也可以下载或生成自己的数据集进行实验。可以在本地运行模型生成向量,也可以调用公有云服务生成向量。一旦有了数据集,就要考虑存放模型数据的地方,就要考虑向量数据库大概具有向量本领的通用数据库。这里我们选择ClickHouse通用OLAP数据库并查验其向量相关的本领。
ClickHouse的向量本领

按照上述几个维度,我们研究和实践ClickHouse的向量本领。
向量数据的表示

在ClickHouse中向量被表示为Array(Float32)。以流程分析场景为例,流程变体就是一种流程的实行流(例如 申请->退回->重新申请->答应->实行),我们创建一个表用于处理处罚流程变体。在这张表中添加一列variant_embedding,用于存放流程变体的嵌入向量。建表SQL示例如下:
  1. create table t_process_variants(
  2.     id Int64,
  3.     activities Array(String),
  4.     variant_embedding Array(Float32)
  5. ) engine = MergeTree()
  6. order by id;
复制代码
可以通过在本地运行CLIP语言模型,大概调用公有AI云服务生成流程变体的嵌入向量(embeddings)。这里我通过阿里云的模型服务灵积 生成流程变体的嵌入向量,每个向量有1536个维度。
向量数据的计算

向量数据的常用计算是相似度计算,以及向量的数学运算。
向量之间的相似度计算
对向量数据常用的操作之一是搜索相似内容,这需要计算向量之间的距离。距离较小的两个向量表示的内容在概念上是相似的。常用的距离度量包罗:
以下是搜索相似的流程变体的SQL查询:
  1. with [...]
  2.         as search_var
  3. select activities,
  4.     L2Distance(
  5.         search_var,
  6.         variant_embedding
  7.     ) as dist
  8. from t_process_variants
  9. order by dist asc
  10. limit 5
复制代码
大概用余弦距离。
  1. with [...]
  2.         as search_var
  3. select activities,
  4.     cosineDistance(
  5.         search_var,
  6.         variant_embedding
  7.     ) as dist
  8. from t_process_variants
  9. order by dist asc
  10. limit 5
复制代码
除此之外,ClickHouse还提供了其他的距离计算。
向量的数学运算
向量的加、减可以直接用运算符+、-来完成。
  1. SELECT [1, 2] + [2, 3]
  2. Query id: 0cd21c01-b110-4278-8899-bfbce608724a
  3.    ┌─plus([1, 2], [2, 3])─┐
  4. 1. │ [3,5]                │
  5.    └──────────────────────┘
复制代码
  1. SELECT [1, 2] - [2, 3]
  2. Query id: 4ceb3180-f690-4b22-8416-479a3772bf11
  3.    ┌─minus([1, 2], [2, 3])─┐
  4. 1. │ [-1,-1]               │
  5.    └───────────────────────┘
复制代码
向量的点乘使用函数dotProduct。
ClickHouse中,没有直接提供向量的叉乘(Cross Product)功能。
其他简单的向量计算例如[1,2,3] / 2,可以用arrayMap完成。
向量数据的搜索

向量搜索一般用向量距离函数加一个阈值来完成,并配合其他普通列上的条件,综合查询需要的结果。例如查询跟某个流程变体相似的且张三加入了的流程。
  1. with [...]
  2.         as search_var
  3. select activities,
  4.     cosineDistance(
  5.         search_var,
  6.         variant_embedding
  7.     ) as dist
  8. from t_process_variants
  9. where dist < 0.5
  10.         and has(operators, '张三') -- operators列包含所有参与者的姓名
  11. order by dist asc
  12. limit 3
复制代码
向量数据的索引

上述的向量搜索是线性的,因为要一个一个的算向量距离,其时间复杂度是O(n)。通过添加向量索引可以降低时间复杂度,代价是牺牲精确度,但是在很多场景中这点精确度的牺牲是可以容忍的。
近似近来邻搜索索引(Annoy索引)

Annoy(Approximate Nearest Neighbors Oh Yeah)索引是一种数据结构,是为了提升大规模近来邻向量搜索的效率,虽然它在 ClickHouse 中仍处于实验阶段,但它能在准确性和计算效率之间取得平衡。Annoy索引用于在高维空间中进行近似近来邻搜索。它通过随机超平面将空间划分成多个小地区,每个地区包含一部分数据点。这些地区形成一棵二叉树,节点代表超平面,子节点代表子地区,叶节点则包含现实的数据点。通过随机化插入和使用开导式算法,确保树的平衡和效率。
Annoy索引当前支持两种距离:
Annoy 索引的工作原理:
可以用在创建表大概修改表的时间创建一个Annoy索引,在INDEX字句中指定索引类型为Annoy。
  1. INDEX {ann_index_name} {向量列} TYPE annoy([{距离函数}[, {树的数量}]])
复制代码
例如:
  1. alter table t_process_variants
  2. add index variant_embedding_idx variant_embedding type annoy('cosineDistance', 100)
复制代码
使用注意事项:
向量数据的存储

向量用Array(Float32)存储有些奢侈,因为很多情况下16位浮点数就够了,在行业内专门有如许的类型叫bfloat16,很多数据集和训练出来的模型都是采用bloat16。
但是ClickHouse当前并没有Float16如许的类型。所以照旧得用Array(Float32),但是bfloat16相当于Float32的低16位置为0后的结果。因此我们可以在存储向量之前用函数扫除其Float32内容的低16位。如许存储时低16位的0会被压缩算法压缩。
总结

ClickHouse具备强大的向量处理处罚本领,能够高效处理处罚和操作高维向量数据。通过将非结构化数据(如文本、图片、音频、视频)转换为向量,ClickHouse可以实现推荐系统、问答系统、图像和视频搜索等多种应用。向量数据在ClickHouse中被表示为Array(Float32),并支持多种相似度计算方法,如余弦距离和欧几里得距离。ClickHouse支持近似近来邻搜索索引(Annoy索引),通过随机超平面分割空间来进步搜索效率,适用于大规模向量搜索。此外,为了节省存储空间,可以采用bfloat16格式,从而实现高效的压缩和存储。
总的来说,ClickHouse的向量数据库功能通过高效处理处罚和搜索高维向量数据,在多个应用领域展现出显著价值,使其成为推荐系统、问答系统、图像和视频搜索等领域的抱负选择。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4