向量数据库(Vector Database)是近年来随着大语言模型(LLM)和语义搜索发展而火起来的一种新型数据库。它的目标是支持基于“语义相似度”的高效搜索,与传统数据库按关键字精确匹配不同。


🧠 一、什么是“向量”?

  • 在 AI/NLP 中,一段文本、图像、音频都可以被编码为一个高维的浮点数数组,比如:
1
"Java 是一种面向对象的编程语言" → [0.12, -0.33, 0.88, ..., 0.03]  // 1536维
  • 这个过程叫做 Embedding(嵌入)
  • 转换之后的向量保留了原始内容的语义信息

两个意思相近的句子,它们的向量会在高维空间中非常接近


📚 二、向量数据库 VS 传统数据库

特点 传统数据库 (MySQL) 向量数据库 (Weaviate/Pinecone)
存储的数据 字符串、数字等 高维向量(float 数组)
支持的搜索方式 精确匹配、模糊匹配 向量相似度搜索(余弦/欧几里得)
应用场景 业务数据管理 语义搜索、图像检索、文档问答

🔍 三、向量数据库的核心功能

✅ 1. 向量存储(Insert)

你把文本转成向量后连同文本一起存进去:

1
2
3
4
5
{
"id": "doc123",
"text": "如何退货?",
"vector": [0.12, -0.33, 0.88, ..., 0.03]
}

✅ 2. 相似度搜索(Similarity Search)

用户问“退货政策是什么”,你:

  1. 把这个问题也转成向量(用 embedding 模型)
  2. 在数据库中找“和这个向量最近的几个向量”(比如余弦相似度 topK)

结果就是“语义最相关”的内容。


✅ 3. 元数据过滤(可选)

除了向量,也可以存 metadata,比如:

1
2
3
4
5
{
"category": "退货",
"source": "用户手册",
"date": "2024-05-01"
}

查询时可以加条件:

  • 搜“和 X 最像的内容”,但 必须是‘用户手册’中的内容

🏗️ 四、内部结构简图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
┌──────────────────────────────┐
│ 向量数据库 │
├────────────┬─────────────────┤
│ ID │ 向量 │
│ "doc001" │ [0.12, 0.8, ...]│
│ "doc002" │ [0.55, 0.2, ...]│
└────────────┴─────────────────┘

↓(用户输入问题 → embedding)

查询向量:[0.13, 0.81, ...]

↓(向量相似度 TopK)

→ 返回最相似的几条内容

🔧 五、常用术语解释

术语 含义
Embedding 把文本/图片转成向量的过程(用模型,比如 OpenAI Embedding API)
向量检索 基于向量间的距离做查找,找最相近的内容
Top-K 检索 找出与给定向量最近的前 K 条记录
余弦相似度 常见的向量相似度计算方法,衡量两个向量的角度差异
向量维度 向量的“长度”,比如 1536 维、768 维

🧰 六、常见向量数据库(对 Java 友好度)

名称 是否开源 优点 Java 支持
Weaviate ✅ 开源 REST/gRPC 接口、开箱即用、文档全 ✅(Spring AI 支持)
Pinecone ❌ 商业SaaS 稳定可靠、按量付费 ✅(REST API)
Milvus ✅ 开源 国内支持好、性能强 ✅(Java SDK)
FAISS ✅ 开源 本地部署快,适合小项目 ❌ 需 Python/封装服务

📦 七、Java 使用

1
2
3
4
5
6
7
8
9
10
11
// 步骤 1:文本转向量(用 OpenAI embedding)
float[] vector = embeddingClient.embed("如何退货?");

// 步骤 2:存入向量数据库
weaviate.insert(new VectorDocument("id123", "退货流程是...", vector));

// 步骤 3:用户提问,转向量,搜索 TopK
List<VectorDocument> result = weaviate.search(vector, 5);

// 步骤 4:拼 Prompt,给 AI 生成答案
String context = result.stream().map(VectorDocument::getText).collect(Collectors.joining("\n"));

✅ 总结一句话:

向量数据库是为了解决“语义检索”问题的,它通过存储向量和计算相似度,让 AI 能在你自己的知识库里“找到最相关的内容”,是 RAG(检索增强生成)必备的技术基础。