2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家
为什么我们需要专用的向量数据库?
在前五篇文章中,我们弄清楚了如何对文档进行分块并生成嵌入向量。现在,这些向量存储在哪里,以及如何高效地检索它们?
你可能会想:“我不能直接把向量存储在雷迪斯(Redis)或波斯特格雷SQL(PostgreSQL)中吗?”
不能 — 传统数据库是为精确查询设计的(例如,WHERE id = 123),而向量检索是近似最近邻(ANN)搜索:给定一个查询向量,在数亿个文档向量中快速找到最相似的 Top-K 个向量。传统数据库索引(B树、哈希表)在这种“相似性查询”面前无能为力。
示例:
- 传统查询:
查找 id=42 的用户→ O(1) 或 O(log n) - 向量查询:
查找与用户 A 最相似的 10 个人→ 需要与所有向量进行比较,暴力破解的 O(n) 太慢
向量数据库使用专用的 ANN 索引(如 HNSW、IVF 等),将 O(n) 降低到 O(log n),在毫秒级完成数十亿向量的相似性搜索。
向量数据库的三大核心能力
1. 向量存储
存储海量向量(数百万到数十亿),每个向量都附带原始文本和元数据。支持增量写入和删除。
2. ANN 近似最近邻搜索
核心算法:
| 算法 | 原理 | 优点 | 缺点 |
|---|---|---|---|
| HNSW | 分层可导航小世界图,多层结构,从粗到细进行搜索 | 速度快、精度高、支持动态更新 | 内存占用较高 |
| IVF | 倒排文件,将向量空间划分为簇,先找到最近的簇再搜索 | 节省内存,适合静态数据 | 添加/删除向量需要重建索引 |
| Flat | 暴力全量比较 | 100% 准确 | 极慢,仅适用于小型数据集 |
建议:开发阶段使用 Flat(简单),生产环境使用 HNSW(性能最佳)。
3. 元数据过滤
这是区分向量数据库与纯向量库(如 FAISS)的关键能力。你可以同时做两件事:
- 使用向量相似性查找语义相关的内容
- 应用元数据条件进行精确过滤(例如,
time > 2024-01-01 AND category = "technical")
# 示例:仅检索 2024 年之后的技术文档
results = vectorstore.similarity_search(
query="微服务监控",
k=5,
filter={
"category": "technical",
"yea
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。