Qdrant 的核心数据模型是:Collection(集合)包含多个 Point(数据点),每个 Point 由 ID、Vector(向量)和可选的 Payload(附加数据)组成。
| 模型 | 含义 | 类比与示例 |
|---|---|---|
| Collection | 存放一组 Point,定义向量维度、相似度计算方式等配置 | 类似一张表,例如商品集合 products |
| Point | 一条独立的数据记录,是写入、查询、更新和删除的基本单位 | 一个商品 |
| ID | Point 在当前 Collection 内的唯一标识,支持无符号 64 位整数或 UUID | 1001 |
| Vector | 内容的数值表示,用于相似度检索 | 商品描述经过 Embedding 模型生成的向量 |
| Payload | 附着在 Point 上的 JSON 数据,用于保存业务信息和条件过滤 | 商品名称、分类、价格、是否有货 |
以上结构参见 Collection 文档和 Point 文档。
#mermaid-svg-WARazuEg3SHlKW39{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-WARazuEg3SHlKW39 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-WARazuEg3SHlKW39 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-WARazuEg3SHlKW39 .error-icon{fill:#552222;}#mermaid-svg-WARazuEg3SHlKW39 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-WARazuEg3SHlKW39 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-WARazuEg3SHlKW39 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-WARazuEg3SHlKW39 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-WARazuEg3SHlKW39 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-WARazuEg3SHlKW39 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-WARazuEg3SHlKW39 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-WARazuEg3SHlKW39 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-WARazuEg3SHlKW39 .marker.cross{stroke:#333333;}#mermaid-svg-WARazuEg3SHlKW39 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-WARazuEg3SHlKW39 p{margin:0;}#mermaid-svg-WARazuEg3SHlKW39 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-WARazuEg3SHlKW39 .cluster-label text{fill:#333;}#mermaid-svg-WARazuEg3SHlKW39 .cluster-label span{color:#333;}#mermaid-svg-WARazuEg3SHlKW39 .cluster-label span p{background-color:transparent;}#mermaid-svg-WARazuEg3SHlKW39 .label text,#mermaid-svg-WARazuEg3SHlKW39 span{fill:#333;color:#333;}#mermaid-svg-WARazuEg3SHlKW39 .node rect,#mermaid-svg-WARazuEg3SHlKW39 .node circle,#mermaid-svg-WARazuEg3SHlKW39 .node ellipse,#mermaid-svg-WARazuEg3SHlKW39 .node polygon,#mermaid-svg-WARazuEg3SHlKW39 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-WARazuEg3SHlKW39 .rough-node .label text,#mermaid-svg-WARazuEg3SHlKW39 .node .label text,#mermaid-svg-WARazuEg3SHlKW39 .image-shape .label,#mermaid-svg-WARazuEg3SHlKW39 .icon-shape .label{text-anchor:middle;}#mermaid-svg-WARazuEg3SHlKW39 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-WARazuEg3SHlKW39 .rough-node .label,#mermaid-svg-WARazuEg3SHlKW39 .node .label,#mermaid-svg-WARazuEg3SHlKW39 .image-shape .label,#mermaid-svg-WARazuEg3SHlKW39 .icon-shape .label{text-align:center;}#mermaid-svg-WARazuEg3SHlKW39 .node.clickable{cursor:pointer;}#mermaid-svg-WARazuEg3SHlKW39 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-WARazuEg3SHlKW39 .arrowheadPath{fill:#333333;}#mermaid-svg-WARazuEg3SHlKW39 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-WARazuEg3SHlKW39 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-WARazuEg3SHlKW39 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-WARazuEg3SHlKW39 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-WARazuEg3SHlKW39 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-WARazuEg3SHlKW39 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-WARazuEg3SHlKW39 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-WARazuEg3SHlKW39 .cluster text{fill:#333;}#mermaid-svg-WARazuEg3SHlKW39 .cluster span{color:#333;}#mermaid-svg-WARazuEg3SHlKW39 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-WARazuEg3SHlKW39 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-WARazuEg3SHlKW39 rect.text{fill:none;stroke-width:0;}#mermaid-svg-WARazuEg3SHlKW39 .icon-shape,#mermaid-svg-WARazuEg3SHlKW39 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-WARazuEg3SHlKW39 .icon-shape p,#mermaid-svg-WARazuEg3SHlKW39 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-WARazuEg3SHlKW39 .icon-shape .label rect,#mermaid-svg-WARazuEg3SHlKW39 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-WARazuEg3SHlKW39 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-WARazuEg3SHlKW39 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-WARazuEg3SHlKW39 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Qdrant
Collection:products
Collection:articles
Point:1001
Point:1002
其他 Point
ID
1001
Vector
用于相似度检索
Payload
业务数据与过滤条件
name:无线降噪耳机
category:耳机
price:399
例如,products 集合中的一个 Point 可以是:
json
{
"id": 1001,
"vector": [0.12, -0.35, 0.88, 0.21],
"payload": {
"name": "无线降噪耳机",
"description": "支持主动降噪,适合通勤使用",
"category": "耳机",
"price": 399,
"in_stock": true,
"tags": ["无线", "降噪", "通勤"]
}
}
这是一个示意商品,向量数值也是示意值:
id:用于精确定位这条记录,例如读取或删除商品1001。vector:用于寻找语义相似的商品。这里使用 4 维向量,因此集合的对应向量配置也必须是 4 维。payload:保存商品信息。检索时可限定category = "耳机"、price ≤ 500、in_stock = true,再结合向量相似度寻找符合要求的商品。Payload 文档
一个 Point 也可以包含多个命名向量,例如同一个商品分别保存文字特征和图片特征:
json
{
"id": 1001,
"vector": {
"text": [0.12, -0.35, 0.88, 0.21],
"image": [0.61, 0.23, -0.14]
},
"payload": {
"name": "无线降噪耳机",
"category": "耳机"
}
}
此时需要在 Collection 中分别配置 text 为 4 维、image 为 3 维;检索时指定使用哪一种向量。不同命名向量可以采用不同的维度和距离算法。命名向量说明
底层还有 Shard(分片)和 Segment(存储段) :Collection 的数据划分到 Shard,每个本地分片副本内部包含多个 Segment;Segment 保存向量、Payload 和相关索引。它们属于存储组织层,业务接口主要围绕 Collection 和 Point 操作。架构说明、存储说明