使用ClickHouse进行矢量搜索 - 第一部分

利用ClickHouse进行高效向量存储与检索 ClickHouse作为一个向量数据库,为开发者提供了高效的数据存储和检索能力。向量存储概念指南ClickHouse的API参考文档。 阅读详情

图片

本文字数:5690;估计阅读时间:15 分钟

审校:庄晓东(魏庄)

本文在公众号【ClickHouseInc】首发

引言

在过去的一年中,大型语言模型(LLMs)以及像ChatGPT这样的产品已经吸引了全球的注意,并驱动了建立在它们之上的新功能浪潮。矢量和矢量搜索的概念是为了实现如推荐、问题回答、图像/视频搜索等功能的核心。

因此,我们在社区中看到了对矢量搜索兴趣的显著增加。具体来说,人们对何时需要专门的矢量数据库,何时不需要有比较感兴趣。

以这些模型为重点,我们借此机会重新审视矢量出现前的搜索,探讨矢量(和嵌入)是什么,了解矢量搜索,其应用,以及这个功能如何适应更广泛的数据景观。

对于那些已经熟悉基本的矢量搜索概念并想直接跳到ClickHouse中如何进行矢量搜索的读者,您可以跳到第二部分(下周在公众号发布)。

矢量出现之前的搜索

让我们简要介绍一下如何使用Elasticsearch和Solr这样的传统引擎进行搜索(注意:这些技术现在也提供了矢量搜索功能)。

这些引擎主要提供文本搜索功能,依赖于用户将内容划分为称为文档的离散文本单元,每个文档都有一个ID。这些文档可以包含从一本书或网页的所有文本到一个单独的句子的任何内容,具体取决于用户需要找到相关内容的粒度(长度也会影响搜索效果)。

然后,每个文档的文本都会通过一个称为分词的过程分割成其组成的词,产生一个词袋。在其最简单的形式中,分词将涉及按空白符分割、转为小写和删除标点的过程。这些也称为terms的词将用于建立一个类似于书籍背面的索引。这个索引将包含文本中的每个词的计数,它们出现的文档ID,称为postings,以及每个术语在文档中出现的次数。

图片

注意上面是一个简化的描述,并省略了诸如分词、词干提取、词形还原和停用词的过程,以及位置索引和用于快速搜索的巧妙的内部数据结构的详细信息。

在搜索时,会访问索引,并确定匹配的文档。然后,会为每个文档执行一个计算,将搜索文本与文档术语进行比较,以便按相关性对其进行排序。这种“相关性计算”通常基于匹配术语在整个语料库和文档本身中出现的频率。

在整个语料库中很少见,但在匹配文档中很常见的词汇,会比如“和”这样的普通词汇对文档得分的贡献更大,这样的词汇几乎没有意义。这些频繁出现的词,被称为“停用词”(stop words),可以选择从索引中省略,因为它们对相关性的贡献很低,尽管损失了一些特性。这个简单的观察,在1970年代提出,形成了词频/逆文档频率(TF/IDF)公式的基础,尽管简单,但通常很有效。

图片

上面是一个简化。它假定术语之间有一个逻辑与(AND),并且每个术语的分数只是简单地相加。多项搜索可以更加宽松,例如,OR,利用更复杂的评分函数,如BM25,和合并术语得分的方法。

这种方法的挑战在于它无法捕获单词本身的含义或上下文。如果搜索词汇接近,位置信息可以更高地权衡文档,但这仍然无法捕获它们之间的语义关系。例如,这种方法不能区分以下两者:

"猫通过窗户对鸟感兴趣地看着"和"鸟通过窗户对猫感兴趣地看着"。

此外,这种方法受到词汇不匹配问题的困扰。更具体地说,如果语料库的词汇与查询文本的词汇不同,用户会发现相关性很差。

虽然手动标记概念、同义词和使用分类法可以部分解决这些挑战,但这些方法不够灵活,难以维护,且很少能够扩展。重要的是,这种方法只适用于文本内容,不能(容易地)应用于其他数据媒介,如图像。

