【向量库】Weaviate概述与架构解析
文章目录
- 一、什么是weaviate
- 二、High-Level Architecture
- 1. Core Components
- 2. Storage Layer
- 3. 组件交互流程
- 三、核心组件
- 1. API Layer
- 2. Schema Management
- 3. Vector Indexing
- 3.1. 查询原理
- 3.2. 左侧:Search Process(搜索流程)
- 3.3. 右侧:HNSW Index Structure(HNSW 索引结构)
- 3.4. 小结
- 4. Storage System
- 5. Module System
一、什么是weaviate
Weaviate 是一个开源的向量数据库(vector database),它能够同时存储数据对象和它们的向量表示。
与传统的关系型数据库不同,Weaviate 支持基于语义相似度的检索(即向量搜索/语义搜索(向量和文本相似的搜索)),可以高效地处理文本、图片等多种类型的数据,并支持结合结构化过滤进行复杂查询。
Weaviate 的主要特点包括:
搜索:
- 高效的向量检索:能够在百万级甚至更大规模的数据集中,毫秒级完成最近邻(Nearest Neighbor)搜索。
- 混合搜索: 结合向量搜索和关键词搜索(文本和向量搜索ing)
- 向量搜索: 基于 HNSW 算法的高效向量索引
- 多媒体支持:支持文本、图片等多种数据类型的向量化和检索。
典型应用场景包括语义搜索、图片搜索、相似性检索、推荐系统、异常检测、数据分类等Weaviate 简介 官方文档。
二、High-Level Architecture
参考:
https://deepwiki.com/search/highlevel-architecture_254cebb0-bc55-4fd7-a374-cfbcaaaaa6ea
如上架构图体现了 Weaviate 的分层设计:
API 层处理外部接口,Core Components 管理业务逻辑,Extension System 提供可插拔功能,Storage Layer 负责数据持久化。
1. Core Components
核心组件 | 描述 |
---|---|
API Layer | Weaviate主要入口点,支持REST API(负责设置各种REST处理器,含认证、授权、Schema、对象操作、批量处理、GraphQL接口 )、gRPC API(提供高性能服务,含traverser、认证、schema管理、批量管理功能 )、GraphQL API(提供查询接口,通过traverser解析请求 ) |
Objects Manager | 管理单个对象的CRUD操作,依赖Schema Manager、DB、Modules和授权器 通过 ShardLike 接口实现对象的CRUD操作,如PutObject 、ObjectByID 、DeleteObject 等 |
Schema Manager | 1. 负责类定义和元数据管理,集群级别通过Indexer 接口处理类的增删改查;2. 用例层通过 SchemaManager 接口提供强一致性schema操作;负责数据模型管理,与集群服务的Raft协议集成以保证一致性 |
Cluster Service | 管理分布式协调,使用Raft共识算法 |
2. Storage Layer
核心组件 | 描述 |
---|---|
LSM KV Store | 每个Shard包含一个,用于持久化对象数据 |
Vector Indices (HNSW) | Shard支持多个,含主向量索引和命名向量索引 |
Inverted Indices | 通过属性索引实现,支持文本搜索和过滤功能 |
Object Storage | 通过LSM - KV存储实现,支持创建不同策略的存储桶 |
3. 组件交互流程
- 请求流程: API Layer → Objects/Batch Manager → DB → Index → Shard → Storage Layer
- 集群协调: Cluster Service 通过 Raft 同步 Schema 变更(元数据通过raft算法)
- 模块集成: Modules Provider 为各组件提供向量化和 AI 功能
- 查询执行: Traverser 协调 DB 和 Explorer 执行复杂查询
三、核心组件
1. API Layer
Weaviate provides multiple API interfaces:
- REST API: Traditional HTTP-based interface for CRUD operations
- GraphQL API: Rich query language with advanced filtering and traversal
- gRPC API: High-performance binary protocol for efficient data transfer
These interfaces expose Weaviate’s functionality for data management, search, and schema operations.
2. Schema Management
The schema system defines the structure of data stored in Weaviate:
- Classes: Define object types (similar to tables in relational databases)
- Properties: Define fields within classes
- Data Types: Support for primitive types and references
- Vector Configurations: Settings for vectorization and indexing
Schema changes are managed through a RAFT consensus algorithm to ensure consistency across distributed deployments.
3. Vector Indexing
Weaviate 使用分层可导航小世界(HNSW)图来实现快速近似最近邻搜索。该算法创建了一个多层图结构,即使对于数百万个向量,也能实现对数时间的相似性搜索。
Weaviate uses Hierarchical Navigable Small World (HNSW) graphs for fast approximate nearest-neighbor search. This algorithm creates a multi-layered graph structure that enables logarithmic-time similarity searches even with millions of vectors.
HNSW 算法核心特性
- 多层图结构:通过在不同层级(从粗到细)建立节点连接,形成 “高速公路” 式的搜索路径。底层包含所有节点,高层为底层的稀疏采样,层级越高节点越少但连接跨度越大。
- 近似搜索:不保证找到绝对精确的最近邻,但能在合理时间内返回足够近似的结果,适合大规模向量数据场景(如数百万至数十亿向量)。
3.1. 查询原理
上图图清晰地展示了 HNSW(Hierarchical Navigable Small World,分层可导航小世界) 算法的核心流程和索引结构,分为左右两部分:Search Process
(搜索流程)和 HNSW Index Structure
(HNSW 索引结构)。
3.2. 左侧:Search Process(搜索流程)
描述新向量(查询向量)如何在 HNSW 中找到最近邻,步骤如下:
- New Vector(新向量)
- 输入:待查询的向量(如用户输入的文本转换的向量、图像特征向量等)。
- 作用:触发一次近似最近邻搜索(Approximate Nearest Neighbor Search)。
- Start at Entry Point(从入口点开始)
- HNSW 会预先确定一个全局入口点(Entry Point),作为搜索的起始节点。
- 作用:避免随机起始导致的低效,确保从“高层”开始快速缩小范围。
- Greedy Traversal(贪心遍历) 策略:从入口点开始,逐层向下,在每一层中“贪心”选择距离查询向量最近(局部最优加速搜索)的邻居节点,快速向目标区域逼近。
- Explore Neighbors(探索邻居)
- 在底层(Layer 0),算法会精细化探索邻居节点,对比更多候选(如何对比),提升结果精度。
- 作用:在高层快速缩小范围后,底层用更密集的连接确保结果质量。
- K-Nearest Neighbors(K 近邻结果)
- 输出:最终找到与查询向量最相似的
K
个节点(向量),完成近似最近邻搜索。
3.3. 右侧:HNSW Index Structure(HNSW 索引结构)
描述HNSW 的多层图结构,从查询向量的视角看索引的层次:
- Query Vector(查询向量) :搜索的输入
- Entry Point(入口点) :全局统一的起始节点,所有搜索都从这里进入高层图,确保搜索路径的一致性。
- Layer 2 - Sparse Graph(第 2 层 - 稀疏图) :高层(如 Layer 2):节点少、连接稀疏,跨度大(类似“高速公路”)。 快速跳过大量无关节点,用最少步骤定位到“大致区域”。
- Layer 1 - Denser Graph(第 1 层 - 较密集图) : 中层(如 Layer 1):节点和连接比高层更密集,开始缩小搜索范围。 在高层定位的基础上,进一步逼近目标区域。
- Layer 0 - Densest Graph(第 0 层 - 最密集图) :底层(Layer 0):包含所有原始数据节点,连接最密集。 作用:精细化搜索,确保找到足够近似的最近邻。
3.4. 小结
分层设计的意义:
- 高层(稀疏)负责快速“跳跃”,用最少步骤缩小范围;
- 底层(密集)负责精细化搜索,保证结果精度。
- 这种“先粗后细”的方式,让 HNSW 在百万/亿级向量中仍能高效搜索。
与传统算法的区别:
- 传统 KNN 是“暴力遍历”(逐层对比所有节点),复杂度 (O(n));
- HNSW 用多层图将复杂度降为 O(log n),适合大规模数据。
参数影响:
- 层数、每层连接数(
M
)、构建时的搜索范围(efConstruction
)等参数,会影响索引大小、构建时间和搜索效率,需根据数据规模调优。
4. Storage System
Weaviate uses an LSM (Log-Structured Merge-tree) key-value store for persistent storage:
- Memtables: In-memory storage for recent writes
- Segment Files: Immutable disk storage
- Compaction: Background process to optimize storage
The storage system is designed for high write throughput and efficient reads, with support for sharding and replication in distributed deployments.
5. Module System
Weaviate’s module system provides a flexible way to extend functionality:
- Vectorizers: Transform raw data into vector embeddings
- Text Modules: Process and analyze text data
- Image Modules: Process and analyze image data
- Custom Modules: Support for user-defined extensions
Modules can be added or configured to tailor Weaviate to specific use cases.
相关文章:

