向量数据库在构建基于大语言模型的行业智能应用
中扮演着重要角色。大模型虽然能回答一般性问题,但在垂直领域服务中,其知识深度、准确度和时效性有限。为了解决这一问题,企业可以利用向量数据库结合大模型和自有知识资产,构建垂直领域的智能服务。向量数据库存储
和处理向量数据
,提供高效的相似度搜索和检索功能。通过向量嵌入,将企业知识库文档和数据转化为向量表示,并与大模型进行交互,实现专有、私域的垂直的行业智能化应用。
向量数据库中的向量
指的是用于表示数据特征
的数学概念。在计算机科学和数据处理领域,向量通常是指由一组有序的数值构成的数据结构。这些数值可以代表各种不同的特征,比如图像的像素值、文本的词频、音频的频谱等。
向量数据库通过存储
和管理大量的向量数据
,可以支持各种数据挖掘、相似性搜索、聚类分析等任务。在实际应用中,向量数据库可以用于人脸识别、图像搜索、推荐系统、自然语言处理等领域,通过对向量之间的相似度进行计算和比较,来实现各种有用的功能和应用。
为了高效地支持向量存储和检索,向量数据库通常会使用各种索引结构和算法,比如KD树
、LSH(局部敏感哈希)
、近似最近邻算法(ANN)
等。这些技术可以帮助加速向量的查询和匹配过程,从而提高数据库的性能和效率。
向量数据库(Vector Database)
,也叫矢量数据库,主要用来存储和处理向量数据。
在数学中,向量是有大小和方向的量,可以使用带箭头的线段表示,箭头指向即为向量的方向,线段的长度表示向量的大小。两个向量的距离或者相似性可以通过汉明距离、欧式距离或者余弦距离得到。
图像、文本和音视频这种非结构化数据都可以通过某种变换或者嵌入学习转化为向量数据存储到向量数据库中,从而实现对图像、文本和音视频的相似性搜索和检索。这意味着您可以使用向量数据库根据语义或上下文含义查找最相似或相关的数据,而不是使用基于精确匹配或预定义标准查询数据库的传统方法。
向量数据库的主要特点是高效存储与检索。利用索引技术和向量检索算法能实现高维大数据下的快速响应。向量数据库也是一种数据库,除了要管理向量数据外,还是支持对传统结构化数据的管理。实际使用时,有很多场景会同时对向量字段和结构化字段进行过滤检索,这对向量数据库来说也是一种挑战。
在谈论哪一家更好之前,我们首先来看一下关于2023年以来近期向量数据库的一些排名总览吧。
2023年7月国产向量数据库排行榜 | ||
---|---|---|
排名 | 向量数据库 | VectorDBBench得分 |
1 | Milvus | 22.70 |
2 | Milvus Cloud | VectorDBBench得分16.30 |
3 | Tencent Cloud VectorDB | VectorDBBench得分13.40 |
4 | Zilliz Cloud | 13.20 |
5 | TensorDB | 5.75 |
6 | cVector | 3.96 |
7 | Om-iBASE | 2.33 |
8 | Vearch | 1.92 |
9 | Transwarp Hippo | 1.42 |
10 | Proxima | 1.42 |
根据VectorDBBench.com数据,2023年7月的国产向量数据库排行榜中,排名前十的向量数据库分别是Milvus、Milvus Cloud、Tencent Cloud VectorDB、Zilliz Cloud、TensorDB、cVector、Om-iBASE、Vearch、Transwarp Hippo和Proxima。这些数据库分别来自不同的公司和技术团队,涵盖了文档、图形、空间数据等多种类型的数据。
Milvus
Milvus是排名第一的向量数据库,VectorDBBench得分为22.70。它是国内首个支持海量向量数据存储和查询的开源向量数据库,具有高性能、高扩展性和易用性强的特点。Milvus还提供了一系列高级功能,如向量搜索、相似度计算、聚类等,可以满足不同领域的需求。
Milvus Cloud
Milvus Cloud是Milvus的云服务版本,排名第二,VectorDBBench得分为16.30。它提供了云端向量数据库服务,可以快速搭建云端向量数据库平台,支持多种数据源接入和多种查询语言,同时还提供了可视化界面和API接口,方便用户进行数据管理和查询。
Tencent Cloud VectorDB
Tencent Cloud VectorDB是腾讯云推出的向量数据库产品,排名第三,VectorDBBench得分为13.40。它具有高性能、高扩展性和高安全性的特点,支持多种数据类型和多种查询语言,同时还提供了丰富的的高级功能,如相似度计算、搜索等。
Zilliz Cloud
Zilliz Cloud是一个向量数据库云平台,排名第四,VectorDBBench得分为13.20。它支持多种数据类型和多种查询语言,具有高性能、高扩展性和高安全性的特点。同时,它还提供了一系列高级功能,如相似度计算、搜索等,方便用户进行数据管理和分析。
TensorDB
TensorDB是一个分布式向量数据库系统,排名第五,VectorDBBench得分为5.75。它具有高性能、高扩展性和易用性强的特点,支持多种数据类型和多种查询语言,同时还提供了丰富的高级功能,如相似度计算、搜索等。
其他数据库
除了前五名之外,还有其他一些数据库也在排行榜中占据了一席之地。其中,cVector是一个支持大规模向量数据存储和查询的分布式数据库,VectorDBBench得分为3.96;Om-iBASE是一个支持多维数组存储和查询的分布式数据库,VectorDBBench得分为2.33;Vearch是一个支持文本和向量数据存储和查询的分布式搜索引擎,VectorDBBench得分为1.92;Transwarp Hippo是一个支持多维数组和文本数据存储和查询的分布式数据库,VectorDBBench得分为1.42;Proxima是一个支持大规模文本数据存储和查询的分布式搜索引擎,VectorDBBench得分为1.42。
三、结论
从总体情况来看,国产向量数据库排行榜的变化反映了中国数据库领域的快速发展和变革。随着技术的不断进步和市场的不断需求,我们可以预见,未来将会有更多创新的产品和服务出现,为我们带来更多更好的数据处理和分析体验。同时,也将有更多的企业和机构开始采用这些数据库来提升自己的数据处理和分析能力,为未来的发展打下坚实的基础。
在具体排名方面,Milvus
和Milvus
Cloud
分别位列第一和第二名,表现出色。Tencent Cloud VectorDB
、Zilliz Cloud
和TensorDB
等数据库也在排行榜中占据了一席之地。这些数据库都具有高性能、高扩展性和易用性强的特点,同时提供了丰富的高级功能,可以满足不同领域的需求。
总的来说,国产向量数据库排行榜的变化反映了中国数据库领域的快速发展和变革。随着技术的不断进步和市场的不断需求,我们可以预见,未来将会有更多创新的产品和服务出现,为我们带来更多更好的数据处理和分析体验。同时,也将有更多的企业和机构开始采用这些数据库来提升自己的数据处理和分析能力,为未来的发展打下坚实的基础。
一个简单的向量数据库是如何执行的呢,我们下面看一个简单的流程图。
在向量数据库中,数据以向量的形式进行存储和处理,因此需要将原始的非向量型数据转化为向量表示。数据向量化是指将非向量型的数据转换为向量形式的过程。通过数据向量化,实现了在向量数据库中进行高效的相似性计算和查询。此外,向量数据库使用不同的检索算法来加速向量相似性搜索,如 KD-Tree、VP-Tree、LSH 以及倒排索引等。在实际应用中,需要根据具体场景进行算法的选择和参数的调优,具体选择哪种算法取决于数据集的特征、数据量和查询需求,以及对搜索准确性和效率的要求。
Amazon Aurora 是专为云构建的一种兼容 MySQL 和 PostgreSQL 的关系**数据库**,它既具有传统企业数据库的性能和可用性,又具有开源数据库的精简性和成本效益。
Amazon Aurora 的速度可达标准 MySQL 数据库的五倍、标准 PostgreSQL 数据库的三倍。Amazon Aurora 由 Amazon Relational Database Service (RDS) 完全托管,Amazon RDS 可以自动执行各种耗时的管理任务,例如硬件调配、数据库的设置、修补和备份。
Amazon Aurora 采用分布式、有容错能力并且可以自我修复的存储系统,这一系统可以使每个数据库实例最高扩展到 128TB。它可实现高性能和高可用性,支持多达 15 个低延迟读取副本、时间点恢复、持续备份到 Amazon S3,以及跨三个可用区 (AZ) 复制。
向量数据库是一种专门用于存储和查询向量数据的数据库系统。它在以下领域有广泛应用:
从本质上,向量数据库是一套完整的非结构化数据解决方案。正如前文所言,向量数据库具备诸多功能——云原生、多租户、可扩展性等。但诸如 FAISS 等都是轻量级 ANN 算法库,而不是全托管的解决方案。这些算法库的主要用于构建向量索引(一种数据结构),从而加速多维向量的最近邻检索。这些算法库可以轻松应对小型数据集。但是,随着数据集和用户数量不断增长,这些算法库无法处理大规模数据。
向量数据库与 ANN 算法库另一大不同之处在于:向量数据库是一套完整的服务,而算法库是需要被集成到应用中去的。因此,从某种意义上而言,算法库是向量数据库的组件之一。这有点类似于 Elasticsearch 是一套基于 Apache Lucene 的搜索引擎解决方案。
为了具体说明这种区别, 我们来举一个例子。 在 Milvus 向量数据库中插入非结构化数据只需要三行代码即可。
from pymilvus import Collection
collection = Collection('book')
mr = collection.insert(data)
但对于 FAISS 或 ScaNN 这样的算法库,没有这样可以简单插入数据的方法。即使自己通过代码实现插入数据,ANN 算法库仍然缺乏可扩展性和多租户等特性。
向量数据库与传统数据库向量检索插件的区别 越来越多的传统关系型数据库和检索系统(如 Clickhouse、Elasticsearch等)开始提供内置的向量检索插件。例如,Elasticsearch 8.0 支持通过 Restful API 来插入向量和开展 ANN 检索。但是,向量检索插件的问题显而易见——无法提供 embedding 向量管理和检索的全栈方法。这些插件仅可在现有的架构基础上用作优化方案,使用场景十分有限。在传统数据库基础上开发非结构化数据应用就如同在汽油车中安装锂电池和电动机一样不合常理。向量检索插件不支持灵活调参,也不提供易用的 API 或 SDK。但这两点是向量数据库的基本特性。为了展示向量数据库与向量检索插件的区别,文本将以 Elasticsearch ANN 搜索引擎为例。其他向量检索插件运行方式类似,因此不进一步展开。
Elasticsearch 的 dense_vector
字段支持向量数据类型,且可以通过 knnsearch endpoint
进行向量查询。
PUT index
{"mappings": {"properties": {"image-vector": {"type": "dense_vector","dims": 128,"index": true,"similarity": "l2_norm"}}}}
PUT index/_doc
{"image-vector": [0.12, 1.34, ...]}
GET index/_knn_search
{"knn": {"field": "image-vector","query_vector": [-0.5, 9.4, ...],"k": 10,"num_candidates": 100}}
Elasticsearch 的 ANN 插件仅支持 HNSW 一种索引和 L2(欧式距离)一种距离计算方法。但下面,让我们来使用向量数据库 Milvus(以 pymilvus
为例)。
>>> field1 = FieldSchema(name='id', dtype=DataType.INT64, description='int64', is_primary=True)
>>> field2 = FieldSchema(name='embedding', dtype=DataType.FLOAT_VECTOR, description='embedding', dim=128, is_primary=False)
>>> schema = CollectionSchema(fields=[field1, field2], description='hello world collection')
>>> collection = Collection(name='my_collection', data=None, schema=schema)
>>> index_params = {
'index_type': 'IVF_FLAT',
'params': {'nlist': 1024},
"metric_type": 'L2'}
>>> collection.create_index('embedding', index_params)
>>> search_param = {
'data': vector,
'anns_field': 'embedding',
'param': {'metric_type': 'L2', 'params': {'nprobe': 16}},
'limit': 10,
'expr': 'id_field > 0'
}
>>> results = collection.search(**search_param)
虽然 Elasticsearch 和 Milvus 都支持创建索引、插入 embedding 向量、执行 ANN 向量检索,但从以上示例中可以明显看出,Milvus 具备更直观的向量检索 API(可更好服务用户),支持更多样的向量索引类型和距离计算公式(方便用户灵活调参)。Milvus 还计划在未来支持更多的索引类型,并允许用户通过类似 SQL 语句进行查询,从而进一步提升向量数据库的可用性。
简而言之,诸如 Milvus 的向量数据库比向量检索插件更好用。因为 Milvus 是从零开始构建的向量数据库,相较而言,具备更丰富的功能和更适合非结构化数据的系统架构。
向量数据库的主要应用领域为相似性检索、机器学习、人工智能等。与传统数据库比较,向量数据库具备以下几点优势:
总结一下,向量数据库在相似性检索和机器学习场景中具有显著优势,能够快速、高效检索和召回高维向量数据。
向量数据库在许多领域都有广泛的应用场景。以下是一些常见的向量数据库应用场景:
这些只是向量数据库的一些常见应用场景,实际上,向量数据库可以在许多其他领域中发挥作用,以处理和分析大规模的向量数据。
腾讯云向量数据库可以和大语言模型 LLM 配合使用。企业的私域数据在经过文本分割、向量化后,可以存储在腾讯云向量数据库中,构建起企业专属的外部知识库,从而在后续的检索任务中
,为大模型提供提示信息,辅助大模型生成更加准确的答案。
推荐系统的目标是根据用户的历史行为和偏好,向用户推荐可能感兴趣的物品。在这种场景下,将用户行为特征向量化存储在向量数据库。当发起推荐请求时,系统会基于用户特征进行相似度计算,然后返回与用户可能感兴趣的物品作为推荐结果。
智能问答系统是一种能够回答用户提出问题的智能应用,通常使用 NLP 服务和深度学习等技术实现。在问答系统中,问题和答案通常被转换为向量表示,并存储在向量数据库中。当用户提出问题时,问答系统可以通过计算向量之间的相似度,检索最相关的问题信息并返回对应的答案信息。因此,使用向量数据库来存储和检索相关的向量数据,可以提高问答系统的检索效率和准确性。
问答系统的应用场景非常广泛,例如智能客服、智能助手、智能家居等。在这些场景中,用户可以通过自然语言提问获取相关信息,例如查询产品信息、控制家居设备等。通过使用向量数据库来存储和检索相关的向量数据,问答系统可以更快速、准确地响应用户的请求,提高用户体验。
文本/图像检索任务是指在大规模文本/图像数据库中搜索出与指定图像最相似的结果,在检索时使用到的文本/图像特征可以存储在向量数据库中,通过高性能的索引存储实现高效的相似度计算,进而返回和检索内容相匹配的文本/图像结果。下图以图像检索为例介绍任务流程。
当前大型的图片素材网站和分享社交应用等,通常都有几亿甚至上百亿的图片量,只能提供简单的文字搜索或者单一的图片搜索方式,用户无法快速地找到所需的图片。而使用DashVector向量检索服务,将图片内容和文本描述以向量形式表示,并将其存储到向量数据库中。当用户搜索时,支持以文搜图,图搜图以及文字+图片组合搜索精确过滤等多种模态的搜索模式,将搜索需求也通过向量表示,在向量数据库中进行相似搜索,帮助用户迅速找到想要的图片,从而提升用户体验。
在视频检索场景中,例如视频监控系统、影视资源网站、短视频应用等平台,其中包含了各种视频数据。使用向量检索服务通过将视频数据转换为向量表示,并将其存储到向量数据库中。当用户看到一个电影片段或频频截图时,使用视频相似性搜索系统进行基于内容向量的视频检索,从而快速检索出与查询视频最相似的视频,并返回给用户作为搜索结果。同时还可以在向量数据库中使用基于聚类的视频检索方法,对视频进行聚类,并在聚类之间进行快速检索,提高检索效率和准确度。
亚马逊云科技大语言模型和向量数据库都在其各自领域带来了创新和广泛应用。在实际应用中,我们应根据需求和优势进行选择,并充分评估其性能、功能支持、扩展性以及社区支持和文档资料等因素。随着技术的不断进步和发展,这些技术将为我们带来更多创新和应用的可能性。