向量数据库的分类概况

保存和检索矢量数据的五种方法:

  1. 像 Pinecone 这样的纯矢量数据库
  2. 全文搜索数据库,例如 ElasticSearch
  3. 矢量库,如 Faiss、Annoy 和 Hnswlib
  4. 支持矢量的NoSQL 数据库,例如 MongoDB、Cosmos DB 和 Cassandra
  5. 支持矢量的SQL 数据库,例如 SingleStoreDB 或 PostgreSQL
    1.纯矢量数据库
    纯向量数据库专门用于存储和检索向量。示例包括 Chroma、LanceDB、Marqo、Milvus/Zilliz、Pinecone、Qdrant、Vald、Vespa、Weaviate 等。

    在纯矢量数据库中,数据是根据对象或数据点的矢量表示来组织和索引的。这些向量可以是各种类型数据的数值表示,包括图像、文本文档、音频文件或任何其他形式的结构化或非结构化数据。

    纯载体数据库的优点

    利用索引技术进行高效的相似性搜索
    大型数据集和高查询工作负载的可扩展性
    支持高维数据
    支持基于 HTTP 和 JSON 的 API
    对向量运算的本机支持,包括加法、减法、点积、余弦相似度

    纯载体数据库的缺点

    仅矢量:纯矢量数据库可以存储矢量和一些元数据,但仅此而已。对于大多数企业人工智能用例,您可能需要包括实体、属性和层次结构(图形)、位置(地理空间)等的描述等数据。
    有限或没有 SQL 支持:纯向量数据库通常使用自己的查询语言,这使得很难对向量和相关信息运行传统分析,或者将向量和其他数据类型结合起来。
    没有完整的 CRUD。纯向量数据库并不是真正为创建、更新和删除操作而设计的。对于读取操作,数据必须首先进行矢量化和索引以进行持久化和检索。这些数据库专注于提取矢量数据、对其进行索引以进行有效的相似性搜索以及基于矢量相似性查询最近邻居。
    建立索引非常耗时。索引矢量数据计算量大、成本高且耗时。这使得很难将新数据用于生成人工智能应用程序。

    被迫权衡。根据所使用的索引技术,矢量数据库要求客户在准确性、效率和存储之间进行权衡。例如,Pinecone 的 IMI 索引(反向多重索引,ANN 的一种变体)会产生存储开销,并且计算量很大。它主要针对静态或半静态数据集而设计,如果频繁添加、修改或删除向量,则可能会受到挑战。Milvus 使用称为“产品量化”和“分层可导航小世界”(HNSW) 的索引,这些索引是权衡搜索准确性和效率的近似技术。此外,其索引需要配置各种参数,使用不正确的参数选择可能会影响搜索结果的质量或导致效率低下。

    企业特征值得怀疑。许多矢量数据库在基本功能上严重落后,包括 ACID 事务、灾难恢复、RBAC、元数据过滤、数据库可管理性、可观察性等。这可能会导致严重的业务问题 - 类似于丢失所有数据的客户。

    对于许多客户来说,矢量数据库的局限性将归结为性价比。鉴于矢量运算的计算量大,OSS矢量数据库或矢量库成为特别大规模应用程序的可行替代方案。

    2. 全文检索数据库

    此类别包括 Elastic/Lucene、OpenSearch 和 Solr 等数据库。

    优点

    --高可扩展性和性能,特别是对于非结构化文本文档
    --丰富的文本检索功能,例如内置外语支持、可自定义分词器、词干分析器、停止列表和 N 元语法
    --基于开源库(Apache Lucene)
    --大型集成生态系统,包括向量库

    矢量数据全文检索数据库的局限性

    --未针对向量搜索或相似性匹配进行优化
    --专为全文搜索而不是语义搜索而设计,因此基于其构建的应用程序不会具有检索增强生成 (RAG) 和其他用例的完整上下文。为了实现语义搜索功能,这些数据库需要使用其他工具以及大量的自定义评分和相关性模型进行扩充。
    --其他数据格式(图像、音频、视频)的应用有限
    --缺乏 GPU 支持

    3. 向量库

    对于许多开发人员来说,Faiss、Annoy 和 Hnswlib 等开源矢量库是一个不错的起点。

    Faiss是一个用于密集向量的相似性搜索和聚类的库。Annoy(Approximate Nearest Neighbors Oh Yeah)是一个用于 ANN 搜索的轻量级库。Hnswlib是一个实现 ANN 搜索的 HNSW 算法的库。

    开源向量库的优点

    --快速最近邻搜索
    --专为高维而打造
    --支持面向 ANN 的索引结构,包括倒排文件、乘积量化和随机投影
    --支持推荐系统、图像搜索和 NLP 的用例
    --SIMD(单指令、多数据)和 GPU 支持可加速矢量相似性搜索操作

    开源向量库的局限性

    --繁琐的维护和集成
    --与精确方法相比,牺牲搜索精度
    --自带基础设施矢量库需要大量内存和计算资源,它们需要您构建和维护复杂的基础设施,以便为应用程序需求提供足够的 CPU、GPU 和内存资源。
    --对元数据过滤、SQL、CRUD 操作、事务、高可用性、灾难恢复以及备份和恢复的支持有限或不支持

         4.支持向量的NoSQL数据库