什么是矢量和嵌入?

在我们解释矢量如何解决捕捉单词之间语义关系的问题以及允许搜索更丰富的数据类型之前,让我们从基本原理开始,提醒自己什么是矢量。

在数学和物理学中,矢量被正式定义为一个具有大小和方向的对象。这通常采用空间中的线段或箭头的形式,可用于表示速度、力和加速度等数量。在计算机科学中,矢量是一个有限的数字序列。换句话说,它是一种用于存储数值的数据结构。

在机器学习中,矢量与我们在计算机科学中讨论的是相同的数据结构,但存储在其中的数值有特殊的意义。当我们取一个文本块或图像,并将其提取为它代表的关键概念时,这个过程被称为编码。结果输出是机器以数值形式表示的这些关键概念。这是一个嵌入,并存储在一个矢量中。换句话说,当这种上下文意义嵌入到一个矢量中时,我们可以称其为嵌入。

虽然所有的嵌入都是矢量,但并不是所有的矢量都是嵌入 - 矢量可以被认为是超类,可以用来表示任何数据,而嵌入是一种特定类型的矢量表示,是用来优化捕捉对象的语义或上下文语境。

这些嵌入矢量通常相当大,可以长达数百甚至数千个值。这个长度,也被称为维数,取决于如何产生矢量和他们打算代表的信息。对于大多数数据库,包括ClickHouse,一个矢量简单地是一个浮点数数组,即Array(Float32)。

图片

图片

在这里,我们将一个词表示为一个嵌入,但同样地,一个嵌入可以代表一个短语、句子或甚至一个文本段落。通常,对于特定维度的概念很难进行推理或附加标签,尤其是在更高的维度中,但当组合时允许词被概念性地理解。更重要的是,矢量也可以用来表示其他数据类型,如图像和音频。这为搜索历史上对于基于倒排索引方法的格式提供了可能性。

为什么矢量和嵌入有用?

将图像或文本编码为这些通用的表示,允许它们之间以及它们代表的信息进行比较,即使内容的原始形式是不同的。

要理解如何比较矢量嵌入,我们可以将嵌入想象为高维空间中的一个点。两个嵌入将是这个空间中的两个点。如果这两个嵌入代表的对象在概念上彼此相似,那么这些点在空间中的距离和角度将在几何上接近。

对于二维或三维,我们可以轻松地可视化和理解这个距离。下面,我们假设三个词“moonlight”、“flashlight”和“animal”的概念可以在3个维度中有效地表示:

图片

不幸的是,三个维度不足以编码大量文本中的所有概念,更不用说图像了!幸运的是,用于计算两个矢量之间的角度或距离的数学(通常是余弦相似性或欧几里得距离)可以扩展到N维,即使我们作为人类不能在视觉上理解它。嵌入通常有一个维度小于1000 - 足以编码文本语料库中的大多数概念。当然,这假设我们可以很好地选择我们的概念并准确地将我们的嵌入编码到空间中。

估计高达80%到90%的所有数据都是非结构化的。因此,这种比较能力为神经网络和LLMs等算法提供了基础,这些算法用于处理历史上对于企业来说挑战性很大且成本很高的类,并从中提取洞察力和作出决策。

执行矢量搜索

目前,假设我们有一种使用算法产生这些嵌入的方法,并且已经为我们想要搜索的所有文本完成了这些嵌入。这样做为我们留下了一套嵌入,长度上可能达到数亿甚至数十亿。

当用户想要搜索这个文本仓库(对于我们现在有相应的嵌入)时,用户的搜索需要被转换成一个嵌入本身。然后,可以将用户的搜索嵌入与文本仓库的嵌入集合进行比较,以找到最接近的匹配。最接近的匹配嵌入,当然,代表了与用户搜索最接近的文本。

