向量数据库的分类概况
保存和检索矢量数据的五种方法:
- 像 Pinecone 这样的纯矢量数据库
- 全文搜索数据库,例如 ElasticSearch
- 矢量库,如 Faiss、Annoy 和 Hnswlib
- 支持矢量的NoSQL 数据库,例如 MongoDB、Cosmos DB 和 Cassandra
- 支持矢量的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数据库
该类别包括:
- NoSQL 数据库,例如 MongoDB、Cassandra/DataStax Astra 和 CosmosDB。
- 键值数据库,例如 Redis
- 其他特殊用途数据库,如 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 数据库处理高维向量的大型数据集可能需要您进行额外的优化,例如对数据进行分区或采用专门的索引技术来保持高效的查询性能。
相关文章:
向量数据库的分类概况
保存和检索矢量数据的五种方法: 像 Pinecone 这样的纯矢量数据库 全文搜索数据库,例如 ElasticSearch 矢量库,如 Faiss、Annoy 和 Hnswlib 支持矢量的NoSQL 数据库,例如 MongoDB、Cosmos DB 和 Cassandra 支持矢量的SQL 数据库&am…...
工业镜头的类别
工业镜头的类别 按照等效焦距分为: 广角镜头 中焦距镜头 长焦距镜头 广角镜头 等效焦距小于标准镜头(等效焦距为50mm)的镜头。特点是最小工作距离短,景深大,视角大。常常表现为桶形畸变。 中焦距镜头 焦距介于广角镜…...
实验11 SQL互联网业务查询-2
这就是SQL题带给我的自信😕 可能发题解到博客上,主要是写完一遍实在不想看第二遍,太长了,优化都不想优化,看着头疼。 技术栈 – WhiteNights Site 一 USE mydata; #请在此处添加实现代码 ########## Begin #######…...
C++知识点梳理:C++ templates
c模板包括:类模板、类(非模板类和模板类)方法模板、函数模板、别名模板、变量模板。 类模板模板参数列表说明: 1)类定义 仅模板参数列表声明,template<>行。 类名后无需参数说明<>。 2…...
uniapp form表单提交事件手动调用
背景: UI把提交的按钮弄成了图片,之前的button不能用了。 <button form-type"submit">搜索</button> 实现: html: 通过 this.$refs.fd 获取到form的vue对象。手动调用里面的_onSubmit()方法。 methods:…...
Accelerate 0.24.0文档 三:超大模型推理(内存估算、Sharded checkpoints、bitsandbytes量化、分布式推理)
文章目录 一、内存估算1.1 Gradio Demos1.2 The Command 二、使用Accelerate加载超大模型2.1 模型加载的常规流程2.2 加载空模型2.3 分片检查点(Sharded checkpoints)2.4 示例:使用Accelerate推理GPT2-1.5B2.5 device_map 三、bitsandbytes量…...
HackTheBox-Starting Point--Tier 2---Markup
文章目录 一 Markup测试过程1.1 打点1.2 权限获取1.3 权限升级 二 题目 一 Markup测试过程 1.1 打点 1.端口扫描 nmap -A -Pn -sC 10.129.95.1922.访问web网站,登录口爆破发现存在弱口令admin:password 3.抓包,发现请求体是XML格式 4.尝试使…...
android studio导入eclipse项目
网上下载一个老工程,.project文件里有eclipse。 android studio导入eclipse项目 eclipse项目结构 Android studio文件结构 下面是导入步骤: 第一步,打开一个项目。 选择File->New->Import Project 第二步,选择Eclipse项目根…...
如何利用AI实现银行存量客户的营销?
近年来,大数据、人工智能等热门关键字多次被写入中央文件与国务院政府工作报告,目前已上升为国家战略,并将深刻地改变现有行业的游戏规则。 金融行业是当今大数据、人工智能应用最广、最深的领域之一。随着数据仓库和数据科学的发展ÿ…...
springboot327基于Java的医院急诊系统
交流学习: 更多项目: 全网最全的Java成品项目列表 https://docs.qq.com/doc/DUXdsVlhIdVlsemdX 演示 项目功能演示: ————————————————...
Unity3d 导入中文字体转TMPtext asset
外部字体放入unity仓库以后呢,需要把这个字体转成用立体的字体文件才可以被使用! 要想转换的话呢先放入仓库对字体点右键上面有一个Create创建里面有一个TEXT Asset,创建好就可以使用了...
云积万相,焕发电商店铺新活力
数字化时代,电商店铺的运营和营销策略越来越受到重视。如何让店铺在众多的竞争中脱颖而出,吸引更多的顾客,提高销售额,是每个电商品牌都需要思考的问题。云积天赫最近推出的云积万相为电商店铺带来全新的活力和更多的可能性。 …...
字典管理怎么使用,vue3项目使用若依的的字典管理模块
若依框架数据字典的使用_若依数据字典_哈哈水水水水的博客-CSDN博客 【精选】关于数据字典的理解与设计_数据字典怎么设计-CSDN博客 若依的字典值如何使用(超详细图文教程)_若依字典管理_丿BAIKAL巛的博客-CSDN博客 Vue3组合式API:getCurr…...
【汇编】内存中字的存储、用DS和[address]实现字的传送、DS与数据段
文章目录 前言一、内存中字的存储1.1 8086cpu字的概念1.2 16位的字存储在一个16位的寄存器中,如何存储?1.3 字单元 二、用DS和[address]实现字的传送2.1 字的传送是什么意思?2.2 要求原理解决方案:DS和[address]配合8086传送16字节…...
数据分析 - 分散性与变异的量度
全距 - 极差 处理变异性 方差度量 数值与均值的距离,也就是数据的差异性 标准差描述:典型值 和 均值的距离的方法,数据与均值的分散情况...
Neo4j数据库介绍及简单使用
图数据库介绍 图数据库是一种专门设计用于存储和管理图形数据的数据库类型。在图数据库中,数据以图的形式表示,其中节点表示实体,边表示实体之间的关系。这种表示方式非常适合处理具有复杂关系的数据,如社交网络、推荐系统、网络…...
ubuntu 20.04安装 Anaconda教程
在安装Anaconda之前需要先安装ros(防止跟conda冲突,先装ros)。提前安装好cuda 和cudnn。 本博客参考:ubuntu20.04配置ros noetic和cuda,cudnn,anaconda,pytorch深度学习的环境 安装完conda后,输入: pyth…...
iframe渲染后端接口文件和实现下载功能
一:什么是iframe? 1、介绍 iframe 是HTML 中的一种标签,全称为 Inline Frame,即内联框架。它可以在网页中嵌入其他页面或文档,将其他页面的内容以框架的形式展示在当前页面中。iframe的使用方式是通过在HTML文档中插入…...
广西建筑工地模板:支模九层桉木模板
广西作为中国西南地区的重要建筑市场,建设工地的模板需求量一直居高不下。在众多建筑模板中,支模九层桉木模板以其强度高、使用寿命长的特点而备受关注。本文将介绍广西建筑工地常用的支模九层桉木模板,并探讨其在建筑施工中的应用优势。支模…...
java集合,栈
只有栈是类 列表是个接口 栈是个类 队列 接口有双链表,优先队列(堆) add会报错 offer是一个满了不会报错 set集合 有两个类实现了这个接口...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...
基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...
C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...
Vue 模板语句的数据来源
🧩 Vue 模板语句的数据来源:全方位解析 Vue 模板(<template> 部分)中的表达式、指令绑定(如 v-bind, v-on)和插值({{ }})都在一个特定的作用域内求值。这个作用域由当前 组件…...
