百度智能云发布专用向量数据库 VDB 1.0,全新设计内核开启性能狂飙

news/2024/7/20 17:40:00 标签: 向量数据库, 大模型, RAG

1    专用向量数据库应对未来业务挑战

向量数据库 = 向量检索 + 数据库

向量数据库大致可以分为 2 部分:向量数据的检索,以及向量数据的存储和管理。

向量数据库的性能,比如高 QPS、低延时等,使得业务能够更快的响应用户的查询请求,提供更流畅的使用体验。想要提高向量数据库的性能,首先可以采用更新的向量检索算法,其中各类优异的向量检索算法,通常能够通过各类插件被快速应用。想要进一步提升业务性能,则只有回到数据库的架构和核心层面,设计一款专门为向量数据设计的数据库产品。

同时,随着大模型在业务应用范围不断扩大,向量数据库将从支持业务创新,转变为企业成熟业务体系中的一部分。这对向量数据库的企业级能力要求会越来越全面,比如权限管理、数据加密、备份与恢复、异地多活等。另外,数据规模在不断增长,数据类型日益复杂,这将对以单体数据库为支撑的技术架构提出挑战。

面向向量数据设计、支持大规模弹性扩展、提供企业级能力……这些都意味着我们需要设计一款专用的向量数据库,以便应对 AI 原生应用不断发展带来的挑战。

2    从数据库内核开始设计,为向量数据而生

今年 2 月底,百度智能云推出了一款专用的向量数据库产品 VDB。

在 VDB 1.0 版本中,我们全新设计了数据库内核,使得产品的性能更好,资源开销更低,支持百亿级别的弹性伸缩。相比同类开源产品,VDB 1.0 的 QPS 在不同线程下平均时延最低,性能提升 40~60%。

VDB 1.0 的数据库内核的技术特点如下:

  • 分布式架构:基于 bRaft 协议库构建,通过了 TLA+ 形式化验证和混沌测试,支持快速故障切换,具备高可靠和高可用的特性;
  • 存储引擎:针对向量数据特性设计的列存引擎。对于一行具有多个向量字段的场景,不同的向量字段的数据能够进行有效地隔离,各自进行存储和索引,能够更精细地管理各自的资源开销。对于标量字段,可通过列式压缩进一步降低存储开销;
  • 编程框架:基于现代 C++ 语言编写,使用 bRPC 和 bthread 协程等编程框架构建,充分应用 GCC 编译器优化和 CPU 指令集优化,能够提供更高的性能和内存管理能力。

在产品功能层面,VDB 1.0 支持向量和标量混合检索,提供丰富的标量过滤条件。基于 VDB 1.0 丰富的检索方式,用户可以方便地引入更多场景。同时,VDB 1.0 支持各种数据类型,以及任意数据类型的混合,用户可以设计出更加紧凑的业务数据库表模型,简化业务架构。

如果您正在进行以下几类应用或业务的开发,比如基于大模型的知识处理、基于特性的相似性检索、NoSQL 类数据库应用等,可以尝试使用百度智能云 VDB,体验不一样的速度,以及丰富的企业级能力。

3    第一时间体验 VDB 性能狂飙

接下来,我们展示一个 VDB 1.0 在知识库场景的示例。通过「千帆大模型平台 + LangChain + VDB」的组合搭建 RAG 应用,第一时间体验 VDB 带来的业务性能提升。以下是一个 RAG 应用的典型方案架构图:

图片

百度智能云全新设计的内核,为 VDB 的后续进化提供了一个良好的底座。在 VDB 后续版本更新中,我们将提供更全面的数据库企业级能力,集成更多的 AI 生态,成为一款为向量数据而生的专业向量数据库


http://www.niftyadmin.cn/n/5414395.html

相关文章

Kafka整理-分区(Partition)机制

Apache Kafka的分区机制是其核心特性之一,它允许Kafka实现高吞吐量和水平扩展。以下是Kafka分区机制的关键方面: 什么是分区(Partition)? 1、基本概念: 在Kafka中,分区是主题(Topic)的子集,每个主题可以被分割成多个分区。分区允许将数据分布在多个服务器(Broker)上…

Python中排序函数sorted的用法

Python中排序函数sorted的用法 列表对象提供了sort()方法支持原地排序,而内置函数sorted()返回新列表,并不对原列表进行任何修改。 sorted()方法可以对列表、元组、字典、range对象等进行排序。 列表的sort()方法和内置函数sorted()都支持key参数实现复…

【Linux-三剑客grep/sed/awk】

■ grep 命令描述grep “pattern” file.txt在 file.txt 中搜索 “pattern”。grep -i “pattern” file.txt忽略大小写搜索 “pattern”。grep -n “pattern” file.txt显示匹配行的行号。grep -r “pattern” /path/to/directory递归搜索指定目录。grep “regex_pattern” f…

蝙蝠避障:我生活中的一道光

盲人的世界,是无尽的黑暗。看不见光,看不见色彩,甚至看不见自己的手。但在这个黑暗的世界里,我找到了一个光明的出口:一款可以障碍物实时检测的名为蝙蝠避障的盲人软件。 这款软件就像是我的一双眼睛。它通过先进的激光…

Oracle Foreign key 无索引导致的死锁 deadlock 或者hang

---------------lock 死锁通常发生在主表和子表更新主外键上。更新主表的主键,那么子表的外键会被锁住 如果删除主表的行,那么子表会被锁住。 create table p(x int primary key); create table c( x references p); insert into p values(1); insert …

【数据结构】栈和队列的应用——括号匹配 + 表达式求值 + 表达式转换 +栈的递归应用+队列在计算机系统中的应用

文章目录 3.栈的应用3.1 括号匹配问题3.2 表达式求值3.2.1 三种算术表达式3.2.2 后缀表达式A.中缀转后缀B.后缀表达式的计算 3.2.3 前缀表达式A.中缀转前缀B.前缀表达式的计算 3.2.4 中缀表达式的求值 3.3 递归中栈的应用 4.队列的应用 栈基础知识:【数据结构】栈 顺…

Linux-TCP(三次握手,四次挥手)

前言 TCP的三次握手和四次挥手实质就是TCP通信的连接和断开。 三次握手:为了对每次发送的数据量进行跟踪与协商,确保数据段的发送和接收同步,根据所接收到的数据量而确认数据发送、接收完毕后何时撤消联系,并建立虚连接。 四次挥手…

学习c语言:预处理详解(补充)

1. #和## 1 #运算符 #运算符将宏的⼀个参数转换为字符串字⾯量。它仅允许出现在带参数的宏的替换列表中。 #运算符所执⾏的操作可以理解为”字符串化“。 当我们有⼀个变量 int a 10; 的时候,我们想打印出: the value of a is 10 . 就可以写&#xff…