向量数据库介绍
向量数据库(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. 相似度搜索(Similarity Search)
用户问“退货政策是什么”,你:
- 把这个问题也转成向量(用 embedding 模型)
- 在数据库中找“和这个向量最近的几个向量”(比如余弦相似度 topK)
结果就是“语义最相关”的内容。
✅ 3. 元数据过滤(可选)
除了向量,也可以存 metadata,比如:
1 | { |
查询时可以加条件:
- 搜“和 X 最像的内容”,但 必须是‘用户手册’中的内容
🏗️ 四、内部结构简图
1 | ┌──────────────────────────────┐ |
🔧 五、常用术语解释
术语 | 含义 |
---|---|
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 | // 步骤 1:文本转向量(用 OpenAI embedding) |
✅ 总结一句话:
向量数据库是为了解决“语义检索”问题的,它通过存储向量和计算相似度,让 AI 能在你自己的知识库里“找到最相关的内容”,是 RAG(检索增强生成)必备的技术基础。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 牧尘的NAS小站!
评论