乐乐论坛 - 近似最近邻
type: channel
link: https://bbs.leleweb.cn/tag/%E8%BF%91%E4%BC%BC%E6%9C%80%E8%BF%91%E9%82%BB/
items: 向量数据库：零基础入门教程
items: 向量数据库：从入门到精通路线图

向量数据库：零基础入门教程
type: item
date: 2026-07-03T21:00:26+08:00
description: 引言：为什么你需要了解向量数据库？在人工智能和大数据时代，我们每天都会产生海量的非结构化数据——图片、视频、音频、文本等。传统的关系型数据库（如MySQL）虽然擅长处理结构化数据，但在处理这些“模糊”数据时却显得力不从心。例如，如何在一百万张图片中找到“最像”某张图片的其他图片？如何根据一段文字描述，检索出最匹配的新闻文章？这些问题的答案，都指向了一个新兴的技术领域——向量数据库。向量数据库并非传统数据库的替代品，而是一种专门用于处理“向量”数据的特殊数据库。它通过将非结构化数据转化为数学向量，并利用高效的相似度搜索算法，实现了对复杂数据的快速检索。无论你是AI开发者、数据分析师，还是对技术充满好奇的初学者，理解向量数据库都将为你打开一扇新的大门。一、核心概念：从数据到向量1.1 什么是向量？在数学中，向量是一个具有大小和方向的量，通常表示为一组数字的列表。例如，一个三维向量可以表示为 [0.5, -1.2, 3.8]。但在向量数据库中，向量的维度可以高达数百甚至数千维。1.2 如何将数据转化为向量？这需要借助嵌入模型（Embedding Model）。例如：文本：使用BERT、Word2Vec等模型，将句子“今天天气真好”转化为一个768维的向量图片：使用ResNet、ViT等模型，将一张猫的图片转化为一个512维的向量音频：使用Wav2Vec等模型，将一段语音转化为向量每个向量都代表了原始数据的“语义特征”。相似的输入数据，其向量在几何空间中的距离也较近。1.3 向量数据库的核心能力向量数据库主要解决两个问题：高效存储：管理海量向量数据相似度搜索：给定一个查询向量，快速找到最相似的向量集合二、工作原理：如何实现闪电般的搜索？2.1 相似度度量向量数据库通过计算向量之间的距离来衡量相似度，常用方法包括：余弦相似度：衡量两个向量方向的一致性，范围[-1,1]欧氏距离：衡量向量在多维空间中的绝对距离点积：适用于归一化后的向量2.2 索引技术：从线性扫描到近似搜索想象一下，在100万个向量中逐一计算距离——这被称为“暴力搜索”，显然不现实。向量数据库引入了高效的索引结构：基于树的索引（如KD-Tree）将向量空间递归分割成子区域，搜索时只遍历相关分支。基于图的索引（如HNSW）构建分层导航图，从粗粒度到细粒度逐步逼近目标。基于量化的索引（如IVF）将向量空间划分为多个聚类，搜索时只检查最相关的几个聚类。目前最流行的算法是HNSW（Hierarchical Navigable Small World），它结合了图结构和分层思想，在搜索速度和精度之间取得了良好平衡。2.3 近似最近邻搜索（ANN）值得注意的是，大多数向量数据库并不保证返回绝对精确的结果，而是采用近似最近邻搜索。这意味着：速度快：比精确搜索快几个数量级精度可调：通过参数控制（如recall值）适合大规模场景：处理亿级向量成为可能三、主流向量数据库对比3.1 开源方案数据库特点适用场景Milvus云原生、分布式、支持GPU加速大规模生产环境Qdrant纯Rust编写、内存效率高需要高性能的微服务Weaviate内置向量化模块、支持GraphQL快速原型开发Chroma轻量级、API简洁小规模项目和教学3.2 商业化方案Pinecone：全托管服务，零运维成本Zilliz Cloud：基于Milvus的云服务Redis Stack：在内存数据库基础上扩展向量搜索3.3 如何选择？数据量小于100万：Chroma或Qdrant需要分布式部署：Milvus不想自己运维：Pinecone或Zilliz Cloud已有Redis基础设施：Redis Stack四、实战演练：用Python实现第一个向量搜索4.1 环境准备pip install pymilvus sentence-transformers4.2 完整代码示例from pymilvus import connections, Collection, FieldSchema, CollectionSchema, DataType from sentence_transformers import SentenceTransformer # 1. 连接Milvus connections.connect(host="localhost", port="19530") # 2. 定义集合结构 fields = [ FieldSchema(name="id", dtype=DataType.INT64, is_primary=True), FieldSchema(name="text", dtype=DataType.VARCHAR, max_length=512), FieldSchema(name="embedding",…

