• 向量数据库——AI时代的基座


    1.前言

    向量数据库在构建基于大语言模型的行业智能应用中扮演着重要角色。大模型虽然能回答一般性问题,但在垂直领域服务中,其知识深度、准确度和时效性有限。为了解决这一问题,企业可以利用向量数据库结合大模型和自有知识资产,构建垂直领域的智能服务。向量数据库存储处理向量数据,提供高效的相似度搜索和检索功能。通过向量嵌入,将企业知识库文档和数据转化为向量表示,并与大模型进行交互,实现专有、私域的垂直的行业智能化应用。

    2.向量数据库概述

    2.1什么是向量

    向量数据库中的向量指的是用于表示数据特征的数学概念。在计算机科学和数据处理领域,向量通常是指由一组有序的数值构成的数据结构。这些数值可以代表各种不同的特征,比如图像的像素值、文本的词频、音频的频谱等。

    向量数据库通过存储管理大量的向量数据,可以支持各种数据挖掘、相似性搜索、聚类分析等任务。在实际应用中,向量数据库可以用于人脸识别、图像搜索、推荐系统、自然语言处理等领域,通过对向量之间的相似度进行计算和比较,来实现各种有用的功能和应用。

    为了高效地支持向量存储和检索,向量数据库通常会使用各种索引结构和算法,比如KD树LSH(局部敏感哈希)近似最近邻算法(ANN)等。这些技术可以帮助加速向量的查询和匹配过程,从而提高数据库的性能和效率。

    2.2什么是向量数据库

    image-20231113102959994

    向量数据库(Vector Database),也叫矢量数据库,主要用来存储和处理向量数据。

    在数学中,向量是有大小和方向的量,可以使用带箭头的线段表示,箭头指向即为向量的方向,线段的长度表示向量的大小。两个向量的距离或者相似性可以通过汉明距离、欧式距离或者余弦距离得到。

    图像、文本和音视频这种非结构化数据都可以通过某种变换或者嵌入学习转化为向量数据存储到向量数据库中,从而实现对图像、文本和音视频的相似性搜索和检索。这意味着您可以使用向量数据库根据语义或上下文含义查找最相似或相关的数据,而不是使用基于精确匹配或预定义标准查询数据库的传统方法。

    image-20231113104809189

    向量数据库的主要特点是高效存储与检索。利用索引技术和向量检索算法能实现高维大数据下的快速响应。向量数据库也是一种数据库,除了要管理向量数据外,还是支持对传统结构化数据的管理。实际使用时,有很多场景会同时对向量字段和结构化字段进行过滤检索,这对向量数据库来说也是一种挑战。

    3.向量数据库哪家好?

    在谈论哪一家更好之前,我们首先来看一下关于2023年以来近期向量数据库的一些排名总览吧。

    2023年7月国产向量数据库排行榜
    排名向量数据库VectorDBBench得分
    1Milvus22.70
    2Milvus CloudVectorDBBench得分16.30
    3Tencent Cloud VectorDBVectorDBBench得分13.40
    4Zilliz Cloud13.20
    5TensorDB5.75
    6cVector3.96
    7Om-iBASE2.33
    8Vearch1.92
    9Transwarp Hippo1.42
    10Proxima1.42

    3.1总体情况

    根据VectorDBBench.com数据,2023年7月的国产向量数据库排行榜中,排名前十的向量数据库分别是Milvus、Milvus Cloud、Tencent Cloud VectorDB、Zilliz Cloud、TensorDB、cVector、Om-iBASE、Vearch、Transwarp Hippo和Proxima。这些数据库分别来自不同的公司和技术团队,涵盖了文档、图形、空间数据等多种类型的数据。

    image-20231113103401895

    3.2各数据库情况

    Milvus

    img

    Milvus是排名第一的向量数据库,VectorDBBench得分为22.70。它是国内首个支持海量向量数据存储和查询的开源向量数据库,具有高性能、高扩展性和易用性强的特点。Milvus还提供了一系列高级功能,如向量搜索、相似度计算、聚类等,可以满足不同领域的需求。

    Milvus Cloud

    img

    Milvus Cloud是Milvus的云服务版本,排名第二,VectorDBBench得分为16.30。它提供了云端向量数据库服务,可以快速搭建云端向量数据库平台,支持多种数据源接入和多种查询语言,同时还提供了可视化界面和API接口,方便用户进行数据管理和查询。

    Tencent Cloud VectorDB

    img

    Tencent Cloud VectorDB是腾讯云推出的向量数据库产品,排名第三,VectorDBBench得分为13.40。它具有高性能、高扩展性和高安全性的特点,支持多种数据类型和多种查询语言,同时还提供了丰富的的高级功能,如相似度计算、搜索等。

    Zilliz Cloud

    img

    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。

    三、结论

    img

    从总体情况来看,国产向量数据库排行榜的变化反映了中国数据库领域的快速发展和变革。随着技术的不断进步和市场的不断需求,我们可以预见,未来将会有更多创新的产品和服务出现,为我们带来更多更好的数据处理和分析体验。同时,也将有更多的企业和机构开始采用这些数据库来提升自己的数据处理和分析能力,为未来的发展打下坚实的基础。

    img

    在具体排名方面,MilvusMilvus Cloud分别位列第一和第二名,表现出色。Tencent Cloud VectorDBZilliz CloudTensorDB等数据库也在排行榜中占据了一席之地。这些数据库都具有高性能、高扩展性和易用性强的特点,同时提供了丰富的高级功能,可以满足不同领域的需求。

    总的来说,国产向量数据库排行榜的变化反映了中国数据库领域的快速发展和变革。随着技术的不断进步和市场的不断需求,我们可以预见,未来将会有更多创新的产品和服务出现,为我们带来更多更好的数据处理和分析体验。同时,也将有更多的企业和机构开始采用这些数据库来提升自己的数据处理和分析能力,为未来的发展打下坚实的基础。

    4.向量数据库的原理

    4.1概述

    一个简单的向量数据库是如何执行的呢,我们下面看一个简单的流程图。

    image-20231113104656499

    在向量数据库中,数据以向量的形式进行存储和处理,因此需要将原始的非向量型数据转化为向量表示。数据向量化是指将非向量型的数据转换为向量形式的过程。通过数据向量化,实现了在向量数据库中进行高效的相似性计算和查询。此外,向量数据库使用不同的检索算法来加速向量相似性搜索,如 KD-Tree、VP-Tree、LSH 以及倒排索引等。在实际应用中,需要根据具体场景进行算法的选择和参数的调优,具体选择哪种算法取决于数据集的特征、数据量和查询需求,以及对搜索准确性和效率的要求。

    4.2向量数据库的优点

    image-20231113104853873

    5.Amazon向量数据库的AI应用

    5.1AmazonAurora数据库概述

    Amazon Aurora 是专为云构建的一种兼容 MySQL 和 PostgreSQL 的关系**数据库**,它既具有传统企业数据库的性能和可用性,又具有开源数据库的精简性和成本效益。

    Amazon Aurora 的速度可达标准 MySQL 数据库的五倍、标准 PostgreSQL 数据库的三倍。Amazon Aurora 由 Amazon Relational Database Service (RDS) 完全托管,Amazon RDS 可以自动执行各种耗时的管理任务,例如硬件调配、数据库的设置、修补和备份。

    Amazon Aurora 采用分布式、有容错能力并且可以自我修复的存储系统,这一系统可以使每个数据库实例最高扩展到 128TB。它可实现高性能和高可用性,支持多达 15 个低延迟读取副本、时间点恢复、持续备份到 Amazon S3,以及跨三个可用区 (AZ) 复制。

    5.2AmazonAurora数据库的优势

    • 高性能和可扩展性: 获得 5 倍于标准 MySQL 的吞吐量,以及 3 倍于标准 PostgreSQL 的吞吐量。您可以根据需求变化轻松扩展和缩小数据库部署,包括从较小的实例类型到较大的实例类型,或者可以让 Aurora 无服务器自动为您处理扩展。要扩展读取容量和性能,您可以在三个可用区中添加多达 15 个低延迟只读副本。Amazon Aurora 会根据需要自动增加存储空间,每个数据库实例最多可达 128 TB。
    • 高可用性和耐用性: Amazon Aurora 旨在提供超过 99.99% 的可用性,跨 3 个可用区复制 6 个数据副本,并将数据持续备份到 Amazon S3。它可以透明地从物理存储故障中恢复;实例故障转移通常需要不到 30 秒的时间。
    • MySQL 和 PostgreSQL 兼容: Amazon Aurora 数据库引擎与现有的 MySQL 和 PostgreSQL 开源数据库完全兼容,并会定期增加新版本的兼容性。这意味着您可以使用标准的 MySQL 或 PostgreSQL 导入/导出工具或快照轻松地将 MySQL 或 PostgreSQL 数据库迁移到 Aurora。这还表示您已经在现有数据库中使用的代码、应用程序、驱动程序和工具可以与 Amazon Aurora 一起使用,只需进行少量更改或根本无需更改。
    • 完全托管式: Amazon Aurora 完全由 Amazon Relational Database Service (RDS) 管理。有了它,您无需担心硬件调配、软件修补、设置、配置或备份等数据库管理任务。Aurora 会自动持续地监控您的数据库并将其备份到 Amazon S3,因此可实现精细的时间点恢复。您可以使用 Amazon CloudWatch、增强监控或性能详情来监控数据库性能,这是一种易于使用的工具,可帮助您快速检测性能问题。

    5.3Aurora 数据库相关案例

    image-20231113105718621

    6.向量数据库的应用领域

    向量数据库是一种专门用于存储和查询向量数据的数据库系统。它在以下领域有广泛应用:

    1. 相似性搜索:向量数据库可以高效地执行相似性搜索,例如图像检索、音频检索和视频检索等。通过将向量表示存储在数据库中,可以快速找到与查询向量最相似的数据。
    2. 推荐系统:向量数据库可以用于构建个性化推荐系统。通过将用户和物品表示为向量,可以根据它们之间的相似度来进行推荐。
    3. 自然语言处理:向量数据库可以用于存储和查询文本向量,例如词向量、句向量和段落向量。这对于一些需要大规模文本数据处理的任务非常有用。

    6.1向量数据库可以处理大规模数据,而 ANN 算法库只能处理小型的数据集

    从本质上,向量数据库是一套完整的非结构化数据解决方案。正如前文所言,向量数据库具备诸多功能——云原生、多租户、可扩展性等。但诸如 FAISS 等都是轻量级 ANN 算法库,而不是全托管的解决方案。这些算法库的主要用于构建向量索引(一种数据结构),从而加速多维向量的最近邻检索。这些算法库可以轻松应对小型数据集。但是,随着数据集和用户数量不断增长,这些算法库无法处理大规模数据。

    img

    6.2向量数据库一套完整的解决方案,而 ANN 算法库只是其中一部分

    向量数据库与 ANN 算法库另一大不同之处在于:向量数据库是一套完整的服务,而算法库是需要被集成到应用中去的。因此,从某种意义上而言,算法库是向量数据库的组件之一。这有点类似于 Elasticsearch 是一套基于 Apache Lucene 的搜索引擎解决方案。

    为了具体说明这种区别, 我们来举一个例子。 在 Milvus 向量数据库中插入非结构化数据只需要三行代码即可。

    from pymilvus import Collection
    collection = Collection('book')
    mr = collection.insert(data)
    
    • 1
    • 2
    • 3

    但对于 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}}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    虽然 Elasticsearch 和 Milvus 都支持创建索引、插入 embedding 向量、执行 ANN 向量检索,但从以上示例中可以明显看出,Milvus 具备更直观的向量检索 API(可更好服务用户),支持更多样的向量索引类型和距离计算公式(方便用户灵活调参)。Milvus 还计划在未来支持更多的索引类型,并允许用户通过类似 SQL 语句进行查询,从而进一步提升向量数据库的可用性。

    简而言之,诸如 Milvus 的向量数据库比向量检索插件更好用。因为 Milvus 是从零开始构建的向量数据库,相较而言,具备更丰富的功能和更适合非结构化数据的系统架构。

    6.3向量数据库的优势

    向量数据库的主要应用领域为相似性检索、机器学习、人工智能等。与传统数据库比较,向量数据库具备以下几点优势:

    • 高维向量检索:向量数据库可以高效进行高维向量相似性检索,非常适用于机器学习和人工智能应用中,如:图片识别、自然语言处理、推荐系统等。
    • 可扩展性:向量数据库支持水平扩展,因此可以存储和处理海量向量数据。在实时检索和召回海量数据的应用场景中,向量数据库的可扩展性显得至关重要。
    • 灵活性:向量数据库可以处理多样的向量数据类型,包括稀疏向量和稠密向量。此外,向量数据库还可以处理其他的数据类型,包括:数字、文本、二进制数据(Binary)。
    • 性能:相较于传统数据,使用向量数据库进行相似性检索更高效。
    • 支持选择不同索引结构:向量数据库支持用户根据不同的应用场景和数据类型构建不同的索引结构。

    总结一下,向量数据库在相似性检索和机器学习场景中具有显著优势,能够快速、高效检索和召回高维向量数据。

    7.4向量数据库有哪些应用场景?

    向量数据库在许多领域都有广泛的应用场景。以下是一些常见的向量数据库应用场景:

    1. 相似度搜索: 向量数据库可以用于相似度搜索,例如图像搜索、音频搜索和视频搜索。通过将图像、音频或视频转换为向量表示,可以使用向量数据库来快速检索相似的图像、音频片段或视频片段。
    2. 推荐系统: 向量数据库可以用于构建个性化推荐系统,根据用户的历史行为和兴趣,将用户和物品表示为向量,并使用向量相似度搜索来获取最相关的推荐物品。
    3. 自然语言处理: 向量数据库可以用于文本相似度匹配和语义搜索。通过将文本转换为向量表示,可以使用向量数据库来搜索与查询文本相似的文档、句子或短语。
    4. 人脸识别: 向量数据库可以用于人脸识别和人脸搜索。通过将人脸图像转换为向量表示,可以使用向量数据库来搜索与查询人脸相似的图像或人脸。
    5. 基因组学: 向量数据库可以用于基因组学研究和基因序列比对。通过将基因序列转换为向量表示,可以使用向量数据库来搜索与查询相似的基因序列
    6. 网络安全: 向量数据库可以用于网络入侵检测和恶意软件分析。通过将网络流量、日志和恶意软件样本转换为向量表示,可以使用向量数据库来搜索与已知恶意行为相似的网络流量或恶意软件。
    7. 物体识别:向量数据库可以用于物体识别和物体搜索。通过将物体的特征向量存储在向量数据库中,可以使用向量相似度搜索来识别和搜索相似的物体。

    这些只是向量数据库的一些常见应用场景,实际上,向量数据库可以在许多其他领域中发挥作用,以处理和分析大规模的向量数据。

    大模型知识库

    腾讯云向量数据库可以和大语言模型 LLM 配合使用。企业的私域数据在经过文本分割、向量化后,可以存储在腾讯云向量数据库中,构建起企业专属的外部知识库,从而在后续的检索任务中,为大模型提供提示信息,辅助大模型生成更加准确的答案。

    img

    推荐系统

    推荐系统的目标是根据用户的历史行为和偏好,向用户推荐可能感兴趣的物品。在这种场景下,将用户行为特征向量化存储在向量数据库。当发起推荐请求时,系统会基于用户特征进行相似度计算,然后返回与用户可能感兴趣的物品作为推荐结果。

    img

    问答系统

    智能问答系统是一种能够回答用户提出问题的智能应用,通常使用 NLP 服务和深度学习等技术实现。在问答系统中,问题和答案通常被转换为向量表示,并存储在向量数据库中。当用户提出问题时,问答系统可以通过计算向量之间的相似度,检索最相关的问题信息并返回对应的答案信息。因此,使用向量数据库来存储和检索相关的向量数据,可以提高问答系统的检索效率和准确性。

    img

    问答系统的应用场景非常广泛,例如智能客服、智能助手、智能家居等。在这些场景中,用户可以通过自然语言提问获取相关信息,例如查询产品信息、控制家居设备等。通过使用向量数据库来存储和检索相关的向量数据,问答系统可以更快速、准确地响应用户的请求,提高用户体验。

    文本/图像检索

    文本/图像检索任务是指在大规模文本/图像数据库中搜索出与指定图像最相似的结果,在检索时使用到的文本/图像特征可以存储在向量数据库中,通过高性能的索引存储实现高效的相似度计算,进而返回和检索内容相匹配的文本/图像结果。下图以图像检索为例介绍任务流程。

    img

    图库类网站多模态搜索场景

    当前大型的图片素材网站和分享社交应用等,通常都有几亿甚至上百亿的图片量,只能提供简单的文字搜索或者单一的图片搜索方式,用户无法快速地找到所需的图片。而使用DashVector向量检索服务,将图片内容和文本描述以向量形式表示,并将其存储到向量数据库中。当用户搜索时,支持以文搜图,图搜图以及文字+图片组合搜索精确过滤等多种模态的搜索模式,将搜索需求也通过向量表示,在向量数据库中进行相似搜索,帮助用户迅速找到想要的图片,从而提升用户体验。

    image.png

    视频检索场景

    在视频检索场景中,例如视频监控系统、影视资源网站、短视频应用等平台,其中包含了各种视频数据。使用向量检索服务通过将视频数据转换为向量表示,并将其存储到向量数据库中。当用户看到一个电影片段或频频截图时,使用视频相似性搜索系统进行基于内容向量的视频检索,从而快速检索出与查询视频最相似的视频,并返回给用户作为搜索结果。同时还可以在向量数据库中使用基于聚类的视频检索方法,对视频进行聚类,并在聚类之间进行快速检索,提高检索效率和准确度。

    image.png

    7.总结

    亚马逊云科技大语言模型和向量数据库都在其各自领域带来了创新和广泛应用。在实际应用中,我们应根据需求和优势进行选择,并充分评估其性能、功能支持、扩展性以及社区支持和文档资料等因素。随着技术的不断进步和发展,这些技术将为我们带来更多创新和应用的可能性。

  • 相关阅读:
    python基础:循环的总结
    ThinkPHP5目录结构
    Vue中的query传参和动态路由传参
    【leetcode】 盛最多水的容器
    关于js_Element对象_属性和获取元素位置的方法
    KingbaseES客户端编程接口指南-ODBC(4. 创建数据源)
    【Vue】组件化编程
    计算机毕业设计Java高铁在线购票系统(源码+系统+mysql数据库+lw文档)
    ARMday04(开发版简介、LED点灯)
    局部线性嵌入(Locally Linear Embedding, LLE)
  • 原文地址:https://blog.csdn.net/weixin_47343544/article/details/134504781