在最简单的形式中,用户可能只是简单地搜索最相关的文档或一组文档,通过距离排序,从而复制传统的搜索引擎。然而,这种能力在向查询找到概念上相似的上下文文档方面具有价值,包括ChatGPT。记住,嵌入是通过它们在矢量空间中的角度或距离进行比较的。

图片

执行这种矢量比较过程通常需要一个可以持久化这些矢量,并且揭示查询语法的数据存储,其中可以传递一个矢量或潜在的原始查询输入(通常是文本)。这产生了像Pinecone和Weviate这样的矢量数据库的开发,它们不仅简单地存储矢量,还提供了将矢量生成过程集成到其数据加载管道和查询语法的方法——因此在数据加载和查询时自动执行嵌入编码过程。与此同时,像Solr和Elasticsearch这样的现有搜索引擎已经增加了对矢量搜索的支持,加入了新功能,允许用户加载和搜索嵌入。

此外,具有完整SQL支持的传统数据库,如Postgres和ClickHouse,已经增加了对矢量存储和检索的原生支持。在Postgres的情况下,这是通过pg_vector实现的。ClickHouse支持将矢量作为数组列类型(Array)进行存储,提供函数来计算搜索矢量和列值之间的距离。

精确结果与估计

当使用支持矢量搜索的数据存储时,用户有两种高级方法:

  • 精确结果与线性搜索 - 输入矢量与数据库中的每个矢量的完全比较,按最近的距离排序结果并限制为K次命中。这种方法,通常称为K最近邻(K nearest neigbor),虽然提供了一个精确的结果,保证了最佳质量的匹配,但通常在没有显著并行匹配和/或使用GPU的情况下很难超过1亿。根据其定义,匹配时间与需要匹配的矢量数量成正比(假设所有其他变量是常数),即O(n)。

图片

  • 近似结果与近似最近邻 - 虽然有时需要确切的最近匹配,但近似通常就足够了,特别是在有许多高质量匹配的较大数据集上。近似最佳匹配的算法旨在通过为速度牺牲一些准确性来加快搜索过程,通过减少召回来降低准确性。ANN算法使用各种技术快速识别一小部分最有可能是查询矢量的最佳匹配的最近邻居。这可以显著减少搜索大型数据集所需的时间。虽然ANN算法不能总是返回确切的K个最近邻,但它们对于许多应用程序来说通常是足够准确的。ANN算法在数据集大且搜索需要快速进行的应用中非常有益。这里的例子包括分层可导航小世界(HNSW)和Annoy算法。

图片

Annoy算法来源:Alexey Milovidov

上图显示了Annoy算法。这是通过在语料库上建立一个基于树的索引来工作的。这个树结构是通过根据使用的距离度量(通常是欧几里得距离)递归地将数据划分为较小的子空间来构建的。划分过程继续进行,直到子空间包含少量数据点或达到树的某个深度。当发出一个查询时,从根节点开始遍历树。在树的每一层,选择与查询点最近的节点,并评估其子节点。搜索继续进行,直到达到一个叶节点,该节点包含与查询点最近的数据点的子集。然后可以通过计算查询点与叶节点中的数据点之间的距离来找到最近的邻居。

生成嵌入向量

对于如何编码文本或更丰富的媒体内容(如图像)的详细过程,我们将在后续的博客文章中进一步讨论。简而言之,这依赖于利用机器学习算法来识别内容和意义,为语言或特定领域产生称为模型的数学表示。这些模型随后可用于将后续的文本(或其他资料)转化为向量。基于Transformer的模型是一种结构,已被证明在生成基于文本的内容的向量时特别有效。这一类的早期版本包括由Google开发的受欢迎的BERT模型。Transformers本身不仅仅是将文本转化为向量,它们还为最先进的语言翻译和最近受欢迎的聊天机器人ChatGPT提供了基础。

