一、传统数据库的瓶颈

1. AI应用场景举例

  • 知识库文档助手:可以上传文档,让助手总结或者回答问题
  • 电商“猜你喜欢”:搜索过“纯棉T恤”,还会推荐“亚麻衬衫”、“休闲短袖”等
  • 以图搜图:给一张猫的图片,系统就能找到其他猫的图片

这些场景下,它们的核心思想是相似性查找,要求计算机能够理解内容的“语义”,并进行相似性的判断,这和我们之前一些系统中开发过的传统搜索功能中的精确匹配不一样,实现的不是等于什么,而是像什么。

2. 传统数据库局限性

假如需要从一张商品表中找苹果手机,以SQL为例:

  • 精确匹配: SELECT * FROM products WHERE name = '苹果';
  • 模糊匹配: SELECT * FROM products WHERE name LIKE '%苹果%';

上面的两种SQL都能找到,但是假如用户搜索“iPhone”,则无法直接从数据库找到

出现这种情况现象的根本原因在于:传统数据库的索引,无论是B+树还是倒排索引,都是为精确匹配或者前缀匹配设计的。它们擅长的是回答“是什么”的问题,但是对于“像什么”这种基于语义相似度的模糊查询则无能为力

3. 向量数据库

向量数据库(Vector Database)是一种专门用于高效存储、索引和检索高维向量数据的数据库系统。它的核心目标是支持基于向量相似度的快速搜索,而不是传统数据库中的精确匹配或范围查询。

二、核心概念

1. 向量:AI世界的通用语言

定义:一个由浮点数组成的有序列表,表示数据在高维空间的语义位置

特点:

  • 语义相近的数据,其向量在空间中距离更近
  • 维度通常较高(128~4096维)
  • 类型多为float32,兼顾精度与存储效率

2. 相似度度量(相似度搜索)

通过一定的算法,用来计算两个向量之间的距离,从而可以实现相似度的搜索。主要有下面几种计算方式

距离算法 适用场景
余弦相似度 最常用,关注方向而非大小,适用于文本、语义搜索
欧氏距离 关注绝对距离(图像、音频特征)
内积 常用于未归一化的向量(大多数嵌入模型输出的向量已经做了L2归一化,此时余弦相似度=内积)
曼哈顿距离 较少用,受异常值影响更小

3. 近似最近邻搜索(Approximate Nearest Neighbor, ANN)

  • 问题:在亿级向量中精确计算所有距离(暴力搜索)太慢(O(n))。
  • 解决方案:ANN 算法牺牲少量精度,换取指数级加速(毫秒级响应)。
  • 核心思想:构建索引结构,只搜索“可能相近”的候选集。

常见向量索引算法:

算法 原理简述 特点
HNSW 构建多层图结构,高层粗略跳转,底层精细搜索 高召回率、低延迟,内存消耗较大
IVF 将向量聚类(如 k-means),先找最近的几个簇,再在簇内搜索 可控精度/速度,适合大规模数据
Annoy 构建随机投影树 轻量、适合静态数据
LSH 将相近向量哈希到同一桶 理论成熟,实际效果一般

4. 嵌入(Embedding)

定义:”嵌入“是指生成向量的过程和行为,而负责执行这个过程的AI模型就叫做”嵌入模型“

重要性:嵌入模型的质量直接决定了向量数据库的搜索效果。一个好的嵌入模型能将语义相似的内容在向量空间中放置得更近。

在实际的使用中,要根据业务场景选择最合适的嵌入模型。

5. 元数据

定义:与向量相关联的传统结构化数据

作用:与向量一同进行混合检索,提高查询准确性

三、实战部分

1. 常见向量数据库概览

产品名称 核心特点 适用场景
Milvus 开源,专为大规模向量搜索设计,支持万亿级向量的毫秒级搜索,扩展性出色,提供丰富的索引算法(如IVF、HNSW)。 需要处理海量高维向量数据的应用,如大规模推荐系统、AI驱动的图像搜索。
Zilliz Cloud (基于Milvus) 提供Milvus的全托管云服务,具备Milvus的核心能力同时,简化了运维管理。 希望使用Milvus能力但不想自行运维复杂集群的企业用户。
Pinecone 完全托管的云服务,以易用性低延迟见长,开发者可快速集成,无需管理底层基础设施。 追求快速部署和简化运维的生产级AI应用,特别是对响应速度要求高的场景。
Chroma 轻量级开源向量数据库,易于上手和集成,非常适合快速原型验证和概念验证(PoC)。 对扩展性要求不高的项目初期、学习和开发测试环境。
Qdrant 开源向量数据库,强调高性能低延迟,提供丰富的过滤功能和混合搜索支持。 需要高性能和低延迟的实时应用,如实时推荐系统、需要复杂过滤的语义搜索。
Weaviate 开源搜索引擎,原生支持混合搜索(结合向量检索与关键词搜索),提供GraphQL API。 需要同时利用语义理解和关键词匹配优势的应用,如混合云和本地部署需求。
腾讯云 VectorDB 国产云厂商提供的托管向量数据库服务,深度集成在腾讯云生态中。 技术栈主要基于腾讯云,希望获得稳定托管服务的用户。
VikingDB (火山引擎) 字节跳动旗下火山引擎推出的向量数据库产品。 字节生态或火山引擎的用户,用于构建AI应用。
PostgreSQL (pgvector) 通过pgvector扩展为传统关系型数据库增加向量搜索能力。 技术栈已深度使用PostgreSQL,且向量数据规模和性能要求不极致的场景。
Elasticsearch 领先的搜索引擎,已在其版本中增加了对向量搜索的原生支持。 已在使用Elasticsearch,并希望在其基础上增加语义搜索能力的场景。
MongoDB Atlas Vector Search 知名文档数据库的云服务,提供了集成的向量搜索功能。 技术栈已深度使用MongoDB,希望在同一个数据库中同时处理事务性数据和向量搜索。

