一、向量数据处理概述

1.1 什么是向量数据

先问个问题:你在搜索引擎里输入「秋天的第一杯奶茶」,系统怎么知道你要找什么?

传统做法靠关键词匹配,但效果嘛……你懂的。向量数据的思路完全不同——它把一切信息都映射成数学向量。说白了,就是一组浮点数。

举个例子,一张猫的图片,经过模型处理后变成 [0.23, 0.87, -0.15, ...] 这样的数组。这个数组就是「向量」。猫和狗的区别,体现在向量空间里的距离远近上。

我刚开始接触这个领域时,也觉得抽象。直到有一次做图像检索项目,发现用向量距离排序,召回率比关键词搜索高了将近 30%。嗯,从那以后我就认了这条路。

向量数据有几个关键特征:

  • 高维性:常见维度从 128 到 1024 不等,甚至更高
  • 非结构化:没有固定的 schema,不像关系表那样规整
  • 语义密集:向量本身携带语义信息,距离近就是语义相似
  • 计算密集:相似度计算涉及大量浮点运算

核心认知:向量数据不是「新数据」,而是「新视角」。它把非结构化数据(文本、图像、音频)变成了可计算的结构化形式。

1.2 向量数据库的兴起

传统数据库处理向量数据,效率低得让人抓狂。为什么?

你想想看,B+ 树索引对精确匹配很友好,但你要找「最相似的 10 个向量」,它完全帮不上忙。全表扫描?100 万条 512 维向量,算一次 KNN 就要几秒钟——这在生产环境根本没法用。

向量数据库就是为解决这个问题而生的。它的核心能力是近似最近邻搜索(ANN),用空间换时间,把搜索延迟降到毫秒级。

我记得 2019 年做第一个向量检索项目时,还在用 Faiss 自己搭服务。那时候踩了不少坑——索引参数调不好,召回率忽高忽低;内存不够,索引加载就 OOM。后来向量数据库成熟了,这些基础设施问题才被封装好。

目前主流的向量数据库包括:

产品 核心算法 适用场景
Milvus IVF_FLAT, HNSW 大规模生产环境,云原生部署
Qdrant HNSW Rust 实现,高性能低延迟
Weaviate HNSW 与 NLP 模型深度集成
Pinecone 专有算法 全托管,免运维

选型建议:我个人习惯先看数据规模。百万级以下,Qdrant 或 Weaviate 足够;千万级以上,Milvus 的分布式能力更靠谱。

1.3 流批一体架构简介

传统的数据处理,批处理和流处理是两套系统。批处理用 Spark,流处理用 Flink/Kafka Streams。数据要过两遍,逻辑写两遍,维护成本翻倍。

流批一体架构,说白了就是一套代码,两种模式。同一份数据处理逻辑,既能跑批(处理历史数据),也能跑流(处理实时数据)。

为什么会需要这个?

我做过一个电商推荐系统,用户行为数据既有历史日志(批),又有实时点击(流)。如果用两套系统,特征工程要写两遍,模型预测结果还不一致——批处理说「用户喜欢 A」,流处理说「用户喜欢 B」,你信谁?

流批一体架构的核心组件:

  • 统一计算引擎:如 Flink、Spark Structured Streaming
  • 统一存储层:如 Kafka + 对象存储(S3/MinIO)
  • 统一元数据:如 Hive Metastore / Iceberg
  • 统一数据模型:批和流使用相同的 schema 和业务逻辑

避坑提醒:我曾经在一个项目里强行把批处理逻辑搬到流上,结果状态管理爆炸了。流批一体不是「复制粘贴」,而是要从架构层面统一抽象。

下面这张图展示了流批一体架构下向量数据处理的核心流程:

流批一体架构下的向量数据处理流程 流批一体架构下的向量数据处理流程 历史数据(批) HDFS / 对象存储 实时数据(流) Kafka / Pulsar 统一计算引擎 向量化处理 Embedding 模型 / 特征提取 向量存储与索引 Milvus / Qdrant / Faiss 向量检索服务 批流数据统一 索引与查询 实时增量更新 + 历史全量构建

1.4 课程目标与适用人群

这门课不是讲理论,而是讲怎么落地。

课程目标很明确:

  • 掌握向量数据的核心概念和建模方法
  • 理解主流向量数据库的架构和选型逻辑
  • 学会在流批一体架构下设计向量数据处理管道
  • 能独立搭建生产级的向量检索系统

适用人群:

角色 你会收获什么
大数据工程师 把向量能力融入现有数据管道
AI 应用开发者 理解向量检索的工程化落地
架构师 流批一体 + 向量的架构设计方法
数据平台运维 向量数据库的部署、调优和监控

前置要求:你需要熟悉至少一种编程语言(Python/Java/Scala),了解基本的数据处理概念(批处理、流处理)。不需要向量数据库经验——我会从零开始讲。