如前所述,向量不仅仅是概念性的嵌入。用户还可以选择为向量构造或添加其他特征。这些可以通过其他模型学习,或者由领域专家仔细选择,他们试图确保两个向量之间的近距离可以捕获业务问题的意义。请参阅下面的应用程序,了解一些示例。

最近几年,为图像生成嵌入的研究也引起了人们的极大关注,其中卷积神经网络架构在生成嵌入时在质量方面占据了主导地位。最近,视觉变换器(ViT)在图像分类和特征提取任务中表现出了令人鼓舞的结果,尤其是对于大规模的数据集。

多模型可以处理并编码多种数据类型,例如图像、文本和音频。例如,它们可以为图像和文本生成一个向量,有效地产生一个联合的嵌入空间,其中它们都可以进行比较。这可以用来允许用户使用单词进行搜索,并找到在概念上匹配的图像!OpenAI在2021年推出了一种名为CLIP(对比语言-图像预训练)的算法。这个特定的算法,我们将在未来的文章中使用它的嵌入,学习图像及其关联的文本字幕(在培训期间提供)的联合表示,以便相关图像和字幕的嵌入在空间中靠近。除了简单的搜索用例,这还允许进行诸如图像字幕和零镜头图像分类的任务。

图片

clip.png来源:CLIP - https://openai.com/research/clip

幸运的是,训练模型生成嵌入并不总是必要的,因为现在有开源的预训练模型可以用来生成这样的嵌入,可以从Hugging Face等资源下载。这些可以通过最少的额外培训进行“迁移学习”或“微调”来适应新领域。用户还可以下载数据集的生成嵌入进行实验。一旦用户生成或下载了一组嵌入,通常就需要一个存储媒体——这导致了向量数据库的采纳。

向量搜索的示例应用

这篇博客文章主要介绍了通过生成向量嵌入、其存储和检索来提供语义搜索的概念。这种能力在简单地增强现有的传统企业或应用搜索体验之外,还有许多应用。可能的用途包括,但不限于:

  • 推荐 - 特别适用于电子商务网站,向量搜索可以用来找到相关产品。除了简单地将文本意义嵌入到向量中,页面浏览和过去的购买记录等特征也可以编码到向量中。

  • 问答 - 问答系统历来都是一个挑战,因为用户很少使用与问题相同的术语。然而,可以将等效的含义编码为接近的向量,例如,X和Y。

  • 图像和视频搜索 - 使用上述描述的多模态模型,用户可以基于文本搜索图像和视频 - 这对于音乐和电影推荐系统、产品推荐和新闻文章推荐等应用程序非常有用。

  • 防欺诈 - 我们可以通过将用户的行为或登录模式编码成向量来找到相似或不相似的交易。这些可以是异常的行为,从而防止欺诈。

  • 基因组分析 - 向量数据库可用于存储和检索基因组序列的嵌入,这对于基因表达分析、个性化医疗和药物发现等应用非常有用。

  • 多语言搜索 - 而不是为语言建立索引(通常是一个昂贵的练习,并且与语言的数量成线性增长的成本),多语言模型可以允许使用两种语言编码为同一向量的同一概念进行跨语言搜索。

  • 提供上下文 - 最近,向量数据库被用于为由APIs(如ChatGPT)驱动的聊天应用程序提供上下文内容。例如,内容可以转化为向量并存储在一个向量数据库中。当最终用户提出一个问题时,查询数据库,并识别相关的文档。它们可以用来为ChatGPT提供更多的上下文,以产生一个更为稳健的答案。我们的朋友Supabase最近实施了这样的架构,为他们的文档提供了一个聊天机器人。

结论

在这篇文章中,我们为向量嵌入和向量数据库提供了一个高层次的介绍。我们介绍了它们的价值以及它们如何与更传统的搜索方法相关,以及如何在大规模上匹配向量的一般方法 - 无论是精确的,还是通过近似。

图片

联系我们

手机号:13910395701

邮箱:Tracy.Wang@clickhouse.com

满足您所有的在线分析列式数据库管理需求

