向量数据库的分类概况

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

  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 数据库处理高维向量的大型数据集可能需要您进行额外的优化,例如对数据进行分区或采用专门的索引技术来保持高效的查询性能。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Web视频会议:搭建CS for WebRTC

1. 下载Centos 7, WebRTC 需要Centos7版本 本文福利, 免费领取C音视频学习资料包学习路线大纲、技术视频/代码,内容包括(音视频开发,面试题,FFmpeg ,webRTC ,rtmp ,hls ,…

垂直领域对话系统架构

垂直领域对话系统是指针对特定领域或行业的需求而构建的对话系统。这种系统通常需要具备高度的专业知识和对特定领域的知识库进行深入的学习和训练,以便能够提供准确、高效、实用的服务。 垂直领域对话系统的构建通常包括以下步骤: 确定目标领域或行业…

详解JDBC

JDBC简介 概念: jdbc就是使用java语言操作关系型数据库的一套API 全称 : (Java DataBase Connectivity) Java数据库连接 本质: 官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口; 各个数据库厂商实现这套接口,提供数据库驱动j…

如何快速入门笔记软件『Obsidian』

前言 Obsidian 是基于 Markdown 语法的笔记软件,界面简洁,使用简单,功能实用,支持跨平台数据同步,实现基于双向链接的知识图谱,同时提供各种各样的扩展主题和插件 本文将会详细讲解笔记软件 Obsidian 的安…

threejs (三) 几何体

定义:用来表示物体的形状,可以定义物体的大小,可以被缩放、旋转和平移 内置几何体: 二维几何体:PlaneGeometry矩形平面、CircleGeometry圆形平面、RingGeometry环形平面、ShapeGeometry二维图形三维几何体&#xff1a…

阿里云通用算力型u1服务器和e实例有什么区别?选择攻略

阿里云服务器ECS经济型e实例和通用算力型u1实例有什么区别?如何选择?ECS经济型e实例是共享型云服务器,通用算力型u实例是企业级独享型云服务器,e实例性价比高,现在2核2G3M带宽一年99元,云服务器u1价格相对要…

腾讯云新用户优惠服务器汇总,腾讯云新用户值得买的云服务器推荐

在双11期间,市面上出现了各种云服务器活动机型,价格低廉,适合刚需或囤货用户。这些云服务器不仅拥有高性能和稳定性,还具备弹性扩展能力,能够满足各类用户的需求。 腾讯云作为国内领先的云计算服务提供商,…

Sonatype Nexus部署docker安装nexus3

Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。 1、查看可用的 Nexus3版本 可以通过 Sort by 查看其他版本的 nexus3,默认是最新版本 sonatype/nexus3:latest。 https://hub.docker.com/r/sonatype/nexus3/tags…

社交媒体可持续性挑战:TikTok的危机与应对

随着社交媒体的全球普及,TikTok已成为一个备受欢迎的短视频平台,吸引了数以亿计的用户。然而,在其增长和成功背后,也伴随着一系列可持续性挑战。本文将深入探讨TikTok面临的可持续性问题,以及它如何应对这些挑战&#…

Linux编译器---gcc/g++的使用

一、背景知识 在Linux系统中,GCC是一个非常重要的工具,因为它使得开发者可以使用C和C等语言编写高性能的程序。它主要包括四个方面: 预处理(进行宏替换) 编译(生成汇编) 汇编(生成机器可识别代码&#xff0…

springboot vue mysql的在线竞拍拍卖系统

基于SpringBoot的在线拍卖系统,springboot vue mysql (毕业论文10168字以上,共34页,程序代码,MySQL数据库) 【运行环境】 IDEA, JDK1.8, Mysql, Node, Vue 【技术栈】 Java, SpringBoot, Jquery, Layui, MYSQL, HTML, CSS, JAVASCRIPT, Ajax 7707 java毕业设计 springboot v…

JTS: 19 IndexedPointInAreaLocator 判断是否在点在面的内部

文章目录 版本代码 版本 org.locationtech.jts:jts-core:1.19.0 链接: github 代码 package pers.stu.algorithm;import org.locationtech.jts.algorithm.locate.IndexedPointInAreaLocator; import org.locationtech.jts.geom.Coordinate; import org.locationtech.jts.geom…

web 自动化测试,这8 个核心知识点,你一定得掌握

使用 cypress 进行端对端测试,和其他的一些框架有一个显著不同的地方,它使用 JavaScript 作为编程语言。 传统主流的 selenium 框架是支持多语言的,大多数 QA 会的 python 和 Java 语言都可以编写 selenium 代码,遇到需要编写 js…

一文详解进销存管理系统!

一、什么是进销存管理系统? 进销存软件是一种针对制造业企业设计的管理软件系统,旨在协调和优化企业的生产、采购、销售以及库存管理等方面的活动。该系统的主要目标是提高企业的生产效率、降低库存成本、优化供应链,并增强企业的整体运营效…

【中间件篇-Redis缓存数据库08】Redis设计、实现、redisobject对象设计、多线程、缓存淘汰算法

Redis的设计、实现 数据结构和内部编码 type命令实际返回的就是当前键的数据结构类型,它们分别是:string(字符串)hash(哈希)、list(列表)、set(集合)、zset (有序集合),但这些只是Redis对外的数据结构。 实际上每种数据结构都有自己底层的…

<MySQL> MySQL中查询(retrieve)数据的基础操作

目录 一、查询(retrieve) 1.1 查询数据的方式概述 二、全列查询 2.1 语法 2.2 操作演示 2.3 全列查询需要慎重使用 三、指定列查询 3.1 语法 3.2 操作演示 四、表达式查询 4.1 语法 4.2 操作演示 4.3 null 参与表达式计算 4.3 表达式查询存…

【Proteus仿真】【Arduino单片机】简易计算器设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器,使用PCF8574、LCD1602液晶、4*4矩阵键盘等。 主要功能: 系统运行后,操作矩阵按键可实现简单四则运算。 二、软件设计 /* …

JDK并发修改异常的一个“BUG“

很多电商公司早期的架构都是基于PHP,所以我身边会有很多很厉害的PHP老哥,但现在都在写Java。昨天看到他在看Java的并发修改异常,正打算秀一波操作,却被他的一个问题难住了: public class ForeachTest {public static …

高防IP可以抵御哪些恶意攻击

高防IP协议可以隐藏用户的站点,使得攻击者无法发现恶意攻击的目标网络资源,从而提高了源站的安全性。能够有效抵御常见的恶意攻击类型ICMPFlood、UDPFlood、 TCPFlood、SYNFlood、ACKFlood等,帮助游戏、金 融、电子商务、互联网、政企等行业抵…

centos7 在线安装python3

在线安装命令 yum install -y python3 输入命令之后等待安装完成 查看版本 查看版本3 输入命令 python3 看到版本号为3.6.8 查看版本2 输入命令 python2 看到版本号为2.7.5