【向量库】Weaviate概述与架构解析
文章目录 一、什么是weaviate二、High-Level Architecture1. Core Components2. Storage Layer3. 组件交互流程 三、核心组件1. API Layer2. Schema Management3. Vector Indexing3.1. 查询原理3.2. 左侧:Search Process(搜索流程)3.3. 右侧&…...
PostgreSQL 对 IPv6 的支持情况
PostgreSQL 对 IPv6 的支持情况 PostgreSQL 全面支持 IPv6 网络协议,包括连接、存储和操作 IPv6 地址。以下是详细说明: 一、网络连接支持 1. 监听 IPv6 连接 在 postgresql.conf 中配置: listen_addresses 0.0.0.0,:: # 监听所有IPv4…...
python数据结构和算法(1)
数据结构和算法简介 数据结构:存储和组织数据的方式,决定了数据的存储方式和访问方式。 算法:解决问题的思维、步骤和方法。 程序 数据结构 算法 算法 算法的独立性 算法是独立存在的一种解决问题的方法和思想,对于算法而言&a…...
视觉slam--框架
视觉里程计的框架 传感器 VO--front end VO的缺点 后端--back end 后端对什么数据进行优化 利用什么数据进行优化的 后端是怎么进行优化的 回环检测 建图 建图是指构建地图的过程。 构建的地图是点云地图还是什么信息的地图? 建图并没有一个固定的形式和算法…...