「从ES到CK 05」clickhouse高效数据处理工具vector clickhouse的高效数据处理工具、替代logstash的神器:vector 阅读详情

相关推荐

《向量数据库指南》——当前向量数据库的赛道有哪些?

当前,向量数据库赛道主要分为四个类别:

实战AI智能体 432

使用ClickHouse进行向量搜索 - 第二部分

这篇文章是关于向量搜索系列的续篇,我们将通过实际的例子详细探讨ClickHouse与向量搜索的关系,并回答“什么时候应该使用ClickHouse进行向量搜索?”的问题。

ClickHouseDB的博客 3713

R语言clusterProfiler实战:GO与KEGG富集分析从入门到精通

本文提供了一份详尽的R语言clusterProfiler实战指南,从环境配置、数据导入、基因ID转换到GO与KEGG富集分析及可视化,手把手教你解读生物学意义。文章重点介绍了如何利用clusterProfiler这一强大工具,将差异基因列表转化为清晰的生物学通路与功能故事,并分享了结果解读、可视化以及处理非模式生物等进阶技巧与避坑指南。

weixin_29044713的博客 162

【ClickHouse系列】ClickHouse 支持 ANN 向量索引

最近邻域搜索(ANN)是指在 n 维空间中找到与给定点距离最小的点的问题。如果数据要逐条对比,性能和内存都有很大的消耗,所以添加了 annoy_index 索引,利用 ann 索引来加速计算。

一只努力的微服务 1737

Prompt Airlines CTF通关实战:从提示词注入到多模态攻击的AI安全攻防演练

提示词注入(Prompt Injection)是当前大语言模型(LLM)应用面临的核心安全威胁之一,其原理在于攻击者通过精心构造的用户输入,覆盖或绕过系统预设的指令,从而操控模型行为。这种攻击手法的技术价值在于揭示了AI系统在理解与执行指令时存在的逻辑边界模糊性,可能导致数据泄露、越权访问等严重风险。在应用场景上,从基础的客服对话到结合视觉识别的多模态系统,都可能成为攻击面。本文以一场名为“Prompt Airlines CTF”的实战挑战为例,深入剖析了包括指令遗忘、上下文注入、工具调用滥用及多模态提示注

aodan5477的博客 515

修改yolov8使支持单通道图像输入

默认支持BGR三通道图像输入,但是在很多工业场景下,存在很多灰度图像的场景,因此对yolov8代码做一些修改以支持单通道图像输入,满足项目实际需求。训练时,只需要在 data 的 yaml 文件中,添加 ch=1 即可。

mingo_敏 5779

[轻松上手:使用ClickHouse进行实时分析和矢量搜索]

ClickHouse作为实时分析和矢量搜索的数据库解决方案,不仅高效而且易于扩展。通过深入学习其SQL功能和索引机制,可以大大提升数据处理能力和查询速度。ClickHouse 官方文档GitHub - ClickHouse 仓库。

dsndnwfk的博客 471

【数据集6】全球人工不透水面积GAIA(清华数据)

全球人工不透水面GAIA简介及其应用

WW、forever的博客 3803

用ClickHouse创建高效的矢量存储解决方案

ClickHouse为实时应用提供了高效的矢量存储解决方案。这篇文章简要介绍了设置、管理和查询矢量存储的方法。ClickHouse文档Langchain API参考。

ppoojjj的博客 518

2026.3.10:最新claude code完美解决方案,跳过登录界面,使用国内deepseek-v4-pro进行计费

本文介绍了一种绕过Claude登录界面直接使用国内DeepSeek-V4-Pro服务的解决方案。通过npm全局安装@anthropic-ai/claude-code包,并配置5个关键环境变量:API认证令牌、基础URL(指向DeepSeek服务)、指定模型为deepseek-v4-pro、禁用非必要流量等。文中提供了4张配图辅助说明配置过程,但未展示具体内容。该方案可实现直接计费使用,无需通过官方登录流程。