向量数据库：从入门到精通路线图
type: item
date: 2026-06-20T03:00:44+08:00
description: 引言：为什么向量数据库正在重塑数据处理范式在人工智能和大模型技术迅猛发展的今天，数据的形态正在发生根本性变化。传统的结构化数据库（如MySQL、PostgreSQL）和NoSQL数据库（如MongoDB、Redis）擅长处理精确匹配、范围查询和关系型数据，但它们面对一个新兴需求时显得力不从心——语义搜索。当我们想要找到“与‘快乐的小狗’含义最相似的句子”时，传统的关键词匹配往往无法捕捉到“欢快的柯基”这样的语义关联。这正是向量数据库登场的核心契机。向量数据库是一种专门用于存储、索引和查询高维向量数据的数据库系统。这些向量通常由深度学习模型（如BERT、GPT、ResNet等）生成，能够将文本、图像、音频等非结构化数据转换为固定长度的数值数组，从而在数学空间中表征数据的语义特征。通过计算向量之间的距离（如余弦相似度、欧氏距离），我们可以实现基于语义的相似性搜索，这在推荐系统、问答系统、图搜、异常检测等领域具有革命性意义。本文将为您绘制一份从入门到精通的向量数据库学习路线图，涵盖核心概念、技术选型、实践案例和进阶方向，帮助您系统性地掌握这一新兴技术。第一部分：入门篇——理解向量数据库的核心概念1.1 向量是什么？从几何直觉到数学定义在几何学中，向量是既有大小又有方向的量，通常表示为坐标空间中的一个点或箭头。在机器学习的语境下，向量是一个由浮点数组成的数组，例如 [0.23, -0.45, 0.78, ..., 0.12]。向量的维度（数组长度）通常在128到4096之间，取决于生成向量的模型架构。关键理解：向量数据库中的“向量”不是原始数据本身，而是数据的语义指纹。例如，句子“我喜欢编程”和“我热爱写代码”经过同一个文本嵌入模型处理后，得到的向量在空间中会非常接近，因为它们的语义相似。1.2 为什么传统数据库无法胜任向量搜索？传统数据库使用B-Tree、哈希索引等结构进行精确匹配或范围查询。对于向量搜索，我们需要找到“最相似的N个向量”，这涉及到高维空间中的最近邻搜索问题。当数据量达到百万级、十亿级时，暴力计算所有向量间的距离（O(n²)复杂度）在计算上不可行。向量数据库通过近似最近邻搜索（ANN） 算法，以牺牲微小精度为代价，将搜索速度提升数个数量级。1.3 向量数据库的核心能力向量存储与索引：支持高维向量的高效存储，并构建索引结构（如HNSW、IVF、PQ等）加速搜索。相似性搜索：支持余弦相似度、欧氏距离、内积等距离度量。混合搜索：同时支持向量相似性搜索和结构化字段的过滤（如“找出与图片A最相似且价格低于100元的商品”）。CRUD操作：支持向量的插入、更新、删除，以及元数据的关联管理。1.4 主流向量数据库概览数据库名称特点适用场景Pinecone全托管云服务，零运维，支持十亿级规模快速原型开发，企业级AI应用Weaviate开源，原生支持GraphQL，内置模块化架构需要灵活数据模型和混合搜索的场景Milvus开源，社区活跃，支持GPU加速，性能优异大规模生产环境，需要高吞吐量Qdrant使用Rust编写，性能出色，支持过滤和聚合对延迟敏感的场景Chroma轻量级，适合嵌入到Python应用中原型开发、本地测试、小规模项目Faiss (非数据库)Meta开源的向量搜索库，非持久化需要极致性能的离线计算场景第二部分：进阶篇——深入技术原理与架构设计2.1 向量索引算法：从暴力搜索到近似搜索2.1.1 暴力搜索（Brute Force）计算查询向量与所有存储向量的距离，返回Top-K结果。复杂度O(n*d)，n为向量数量，d为维度。仅适用于小数据集（<1万条）。2.1.2 树形索引（KD-Tree、VP-Tree）通过递归划分空间构建树结构，减少搜索范围。但在高维空间中，树形索引的性能会急剧下降（维度灾难），实际应用较少。2.1.3 哈希索引（LSH - 局部敏感哈希）将相似向量以高概率映射到同一个桶中。优点是速度快，缺点是召回率受哈希函数设计影响大，且内存消耗较高。2.1.4 量化索引（PQ - 乘积量化）将高维向量分割为若干子向量，分别进行聚类和量化，用码本索引代替原始向量，大幅压缩存储空间。PQ索引在内存受限场景下表现优异，但搜索精度会有所损失。2.1.5 图索引（HNSW - 分层可导航小世界图）目前最流行的ANN算法之一。它构建多层图结构，顶层是稀疏连接，底层是密集连接。搜索时从顶层开始逐步向下，利用“六度分隔”原理快速逼近目标。HNSW在召回率、速度和内存消耗之间取得了优秀平衡，是Milvus、Qdrant等数据库的默认索引。2.1.6 混合索引（IVF_FLAT、IVF_PQ等）结合倒排索引（IVF）和量化技术。首先对向量空间进行聚类（如K-Means），然后只在查询向量所属的最近几个聚类中进行搜索。IVF_PQ…