1. 向量数据库与相似性搜索基础
在信息检索和机器学习领域,向量已经成为表示数据的主流方式。不同于传统的关键词匹配,向量化表示能够捕捉数据的深层次特征和语义信息。Milvus作为一款开源的向量数据库,专门为高效存储和检索向量数据而设计。
1.1 为什么需要向量数据库?
传统数据库在处理非结构化数据(如图片、视频、文本)时面临巨大挑战。向量数据库通过以下方式解决了这些问题:
- 特征提取:使用深度学习模型将非结构化数据转换为向量表示
- 相似性计算:通过距离度量(如余弦相似度)比较向量间的相似程度
- 高效检索:利用专门的索引结构加速大规模向量搜索
提示:向量数据库不是要取代传统数据库,而是专门为向量搜索场景优化的解决方案。
1.2 向量表示的基本概念
所有向量本质上都是高维空间中的点,但根据其特性可以分为两大类:
稠密向量示例(768维BERT嵌入)
python复制[0.12, -0.45, 0.87, ..., -0.23, 0.56] # 每个维度都有非零值
稀疏向量示例(词频表示)
python复制{15: 2.1, 1024: 0.9, 2048: 1.3} # 只有少数维度有值,其余默认为0
这两种表示形式各有优劣,适用于不同的场景和应用需求。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 稠密向量详解与应用
2.1 稠密向量的特性与生成
稠密向量是通过深度学习模型提取的连续分布式表示,具有以下特点:
- 维度固定:通常为128/256/768/1024维等
- 全维度有效:每个维度都包含语义信息
- 相似性计算:使用余弦相似度或欧氏距离
常见生成方式:
- 文本嵌入:BERT、RoBERTa等Transformer模型
- 图像特征:ResNet、CLIP等CNN/ViT模型
- 多模态表示:CLIP等跨模态模型
python复制# 使用HuggingFace生成文本稠密向量示例
from transformers import AutoModel, AutoTokenizer
model = AutoModel.from_pretrained("bert-base-uncased")
t
