Qdrant 浅析
随着 AI 的火热发展,传统数据库或搜索引擎检索高维度信息时性能表现均不佳,伴随着这个问题向量数据库又焕发了第二春。
本文介绍的 Qdrant 是基于 Rust 所编写的一款向量数据库,在它的 benchmarks 我们可以看到对比起 Elasticsearch 具有明显的性能优势。
本文仅介绍 qdrant 相关概念,以及内部存储结构。涉及到 embedding 等相关概念请自行搜索
模型
Points
point 可以理解为关系型数据库中表记录中的一条,它由一个向量和一个可为空的 Payload
组成。伪代码如下:
enum PointIdType {
U64(u64),
UUID(uuid),
}
struct Point {
id: PointIdType,
vector: Vec<f32>,
payload: Option<Payload>,
}
Payload
Qdrant的一个重要特性之一是能够在向量中存储附加信息。 Qdrant允许存储任何可以使用JSON表示的信息。
Collections
Collections 可以理解为关系型数据库中的表,它的一行就是一个 point 。
缩略图
Figure 1: qdrant结构图
流程
Points upsert
Figure 2: 客户端插入Point流程图