向量数据库中存放的是向量本身(即数据向量化后的高维数值表示),同时会关联存储原始数据的ID和元数据。
具体来说,向量数据库包含以下内容:
1. 向量本身(核心存储)
- 原始数据经过embedding模型处理后得到的数值向量
- 通常是浮点数数组(如128维、768维、1536维等)
- 这些向量才是向量数据库真正用于相似性搜索的核心数据
2. 关联存储的信息
- 原始数据的ID:用于反向查找原始数据
- 元数据:原始数据的其他属性(如文本内容、标签、时间戳等)
- 索引结构:用于加速相似性搜索的索引(如HNSW、IVF等)
典型存储结构示例:
python
{
"vector": [0.12, -0.34, 0.56, ...], # 768维向量
"id": "doc_001", # 原始数据ID
"metadata": { # 元数据
"text": "人工智能是未来...",
"category": "科技",
"timestamp": "2024-01-15"
}
}
工作流程:
原始数据 → Embedding模型 → 向量化 → 存入向量数据库
↓ ↓
文本/图片 向量存储 + ID + 元数据
↓
搜索时:查询向量 → 相似度计算 → 返回最相似的向量 → 通过ID获取原始数据
常见的向量数据库:
- Pinecone 、Weaviate 、Qdrant:同时存储向量和元数据
- Milvus 、Chroma:向量 + ID + 可选的元数据
- Faiss(更偏向索引库):主要关注向量索引,元数据需要外部管理
简单说:向量是主角,ID和元数据是重要的配角,三者一起才能实现完整的检索功能。