统计按位或能得到最大值的子集数目
我们先来看题目描述: 给你一个整数数组 nums ,请你找出 nums 子集 按位或 可能得到的 最大值 ,并返回按位或能得到最大值的 不同非空子集的数目 。 如果数组 a 可以由数组 b 删除一些元素(或不删除)得到,…...
npm install 相关命令
npm install 相关命令 基本安装命令 # 安装 package.json 中列出的所有依赖 npm install npm i # 简写形式# 安装特定包 npm install <package-name># 安装特定版本 npm install <package-name><version>依赖类型选项 # 安装为生产依赖(默认&…...
Spring Boot 与 Kafka 的深度集成实践(二)
3. 生产者实现 3.1 生产者配置 在 Spring Boot 项目中,配置 Kafka 生产者主要是配置生产者工厂(ProducerFactory)和 KafkaTemplate 。生产者工厂负责创建 Kafka 生产者实例,而 KafkaTemplate 则是用于发送消息的核心组件&#x…...
【学习记录】使用 Kali Linux 与 Hashcat 进行 WiFi 安全分析:合法的安全测试指南
文章目录 📌 前言🧰 一、前期准备✅ 安装 Kali Linux✅ 获取支持监听模式的无线网卡 🛠 二、使用 Kali Linux 进行 WiFi 安全测试步骤 1:插入无线网卡并确认识别步骤 2:开启监听模式步骤 3:扫描附近的 WiFi…...
后端下载限速(redis记录实时并发,bucket4j动态限速)
✅ 使用 Redis 记录 所有用户的实时并发下载数✅ 使用 Bucket4j 实现 全局下载速率限制(动态)✅ 支持 动态调整限速策略✅ 下载接口安全、稳定、可监控 🧩 整体架构概览 模块功能Redis存储全局并发数和带宽令牌桶状态Bucket4j Redis分布式限…...

