Qdrant怎么用 Rust向量数据库部署教程
更新时间:2026-10-09 08:37:48 发布时间:1小时前 阅读:3次Qdrant是一个用Rust写的开源向量数据库,搜索速度快、资源占用低,适合做AI语义搜索和推荐系统。它把向量和业务字段一起存储,既能找相似内容,也能按标签筛选。下面用Docker启动服务,再通过REST API建集合、写入向量并完成搜索;示例向量仅用于演示,实际项目要换成模型生成的嵌入。
第一步:Docker启动Qdrant
先确认电脑已安装并启动Docker,再在终端运行:docker run -p 6333:6333 -p 6334:6334 -v qdrant_storage:/qdrant/storage qdrant/qdrant。这里把数据目录挂到Docker卷,容器重启后数据仍可保留。启动后浏览器打开http://localhost:6333/dashboard,可进入管理界面;本地试用方便,但不要把未鉴权端口直接暴露到公网。
如果想用Docker Compose管理服务,可创建compose.yaml,配置镜像为qdrant/qdrant,并映射6333和6334端口、挂载持久化卷,然后执行docker compose up -d。6333用于HTTP接口,6334用于gRPC客户端。查看状态可运行docker compose ps;需要停止时执行docker compose down,卷通常会保留,除非另外删除。
第二步:创建集合和写入数据
集合(collection)可以理解为一组向量记录。用curl向本机服务发送PUT请求,创建名为articles的集合,并设置向量长度为4、距离类型为Cosine。正式使用时,向量长度必须与嵌入模型输出维度一致,距离指标也应参考模型的训练方式;不能为了照抄示例而把真实向量随意改成4维。
创建后向/collections/articles/points发送PUT请求写入点,点包含唯一ID、向量和payload元数据,例如内容类别、标题或租户编号。演示数据可以使用[0.1,0.2,0.3,0.4]这样的数组,payload则放入{“category”:”guide”}。业务代码中先生成文本嵌入,再把嵌入和原文标识等字段一起写入;批量导入时可分批提交,避免一次请求过大。
配置向量距离和索引
创建集合时常见距离有Cosine、Dot和Euclid。Cosine适合比较方向相似度,Dot常用于模型直接以点积训练的场景,Euclid衡量欧氏距离;具体选择以嵌入模型说明为准。Qdrant会为向量搜索构建索引,默认配置可先用于小规模验证。数据量增长后,再结合内存、延迟和召回效果调整HNSW等索引参数。
如果搜索经常按payload字段过滤,例如category或tenant_id,可以为该字段创建payload索引,帮助过滤查询更有效率。按业务真实筛选条件建索引即可,不必给所有字段都建索引。还要检查向量维度、距离类型与写入数据一致;若集合已创建但配置不合适,评估迁移或重建方案后再调整,避免影响线上查询。
第三步:相似度搜索和过滤
搜索时向/collections/articles/points/search提交查询向量、limit和可选filter,Qdrant会返回最相近的点及score。比如输入与写入时同一模型生成的查询嵌入,并把limit设为5,就能取回前五条候选。score的解释受距离类型影响,建议在应用侧结合业务排序验证,不要把不同指标下的分数直接混用。
要限定类别,可在filter中用must条件匹配payload的category字段;数值字段也可设置范围条件。这样系统先按照语义向量寻找相似内容,同时满足业务筛选规则。调试时先试无过滤查询,再逐步添加条件,并核对返回点的payload与score。生产环境还应配置访问控制、备份和监控,并限制服务端口仅对可信网络开放。
如果希望减少自建运维,也可以评估托管或国内云服务方案,例如火山引擎;选择前对照数据规模、接口兼容性、费用和部署区域。相关入口可查看volcengine.cgref.cn。润灭整理这类部署教程时,建议先在测试环境验证向量维度、过滤逻辑和持久化,再迁移正式数据。