【向量库】Weaviate概述与架构解析

news2025/6/10 7:41:02

文章目录

  • 一、什么是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 LayerWeaviate主要入口点,支持REST API(负责设置各种REST处理器,含认证、授权、Schema、对象操作、批量处理、GraphQL接口 )、gRPC API(提供高性能服务,含traverser、认证、schema管理、批量管理功能 )、GraphQL API(提供查询接口,通过traverser解析请求 )
Objects Manager管理单个对象的CRUD操作,依赖Schema Manager、DB、Modules和授权器
通过ShardLike接口实现对象的CRUD操作,如PutObjectObjectByIDDeleteObject
Schema Manager1. 负责类定义和元数据管理,集群级别通过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. 组件交互流程

  1. 请求流程: API Layer → Objects/Batch Manager → DB → Index → Shard → Storage Layer
  2. 集群协调: Cluster Service 通过 Raft 同步 Schema 变更(元数据通过raft算法)
  3. 模块集成: Modules Provider 为各组件提供向量化和 AI 功能
  4. 查询执行: 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 中找到最近邻,步骤如下:

  1. New Vector(新向量)
    • 输入:待查询的向量(如用户输入的文本转换的向量、图像特征向量等)。
    • 作用:触发一次近似最近邻搜索(Approximate Nearest Neighbor Search)。
  2. Start at Entry Point(从入口点开始)
    • HNSW 会预先确定一个全局入口点(Entry Point),作为搜索的起始节点。
    • 作用:避免随机起始导致的低效,确保从“高层”开始快速缩小范围。
  3. Greedy Traversal(贪心遍历) 策略:从入口点开始,逐层向下,在每一层中“贪心”选择距离查询向量最近(局部最优加速搜索)的邻居节点,快速向目标区域逼近。
  4. Explore Neighbors(探索邻居)
    • 在底层(Layer 0),算法会精细化探索邻居节点对比更多候选(如何对比),提升结果精度。
    • 作用:在高层快速缩小范围后,底层用更密集的连接确保结果质量。
  5. K-Nearest Neighbors(K 近邻结果)
    • 输出:最终找到与查询向量最相似的 K 个节点(向量),完成近似最近邻搜索

 

3.3. 右侧:HNSW Index Structure(HNSW 索引结构)

描述HNSW 的多层图结构,从查询向量的视角看索引的层次:

  1. Query Vector(查询向量) :搜索的输入
  2. Entry Point(入口点) :全局统一的起始节点,所有搜索都从这里进入高层图,确保搜索路径的一致性。
  3. Layer 2 - Sparse Graph(第 2 层 - 稀疏图)高层(如 Layer 2):节点少、连接稀疏,跨度大(类似“高速公路”)。 快速跳过大量无关节点,用最少步骤定位到“大致区域”。
  4. Layer 1 - Denser Graph(第 1 层 - 较密集图)中层(如 Layer 1):节点和连接比高层更密集,开始缩小搜索范围。 在高层定位的基础上,进一步逼近目标区域。
  5. Layer 0 - Densest Graph(第 0 层 - 最密集图)底层(Layer 0):包含所有原始数据节点,连接最密集。 作用:精细化搜索,确保找到足够近似的最近邻。

 