vue3 手动封装城市三级联动
要做的功能 示意图是这样的,因为后端给的数据结构 不足以使用ant-design组件 的联动查询组件 所以只能自己分装 组件 当然 这个数据后端给的不一样的情况下 可能组件内对应的 逻辑方式就不一样 毕竟是 三个 数组 省份 城市 区域 我直接粘贴组件代码了 <temp…...
Angular中Webpack与ngx-build-plus 浅学
Webpack 在 Angular 中的概念 Webpack 是一个模块打包工具,用于将多个模块和资源打包成一个或多个文件。在 Angular 项目中,Webpack 负责将 TypeScript、HTML、CSS 等文件打包成浏览器可以理解的 JavaScript 文件。Angular CLI 默认使用 Webpack 进行项目…...
大模型智能体核心技术:CoT与ReAct深度解析
**导读:**在当今AI技术快速发展的背景下,大模型的推理能力和可解释性成为业界关注的焦点。本文深入解析了两项核心技术:CoT(思维链)和ReAct(推理与行动),这两种方法正在重新定义大模…...
信息系统分析与设计复习
2024试卷 单选题(20) 1、在一个聊天系统(类似ChatGPT)中,属于控制类的是()。 A. 话语者类 B.聊天文字输入界面类 C. 聊天主题辨别类 D. 聊天历史类 解析 B-C-E备选架构中分析类分为边界类、控制类和实体类。 边界…...

Linux【5】-----编译和烧写Linux系统镜像(RK3568)
参考:讯为 1、文件系统 不同的文件系统组成了:debian、ubuntu、buildroot、qt等系统 每个文件系统的uboot和kernel是一样的 2、源码目录介绍 目录 3、正式编译 编译脚本build.sh 帮助内容如下: Available options: uboot …...
记一次spark在docker本地启动报错
1,背景 在docker中部署spark服务和调用spark服务的微服务,微服务之间通过fegin调用 2,问题,docker容器中服务器来后,注册中心都有,调用服务也正常,但是调用spark启动任务后报错,报错…...
【向量库】Weaviate 搜索与索引技术:从基础概念到性能优化
文章目录 零、概述一、搜索技术分类1. 向量搜索:捕捉语义的智能检索2. 关键字搜索:精确匹配的传统方案3. 混合搜索:语义与精确的双重保障 二、向量检索技术分类1. HNSW索引:大规模数据的高效引擎2. Flat索引:小规模数据…...
ABB馈线保护 REJ601 BD446NN1XG
配电网基本量程数字继电器 REJ601是一种专用馈线保护继电器,用于保护一次和二次配电网络中的公用事业和工业电力系统。该继电器在一个单元中提供了保护和监控功能的优化组合,具有同类产品中最佳的性能和可用性。 REJ601是一种专用馈线保护继电器…...

Heygem50系显卡合成的视频声音杂音模糊解决方案
如果你在使用50系显卡有杂音的情况,可能还是官方适配问题,可以使用以下方案进行解决: 方案一:剪映替换音色(简单适合普通玩家) 使用剪映换音色即可,口型还是对上的,没有剪映vip的&…...

Gitlab + Jenkins 实现 CICD
CICD 是持续集成(Continuous Integration, CI)和持续交付/部署(Continuous Delivery/Deployment, CD)的缩写,是现代软件开发中的一种自动化流程实践。下面介绍 Web 项目如何在代码提交到 Gitlab 后,自动发布…...