拥抱具身智能,昇腾Ascend C 6501

QT+Halcon实现螺纹检测

工业上要检测螺丝的内外直径、内外牙距、内外角度,现在比较好用的图像处理库,开源的opencv,收费的有halcon。为了实现螺纹检测,和对比螺纹检测拿个库比较好。分别用opencv和halcon实现了螺纹检测,通过对比发现用halcon实现的效果比较。现在用博客把实现过程记录下来: 1、需要检测的螺纹数据如下: 2、为了实现检测螺丝以上数据,螺纹内径、螺纹外径、螺纹外牙距、螺纹...

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 7050

[解锁ClickHouse的潜能:高性能矢量数据库的设置与使用指南]

ClickHouse作为一个矢量数据库的使用,可以大大提升实时数据处理任务的性能和效率。本文提供了从安装到基本使用的完整指南。ClickHouse官方文档LangChain社区矢量存储库。

wedrftghgfdsa的博客 389

1. 在 SAP ABAP 事物码 SEGW 里创建 SAP OData 项目

本文介绍如何在 SAP ABAP 事物码 SEGW 里创建 SEGW 项目,使用工具生成 Runtime 运行时需要的资源。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 5442

使用ClickHouse作为高性能可扩展的矢量数据库

ClickHouse是一个快速且资源高效的开源数据库,专为实时应用和分析而设计。它提供了完整的SQL支持和丰富的功能,帮助用户编写分析查询。ClickHouse具备特殊的数据结构和距离搜索功能(如L2Distance),以及近似最近邻搜索索引,使其成为存储和搜索向量的高性能、可扩展的数据库。

VYSAHF的博客 544

HFSS实战项目——GPS北斗双模微带天线

本文设计了一款方形圆极化微带天线应用于北斗B1和GPSL1频段,满足高增益、低VSWR、适当方向图等要求。设计中心频率为1568MHz,介质板采用厚度h=1.6mm的Arlon AD450(tm)板,相对介电常数为4.5,采用探针馈电。

2401_87464239的博客 1767

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

[揭秘ClickHouse:高效处理实时数据与矢量查询的利器]

ClickHouse是一个开源的列式数据库系统,专为实时分析和查询优化而设计。它提供了完整的SQL支持,并具备强大的数据处理能力和灵活的函数集。ClickHouse的架构使其在处理大规模数据集时依然保持出色的性能。ClickHouse作为一款快速、高效的数据库,在处理实时应用和分析查询方面有着显著的优势。对于需要处理矢量查询和大规模数据存储的开发者来说,ClickHouse提供了强大的工具支持。ClickHouse官方文档ClickHouse GitHub仓库ClickHouse社区论坛。

adfyvatbia的博客 321

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ES不香吗,为啥还要ClickHouse?

Elasticsearch 是一个实时的分布式搜索分析引擎,它的底层是构建在 Lucene 之上的。简单来说是通过扩展 Lucene 的搜索能力,使其具有分布式的功能。ES 通常会和其它两个开源组件 Logstash(日志采集)和 Kibana(仪表盘)一起提供端到端的日志/搜索分析的功能,常常被简称为 ELK。Clickhouse 是俄罗斯搜索巨头 Yandex 开发的面向列式存储的关系型数据库。ClickHouse 是过去两年中 OLAP 领域中最热门的,并于 2016 年开源。

jakeswang的博客 1283

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Clickhouse和es

转自:Elasticsearch和Clickhouse基本查询对比 - 知乎 Elasticsearch 是一个实时的分布式搜索分析引擎,它的底层是构建在Lucene之上的。简单来说是通过扩展Lucene的搜索能力,使其具有分布式的功能。ES通常会和其它两个开源组件logstash(日志采集)和Kibana(仪表盘)一起提供端到端的日志/搜索分析的功能,常常被简称为ELK。 Clickhouse是俄罗斯搜索巨头Yandex开发的面向列式存储的关系型数据库。ClickHouse是过去两年中OLAP领域中最

