---
title: "先看懂向量检索再做 RAG：用 Qdrant 本地模式跑通最小实验"
slug: "qdrant-local-vector-search-first-lab"
kind: "runbook"
version: "1.0"
status: "reviewed"
compatibility: "符合当前 qdrant-client 要求的独立 Python 环境；支持 query_points 接口；使用本地内存模式。"
risk_level: "medium"
requires_approval: true
updated_at: "2026-10-19T00:31:48.754Z"
verified_at: ""
source: "https://blog.atlankj.com/posts/qdrant-local-vector-search-first-lab"
---

# 目标

用三条手工向量完成 Qdrant 内存模式实验，分开验证写入、排序与 payload 条件过滤。

# 前置条件

- 已授权在独立目录创建实验脚本。
- 已建立 Python 环境；客户端安装与包下载需在授权范围内。
- 已确认不连接生产数据库、云端服务或嵌入模型。

# 输入

A 文三条合成数据、三维向量、query_points 查询参数和 topic 过滤条件。

# 约束

- 客户端必须使用 QdrantClient(":memory:")。
- 不使用现有数据目录、服务端 URL 或云凭据。
- 不下载嵌入模型，不调用模型 API。
- 不把手工向量的结果解释为中文语义理解或完整 RAG。
- 不扩大到真实业务资料，不删除现有 collection。

# 操作步骤

1. 检查项目指令、Python 环境及安装授权，记录实际客户端版本。
2. 在独立目录保存 A 文 vector_lab.py。
3. 创建名为 rag_sandbox 的 collection，设置维度为 3、距离为 COSINE。
4. 一次写入三个合成 point，保留 title 与 topic payload。
5. 查询 [0.9, 0.1, 0.0]，检查第一条结果的 ID 为 1。
6. 追加 topic=ops 过滤查询，检查结果 ID 列表仅为 [1]。
7. 记录执行结果、断言与未验证项目。
8. 结束实验；内存数据无需额外删除。

# 输出结果

实验脚本、环境版本、实际排序和过滤结果、断言状态及能力边界说明。

# 验证方法

- 三个向量维度与 collection 一致。
- 第一次查询的首位结果为 1。
- 带 ops 过滤时只返回 ID 为 1 的点。
- 没有连接外部数据库，也没有进行嵌入或生成调用。
- 明确本实验尚未实现真实语义检索和答案生成。

# 异常处理

- query_points 不存在：检查安装版本与当前官方接口，不改接现有服务器。
- 维度不一致：核对输入数据，不重建任何真实 collection。
- 断言失败：保留实际参数与结果，对照距离计算和过滤字段排查。
- 安装受限：说明前置条件，保留脚本而不擅自更换网络策略。

# 回滚方式

结束本次内存客户端即可丢弃实验数据。保留脚本与日志；仅在已有删除授权时清理本次新建文件，不修改其他项目或共享缓存。

# 参考来源

- https://github.com/qdrant/qdrant-client
- https://qdrant.tech/documentation/concepts/filtering/

资料核对：2026-10-19。示例对照官方文档编写，未在读者环境实测。