3.4. 小结

  1. 分层设计的意义

    • 高层(稀疏)负责快速“跳跃”,用最少步骤缩小范围;
    • 底层(密集)负责精细化搜索,保证结果精度。
    • 这种“先粗后细”的方式,让 HNSW 在百万/亿级向量中仍能高效搜索。
  2. 与传统算法的区别

    • 传统 KNN 是“暴力遍历”(逐层对比所有节点),复杂度 (O(n));
    • HNSW 用多层图将复杂度降为 O(log n),适合大规模数据。
  3. 参数影响

    • 层数、每层连接数(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.

在这里插入图片描述
 

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

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

相关文章

统计按位或能得到最大值的子集数目

我们先来看题目描述: 给你一个整数数组 nums ,请你找出 nums 子集 按位或 可能得到的 最大值 ,并返回按位或能得到最大值的 不同非空子集的数目 。 如果数组 a 可以由数组 b 删除一些元素(或不删除)得到,…

vue3 手动封装城市三级联动

要做的功能 示意图是这样的&#xff0c;因为后端给的数据结构 不足以使用ant-design组件 的联动查询组件 所以只能自己分装 组件 当然 这个数据后端给的不一样的情况下 可能组件内对应的 逻辑方式就不一样 毕竟是 三个 数组 省份 城市 区域 我直接粘贴组件代码了 <temp…

Linux【5】-----编译和烧写Linux系统镜像(RK3568)

参考&#xff1a;讯为 1、文件系统 不同的文件系统组成了&#xff1a;debian、ubuntu、buildroot、qt等系统 每个文件系统的uboot和kernel是一样的 2、源码目录介绍 目录 3、正式编译 编译脚本build.sh 帮助内容如下&#xff1a; Available options: uboot …

Heygem50系显卡合成的视频声音杂音模糊解决方案

如果你在使用50系显卡有杂音的情况&#xff0c;可能还是官方适配问题&#xff0c;可以使用以下方案进行解决&#xff1a; 方案一&#xff1a;剪映替换音色&#xff08;简单适合普通玩家&#xff09; 使用剪映换音色即可&#xff0c;口型还是对上的&#xff0c;没有剪映vip的&…

Gitlab + Jenkins 实现 CICD

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

无头浏览器技术:Python爬虫如何精准模拟搜索点击

1. 无头浏览器技术概述 1.1 什么是无头浏览器&#xff1f; 无头浏览器是一种没有图形用户界面&#xff08;GUI&#xff09;的浏览器&#xff0c;它通过程序控制浏览器内核&#xff08;如Chromium、Firefox&#xff09;执行页面加载、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、需求 我们知道大型语言模型 &#xff08;LLM&#xff09; 是无状态的&#xff0c;这就意味着他们不会保…

Qt 按钮类控件(Push Button 与 Radio Button)(1)

文章目录 Push Button前提概要API接口给按钮添加图标给按钮添加快捷键 Radio ButtonAPI接口性别选择 Push Button&#xff08;鼠标点击不放连续移动快捷键&#xff09; Radio Button Push Button 前提概要 1. 之前文章中所提到的各种跟QWidget有关的各种属性/函数/方法&#…

生成对抗网络(GAN)损失函数解读

GAN损失函数的形式&#xff1a; 以下是对每个部分的解读&#xff1a; 1. ⁡, ​ &#xff1a;这个部分表示生成器&#xff08;Generator&#xff09;G的目标是最小化损失函数。 &#xff1a;判别器&#xff08;Discriminator&#xff09;D的目标是最大化损失函数。 GAN的训…

汇编语言学习(三)——DoxBox中debug的使用

目录 一、安装DoxBox&#xff0c;并下载汇编工具&#xff08;MASM文件&#xff09; 二、debug是什么 三、debug中的命令 一、安装DoxBox&#xff0c;并下载汇编工具&#xff08;MASM文件&#xff09; 链接&#xff1a; https://pan.baidu.com/s/1IbyJj-JIkl_oMOJmkKiaGQ?pw…

数据可视化交互

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

安宝特方案丨从依赖经验到数据驱动:AR套件重构特种装备装配与质检全流程

在高压电气装备、军工装备、石油测井仪器装备、计算存储服务器和机柜、核磁医疗装备、大型发动机组等特种装备生产型企业&#xff0c;其产品具有“小批量、多品种、人工装配、价值高”的特点。 生产管理中存在传统SOP文件内容缺失、SOP更新不及、装配严重依赖个人经验、产品装…

【JavaEE】万字详解HTTP协议

HTTP是什么&#xff1f;-----互联网的“快递小哥” 想象我们正在网上购物&#xff1a;打开淘宝APP&#xff0c;搜索“蓝牙耳机”&#xff0c;点击商品图片&#xff0c;然后下单付款。这一系列操作背后&#xff0c;其实有一个看不见的“快递小哥”在帮我们传递信息&#xff0c;…

华为云Flexus+DeepSeek征文 | MaaS平台避坑指南:DeepSeek商用服务开通与成本控制

作者简介 我是摘星&#xff0c;一名专注于云计算和AI技术的开发者。本次通过华为云MaaS平台体验DeepSeek系列模型&#xff0c;将实际使用经验分享给大家&#xff0c;希望能帮助开发者快速掌握华为云AI服务的核心能力。 目录 作者简介 前言 一、技术架构概览 1.1 整体架构设…

【动态规划】B4336 [中山市赛 2023] 永别|普及+

B4336 [中山市赛 2023] 永别 题目描述 你做了一个梦&#xff0c;梦里有一个字符串&#xff0c;这个字符串无论正着读还是倒着读都是一样的&#xff0c;例如&#xff1a; a b c b a \tt abcba abcba 就符合这个条件。 但是你醒来时不记得梦中的字符串是什么&#xff0c;只记得…

可下载旧版app屏蔽更新的app市场

软件介绍 手机用久了&#xff0c;app越来越臃肿&#xff0c;老手机卡顿成常态。这里给大家推荐个改善老手机使用体验的方法&#xff0c;还能帮我们卸载不需要的app。 手机现状 如今的app不断更新&#xff0c;看似在优化&#xff0c;实则内存占用越来越大&#xff0c;对手机性…

claude3.7高阶玩法,生成系统架构图,国内直接使用

文章目录 零、前言一、操作指南操作指导 二、提示词模板三、实战图书管理系统通过4o模型生成系统描述通过claude3.7生成系统架构图svg代码转换成图片 在线考试系统通过4o模型生成系统描述通过claude3.7生成系统架构图svg代码转换成图片 四、感受 零、前言 现在很多AI大模型可以…

河北对口计算机高考MySQL笔记(完结版)(2026高考)持续更新~~~~

MySQL 基础概念 数据&#xff08;Data&#xff09;&#xff1a;文本&#xff0c;数字&#xff0c;图片&#xff0c;视频&#xff0c;音频等多种表现形式&#xff0c;能够被计算机存储和处理。 **数据库&#xff08;Data Base—简称DB&#xff09;&#xff1a;**存储数据的仓库…

2025-06-01-Hive 技术及应用介绍

Hive 技术及应用介绍 参考资料 Hive 技术原理Hive 架构及应用介绍Hive - 小海哥哥 de - 博客园https://cwiki.apache.org/confluence/display/Hive/Home(官方文档) Apache Hive 是基于 Hadoop 构建的数据仓库工具&#xff0c;它为海量结构化数据提供类 SQL 的查询能力&#xf…