蝉之洞 1513

clickhouse技术细节整理

这里的分布式JOIN通常指,JOIN查询中涉及到的left_table 与 right_table 是分布式表。ClickHouse集群并未实现完整意义上的Shuffle JOIN,实现了类Broadcast JOIN,通过事先完成数据重分布,能够实现Colocate JOIN。ClickHouse 的分布式JOIN查询可以分为两类,带GLOBAL关键字的,和不带GLOBAL关键字的情况。在实际中,我们通常将较小的表作为右表,并尽可能增加过滤条件,降低进入JOIN计算的数据量。分布式JOIN最佳实践。

htmljsp的博客 1220

clickhouse 新增列_ClickHouse 架构概述之列(Columns)介绍

ClickHouse 架构概述之列(Columns)介绍莫愁前路无知己,天下谁人不识君。ClickHouse 是一个真正的列式数据库管理系统(DBMS)。在 ClickHouse 中,数据始终是按列存储的,包括矢量(向量或列块)执行的过程。只要有可能,操作都是基于矢量进行分派的,而不是单个的值,这被称为“矢量化查询执行”,它有利于降低实际的数据处理开销。通常有两种不同的加速查询处理的方法:矢量化查...

weixin_34094525的博客 843

Elasticsearch 还是 Clickhouse?

更多内容关注微信公众号:fullstack888前言Elasticsearch 是一个实时的分布式搜索分析引擎,它的底层是构建在Lucene之上的。简单来说是通过扩展Lucene的搜索能力,使其具有分布式的功能。ES通常会和其它两个开源组件logstash(日志采集)和Kibana(仪表盘)一起提供端到端的日志/搜索分析的功能,常常被简称为ELK。Clickhouse是俄罗斯搜索巨头Yandex开...

qianshanding0708的博客 195

ClickHouse 发布 24.2 版本

这触发了一个新的缓冲区刷新周期,使用默认的缓冲区刷新超时,这意味着该查询的发送者需要等待完整的默认缓冲区刷新时间(OSS 为 200 毫秒,ClickHouse Cloud 为 1000 毫秒)才能收到插入的确认。在确保这一点尽可能高效的同时,我们注意到该函数还执行了任何常量参数的必要解包操作(最常见的用例即我们传递一个常量向量进行比较),这导致了不必要的内存复制。在传统的插入查询中,数据是同步插入到表中的:当 ClickHouse 收到查询时,数据会立即以数据part的形式写入到数据库存储中。

ClickHouseDB的博客 1344

ClickHouse 官方文档:使用 ClickHouse 构建可观测性解决方案【1/5】

本文字数:3933;估计阅读时间:10 分钟作者: ClickHouse官方本文在公众号【ClickHouseInc】首发。

ClickHouseDB的博客 1400

ES 和 Clickhouse 查询能力对比,实践结果根本料不到……

用Docker compose启动ES和Clickhouse的stack后,我们需要导入数据,我们利用Vector的generator功能,生成syslog,并同时导入ES和Clickhouse,在这之前,我们需要在Clickhouse上创建表。本文通过对于一些基本查询的测试,对比了Clickhouse 和Elasticsearch的功能和性能,测试结果表明,Clickhouse在这些基本场景表现非常优秀,性能优于ES,这也解释了为什么用很多的公司应从ES切换到Clickhouse之上。

jj1245_的博客 1248

【大数据进阶第三阶段之ClickHouse学习笔记】ClickHouse的简介和使用

ClickHouse是一种,专门用于和应用。它是一个开源的数据库系统,最初由俄罗斯搜索引擎公司Yandex开发,用于满足。

一个老码农 2384
上一篇: ClickHouse 23.9 版本发布说明
下一篇: 使用ClickHouse进行向量搜索 - 第二部分
ClickHouseDB
博客等级 码龄3年 1707粉丝 320原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值