2. 演示所用环境说明:Milvus+Spring Ai+Ollama Embedding

  • 所用依赖

    image-076f7cae3c956e68c7127929b39a09d1

  • 配置文件

    image-72da5108c6d213ed209bdd7c306fed75

3. 操作演示

  • 插入数据

    image-f545b524f4d7584a2a976fd2a4b0f6b4

    image-de81dcaa04e3fc9aa12fa26b59b63122

  • 相似性搜索

    image-741cd4fa828f6e0bd04dfbb866a69b71

    image-ba978ada287d54d44dd41469236637c5

  • 混合检索

    image-11ce06839b523207cf0e2137052d8eba

    image-de0f2ef257dfac536a2ecc04c0b0d49b

    可以看到,原本通过相似性检索能获取3条结果的查询,使用混合检索结合其他条件,缩小了结果范围

  • 删除操作

    image-6627c3d113340e3b4d8374c527bec90d

    image-efdc2c1a5f3b395bdf7ab43b3b4b2ca8

    image-65255a4114981943d8ffdb4a206a3179

  • 更新

    向量数据库并没有普通数据库中的直接更新数据的操作,因为向量一旦存入 ANN 索引(如 HNSW 图、IVF 聚类),其位置已固化,直接原地修改会破坏索引结构。主流向量数据库产品所支持的更新操作一般是通过先删除再插入或覆盖写来实现的

  • 高级用法

    Milvus还支持过滤搜索、范围搜索、分组搜索、全文检索、文本匹配等多种检索方式,可以通过官网学习具体用法,官网提供了Python、Java、Go等多种语言的实现方式

四、总结

1. 应用场景

  • 智能问答与知识管理
    • 企业知识库:员工以自然语言提问,系统从海量文档中精准找出内容
    • 智能客服:理解用户意图,返回最相近解决方案
  • 推荐系统与个性化服务
    • 内容推荐:根据阅读历史推荐相关文章、视频等
    • 音乐推荐:基于歌曲的音频特征和用户偏好推荐风格相似的音乐、听歌识曲
  • 多模态搜索与内容理解
    • 以图搜图:上传图片找相似图片
    • 跨模态搜索:文字描述搜索图片或用图片搜索相关文字内容
  • 企业级专业应用
    • 生物医药:基于分子结构相似性进行药物发现
    • 金融投资:寻找与成功投资案例相似的潜在机会
    • 法律行业:快速找到与当前案件相似的历史判例
    • 学术研究:发现与研究方向高度相关的论文和成果

2. 不可替代性

当前基于大模型的应用,尤其是在问答、客服等场景,确实存在一种“捷径”:我们可以将整个任务抛给大模型,依赖其庞大的内置知识库来生成答案。然而,这种纯粹依赖模型“记忆力”的方式,在企业级应用的严苛尺度下,暴露出了成本、安全与可控性三大核心瓶颈。而这正是向量数据库展现出其不可替代性价值的关键所在。

1. 成本可控性与性能优化

  • “黄金记忆”与“廉价硬盘”:要求大模型记忆海量、动态更新的企业私有知识(如全部产品文档、代码库、内部规章),无异于用“黄金”做“硬盘”。每次让模型从零开始“回忆”这些知识,都会消耗巨额的计算资源与Token成本。向量数据库则扮演了高效、廉价的“外部记忆体”,大模型仅需进行精准的检索与推理,成本得以数量级降低。
  • “专家”与“通才”的效能之别:让万亿级参数的大模型去回答“公司年假制度是什么”这类具体、事实性问题,是典型的“大炮打蚊子”,效能低下。向量数据库驱动的RAG架构,先将问题指向最相关的知识片段,再让模型进行精加工,实现了“专家系统”般的精准与高效。

2. 安全性与数据主权

  • 知识“防火墙”:企业核心数据(客户信息、财务数据、源代码)绝不能泄露。将敏感数据直接发送至第三方大模型API,意味着数据主权的丧失和安全风险的不可控。向量数据库允许企业在内部安全地管理所有知识,构建起一道坚实的“知识防火墙”,确保数据永不越界。
  • 可控的知识边界:通过向量数据库,企业可以精确控制模型所能接触到的信息范围,有效防止模型“胡说八道”(幻觉)或引用过时、未经批准的外部信息,保障了回答的准确性与合规性。

3. 信息的实时性与可控性

  • 打破模型的“时间壁垒”:大模型的知识存在截止日期,无法知晓之后的事件。向量数据库可以实时注入最新的产品信息、市场动态、政策法规,让应用系统“永葆青春”,具备实时响应能力。
  • 精准的来源追溯:基于向量检索,系统可以清晰地标注出答案所引用的原始文档和具体段落。这不仅增强了答案的可信度,也满足了企业内审计、合规和知识溯源的要求。

相关资料

Spring AI 官网

Milvus 向量数据库文档