无头浏览器技术:Python爬虫如何精准模拟搜索点击
1. 无头浏览器技术概述 1.1 什么是无头浏览器? 无头浏览器是一种没有图形用户界面(GUI)的浏览器,它通过程序控制浏览器内核(如Chromium、Firefox)执行页面加载、JavaScript渲染、表单提交等操作。由于不渲…...

SDU棋界精灵——硬件程序ESP32实现opus编码
一、 音频处理框架 该项目基于Espressif的音频处理框架构建,核心组件包括 ESP-ADF 和 ESP-SR,以下是完整的音频处理框架实现细节: 1.核心组件 (1) 音频前端处理 (AFE - Audio Front-End) main/components/audio_pipeline/afe_processor.c功能: 声学回声…...

Spring AI中使用ChatMemory实现会话记忆功能
文章目录 1、需求2、ChatMemory中消息的存储位置3、实现步骤1、引入依赖2、配置Spring AI3、配置chatmemory4、java层传递conversaionId 4、验证5、完整代码6、参考文档 1、需求 我们知道大型语言模型 (LLM) 是无状态的,这就意味着他们不会保…...

Qt 按钮类控件(Push Button 与 Radio Button)(1)
文章目录 Push Button前提概要API接口给按钮添加图标给按钮添加快捷键 Radio ButtonAPI接口性别选择 Push Button(鼠标点击不放连续移动快捷键) Radio Button Push Button 前提概要 1. 之前文章中所提到的各种跟QWidget有关的各种属性/函数/方法&#…...
生成对抗网络(GAN)损失函数解读
GAN损失函数的形式: 以下是对每个部分的解读: 1. , :这个部分表示生成器(Generator)G的目标是最小化损失函数。 :判别器(Discriminator)D的目标是最大化损失函数。 GAN的训…...

汇编语言学习(三)——DoxBox中debug的使用
目录 一、安装DoxBox,并下载汇编工具(MASM文件) 二、debug是什么 三、debug中的命令 一、安装DoxBox,并下载汇编工具(MASM文件) 链接: https://pan.baidu.com/s/1IbyJj-JIkl_oMOJmkKiaGQ?pw…...
【Java基础】向上转型(Upcasting)和向下转型(Downcasting)
在面向对象编程中,转型(Casting) 是指改变对象的引用类型,主要涉及 继承关系 和 多态。 向上转型(Upcasting) ⬆️ 定义 将 子类对象 赋值给 父类引用(自动完成,无需强制转换&…...
GitHub 常见高频问题与解决方案(实用手册)
1.Push 提示权限错误(Permission denied) 问题: Bash Permission denied (publickey) fatal: Could not read from remote repository. 原因: 没有配置 SSH key 或使用了 HTTPS 而没有权限…...

数据可视化交互
目录 【实验目的】 【实验原理】 【实验环境】 【实验步骤】 一、安装 pyecharts 二、下载数据 三、实验任务 实验 1:AQI 横向对比条形图 代码说明: 运行结果: 实验 2:AQI 等级分布饼图 实验 3:多城市 AQI…...

安宝特方案丨从依赖经验到数据驱动:AR套件重构特种装备装配与质检全流程
在高压电气装备、军工装备、石油测井仪器装备、计算存储服务器和机柜、核磁医疗装备、大型发动机组等特种装备生产型企业,其产品具有“小批量、多品种、人工装配、价值高”的特点。 生产管理中存在传统SOP文件内容缺失、SOP更新不及、装配严重依赖个人经验、产品装…...

【JavaEE】万字详解HTTP协议
HTTP是什么?-----互联网的“快递小哥” 想象我们正在网上购物:打开淘宝APP,搜索“蓝牙耳机”,点击商品图片,然后下单付款。这一系列操作背后,其实有一个看不见的“快递小哥”在帮我们传递信息,…...