该类别包括:

  1. NoSQL 数据库,例如 MongoDB、Cassandra/DataStax Astra 和 CosmosDB。
  2. 键值数据库,例如 Redis
  3. 其他特殊用途数据库,如 Neo4j(

几乎所有这些 NoSQL 数据库最近才通过添加矢量搜索扩展而变得支持矢量。

优点

  • 对于其特定的数据模型,NoSQL 数据库提供高性能和规模。Neo4j(图形数据库)可以与社交网络或知识图的法学硕士结合使用。具有矢量功能的时间序列数据库(例如 kdb)也许能够将矢量数据与金融市场数据结合起来。

局限性

  • NoSQL 数据库的向量功能是基本的/新生的/未经测试的。许多 NoSQL 数据库今年才添加了向量支持。五月,Cassandra 宣布计划添加矢量搜索。4 月份,Rockset 宣布支持基本向量搜索,Azure Cosmos DB于 5 月份宣布支持 MongoDB vCore 的向量搜索。DataStax和MongoDB就在本月宣布了矢量搜索功能(均为预览版)!
  • NoSQL 数据库的矢量搜索性能差异很大,具体取决于支持的矢量函数、索引方法和硬件加速。
    5. 支持向量的 SQL 数据库
         该类别由一组非常小的数据库组成——SingleStoreDB、PostgreSQL 的 pgvector/Supabase Vector(测试版)、Clickhouse、Kinetica 和 Rockset。我们预计更多流行的数据库会出现在这个列表中,因为向已建立的数据库添加基本矢量功能并不是一件繁重的工作。事实上,矢量数据库 Chroma 是从 ClickHouse 中诞生的。
    更新:2023 年 9 月,Oracle 也宣布了矢量搜索功能。

    支持矢量的 SQL 数据库的优点

    --具有点积、余弦相似度、欧氏距离和曼哈顿距离等功能的幂向量搜索。
    --使用相似度分数查找 K 最近邻
    --多模型 SQL 数据库提供混合搜索,并且可以将向量与其他数据结合起来以获得更有意义的结果
    --大多数 SQL 数据库可以部署为服务,并在任何主要云上完全管理。

    SQL 数据库用于矢量数据处理的局限性

    --SQL 数据库是为结构化数据而设计的。生成式人工智能应用程序背后的语料库主要包含非结构化数据,例如图像、音频和文本。虽然关系数据库通常可以存储文本和 blob,但大多数数据库不会对这种非结构化数据进行矢量化以用于机器学习。
    --大多数 SQL 数据库尚未针对矢量搜索进行优化。关系数据库的索引和查询机制主要是为结构化数据设计的,而不是高维向量数据。虽然用于矢量数据处理的 SQL 数据库的性能可能并不出色,但支持矢量的 SQL 数据库可能会添加扩展或新功能来支持矢量搜索。例如,虽然 SingleStoreDB 支持精确的 k-NN 搜索,但我们打算添加 ANN 搜索来提高非常大、高维数据集的性能。
    --传统的 SQL 数据库无法横向扩展,因此其性能会随着数据的增长而下降。使用 SQL 数据库处理高维向量的大型数据集可能需要您进行额外的优化,例如对数据进行分区或采用专门的索引技术来保持高效的查询性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/141425.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis键(Keys)

前言 在 Redis 中,键(Keys)是非常重要的概念,它们代表了存储在数据库中的数据的标识符。对键的有效管理和操作是使用 Redis 数据库的关键一环,它直接影响到数据的存取效率、系统的稳定性和开发的便利性。 本文将深入…

基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖(四)

编辑员工和分类模块功能开发 1. 编辑员工1.1 需求分析与设计1.1.1 产品原型1.1.2 接口设计 1.2 代码开发1.2.1 回显员工信息功能1.2.2 修改员工信息功能 1.3 功能测试 2. 分类模块功能开发2.1 需求分析与设计2.1.1 产品原型2.1.2 接口设计2.1.3 表设计 2.2 代码实现2.2.1 Mappe…

HarmonyOS开发(三):ArkTS基础

1、ArkTS演进 Mozilla创建了JS ---> Microsoft创建了TS ----> Huawei进一步推出ArkTS 从最初的基础逻辑交互(JS),到具备类型系统的高效工程开发(TS),再到融合声明式UI、多维状态管理等丰富的应用开发能力&…

【算法训练-链表 零】链表高频算法题看这一篇就够了

一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目 题目题干直接给出对应博客链接,这里只给出简单思路、代码实现、复杂度分析 反转链表 依据难度等级分别为反转链表、…

Crypto | Affine password 第二届“奇安信”杯网络安全技能竞赛

题目描述: 明文经过仿射函数y3x9加密之后变为JYYHWVPIDCOZ,请对其进行解密,flag的格式为flag{明文的大写形式}。 密文: JYYHWVPIDCOZ解题思路: 1、使用在线网站直接破解或手工计算破解,获得flag。&#xf…

使用Nginx和uwsgi在自己的服务器上部署python的flask项目

Nginx 是一个高性能的 HTTP 和反向代理服务。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。 Nginx 专为性能优化而开发,性能是其最重要的考量指标,实现上非常注重效率,能经受…

4.CentOS7安装MySQL5.7

CentOS7安装MySQL5.7 2023-11-13 小柴你能看到嘛 哔哩哔哩视频地址 https://www.bilibili.com/video/BV1jz4y1A7LS/?vd_source9ba3044ce322000939a31117d762b441 一.解压 tar -xvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz1.在/usr/local解压 tar -xvf mysql-5.7.44-…

lc307.区域和检索 - 数组可修改

暴力解法 创建方法,通过switch-case判断所需要调用的方法。 public class RegionsAndSertches {public static void main(String[] args) {String[] str new String[]{"NumArray", "sumRange", "update", "sumRange"};i…

基于RK3568的跑步机方案

I 方案简介 一、跑步机的来历 跑步机是家庭及健身房常备的健身器材,而且是当今家庭健身器材中最简单的一种,是家庭健身器的最佳选择。1965年北欧芬兰唐特力诞生了全球第一台家用的跑步机,设计师根据传速带的原理改变而成。 二、…

人工智能基础_机器学习026_L1正则化_套索回归权重衰减梯度下降公式_原理解读---人工智能工作笔记0066

然后我们继续来看套索回归,也就是线性回归,加上了一个L1正则化对吧,然后我们看这里 L1正则化的公式是第二个,然后第一个是原来的线性回归,然后 最后一行紫色的,是J= J0+L1 对吧,其实就是上面两个公式加起来 然后我们再去看绿色的 第一行,其实就是原来线性回归的梯度下降公式…

Vatee万腾科技决策力的引领创新:Vatee数字化视野的崭新天地

在数字时代的激烈竞争中,Vatee万腾以其科技决策力的引领,开创了数字化视野的崭新天地。这并不仅仅是一场技术的飞跃,更是一次对未来的深刻洞察和引领创新的勇敢实践。 Vatee万腾的科技决策力不仅仅停留在数据分析和算法的运用,更是…

BlendTree动画混合算法详解

【混合本质】 如果了解骨骼动画就知道,某一时刻角色的Pose是通过两个邻近关键帧依次对所有骨骼插值而来,换句话说就是由两个关键帧混合而来。 那么可不可以由多个关键帧混合而来呢?当然可以。 更多的关键帧可以来自不同的动画片段&#xf…

nacos适配达梦数据库

一、下载源码 源码我直接下载gitee上nacos2.2.3的,具体链接:https://gitee.com/mirrors/Nacos/tree/2.2.3,具体如下图: 二、集成达梦数据库驱动 解压源码包,用idea打开源码,等idea和maven编译完成&#xff…

小程序中如何设置多门店/多人/多商品价格库存等复杂场景设置

有些商家希望打造小程序平台,在这个平台上有多个商家入驻,他们分别售卖自己的商品。而有些商家有多个连锁店,连锁店的商品都是一样的,但不同的连锁店有不同的库存和价格。这些业务在采云小程序中是怎么支持的呢?下面具…

使用 `open-uri.with_proxy` 方法打开网页

Ruby 爬虫程序如下: require open-uri require nokogiri# 定义代理信息 proxy_host jshk.com.cn# 定义要爬取的网页 URL url http://www.example.com# 使用代理信息打开网页 open-uri.with_proxy(proxy_host, proxy_port) do |proxy|# 使用 Nokogiri 库解析网页内…

web前端开发第3次Dreamweave课堂练习/html练习代码《网页设计语言基础练习案例》

目标图片: 文字素材: 网页设计语言基础练习案例 ——几个从语义上和文字相关的标签 * h标签(h1~h6):用来定义网页的标题,成对出现。 * p标签:用来设置网页的段落,成对出现。 * b…

微信小程序授权登陆 getUserProfile

目录 前言 步骤: 示例代码: 获取用户信息的接口变化历史: 注意事项: 前言 在微信小程序中,你可以使用 getUserProfile 接口来获取用户的个人信息,并进行授权登录。以下是使用 getUserProfile 的步骤: 小程序发了…

file2Udp增量日志转出Udp简介

https://gitee.com/tianjingle/file2udp 很多时候服务产生的日志需要进行汇总,这种统一日志处理的方式有elb,而且很多日志组件也支持日志转出的能力。但是从广义上来说是定制化的,我们需要一个小工具实现tail -f的能力,将增量日志…

U-Mail邮件中继有效解决海外邮件发送不畅难题

相信不少企业都经历过类似的问题,在跟国外客户发送电子邮件的过程中,经常会遇到邮件发不过去、邮件隔了很久对方才收到,或者是邮件退信等情况出现。对此,U-Mail技术专家李工解释到,导致海外通邮不畅主要有以下三个原因…

ADFS 高可用配置 + NLB配置(Windows网络负载均衡)

ADFS 高可用配置 NLB配置(Windows网络负载均衡) ADFS安装配置NLB配置节点 TEST-ADFS-01 网络负载平衡配置节点 TEST-ADFS-02 网络负载平衡修改CRM配置 ADFS实现高可用负载均衡有两种,主要是在数据库的选择方式: windows自带的内…