向量数据库
向量数据库是一种专门用来存储嵌入向量、并能快速检索出语义上最相似向量的数据库。如今,它已成为 RAG 流水线、语义搜索、推荐系统以及 AI 智能体长期记忆的核心基础设施。
向量数据库是一种专门用来存储嵌入向量、并能快速检索出语义上最相似向量的数据库。如今,它已成为 RAG 流水线、语义搜索、推荐系统以及 AI 智能体长期记忆的核心基础设施。
为什么重要
传统 SQL 数据库针对精确的关键词匹配做了优化,但 LLM 时代的搜索建立在语义相似度之上。在数百万个向量(每个 1000 多个维度)中,于几毫秒内找出 top-k 个最近邻,用通用数据库基本是不可能完成的。向量数据库通过近似最近邻(ANN)算法解决了这个问题,从而实现为 LLM 响应提供依据的实时检索。
工作原理
- 生成嵌入:OpenAI、Cohere 等模型把文本或图像转换成向量。
- 建立索引:HNSW、IVF 或 PQ 等 ANN 算法对向量进行结构化组织,以实现快速检索。
- 查询嵌入:用同一个模型把用户查询向量化。
- 相似度搜索:通过余弦相似度、内积或欧氏距离返回 top-k 个向量。
- 关联元数据:把附加在每个向量上的原始文本和元数据返回,并注入 LLM 的上下文。
主流方案
专用向量数据库:
- Pinecone:托管服务,API 简单,上手快
- Weaviate:开源,混合(向量 + 关键词)搜索能力强
- Qdrant:基于 Rust,性能高,资源占用低
- Milvus:可大规模分布式向量搜索
为现有数据库提供的向量扩展:
- pgvector:PostgreSQL 扩展,把向量与 SQL 数据放在一起
- Elasticsearch:将关键词搜索与向量搜索结合
- Redis:内存级向量搜索
常见模式:先用 pgvector 起步,等流量和规模需要时再迁移到专用数据库。
选型标准
数据规模:在 100 万个向量以下,pgvector 就够用。超过 1 亿个向量时,专用数据库不可或缺。
混合搜索:如果你需要把向量 + 关键词 + 过滤一起使用,Weaviate 或 Elasticsearch 表现突出。
延迟:面向用户的应用通常以 p99 ≤ 100ms 为目标。在这一区间内,HNSW 索引最为可靠。
运维负担:Pinecone 等托管服务成本更高,但几乎免除了所有基础设施工作。开源方案(Qdrant、Milvus)则正好相反。
元数据过滤:如果经常需要按类别、日期或用户 ID 进行预过滤,就选择一种能高效地把它与向量搜索结合起来的方案。
对 GEO 的影响
博客运营者很少会自建向量数据库,但把内容写得能在 LLM 和 AI 搜索的向量数据库中恰当地落地,仍然很重要。清晰的标题、自成一体的段落,以及具体的数字和来源,都能提升嵌入质量,这意味着当向量数据库选择引用什么内容时,你能获得更高的相似度分数。
Sources: