# Qdrant ColBERT：用多向量 MaxSim 重排候选，观察关键词分别匹配到哪里

已运行真实Qdrant内存多向量MAX_SIM，手工向量文档1得分约1.9并排第一；未运行ColBERT编码器或外部Qdrant。

## 运行

在本目录使用独立虚拟环境并安装requirements.txt；脚本结果写入results。

```sh
python reference/audit.py
python reference/run_sdk.py
```

fixtures是原创输入与故意失败样本；作者真值、离线合成provider和实际SDK记录各自标明，不是模型正确率。需要真实模型/账号/GPU的步骤按正文另行授权运行。

## 1. 逐token保存原创二维向量

query有Q7与阀门两个方向，文档1分别匹配两个token。向量是作者手工数值，不冒称ColBERT模型编码。

## 2. 先计算MaxSim参考值

audit.py对每个query token取文档token最大点积再求和，文档1为1.9、文档2为1.2。保留逐token贡献，不能只显示总分。

## 3. 建立真实Qdrant多向量集合

用VectorParams(size=2,distance=DOT,multivector_config=MAX_SIM)，不要把二维数组误当单个向量。包内本地内存客户端可不启动服务器。

## 4. 上传同一组多向量点

逐条保存point ID、payload和token向量。生产ColBERT需另用真实模型编码，并核对tokenizer及模型版本。

## 5. 执行原生query_points

传二维query向量，保存Qdrant实际ID/score，与作者参考并列。匹配分高不等于事实正确或拥有访问权限。

## 6. 加入单向量压缩反例

把多token均值仅作为比较，观察信息损失；不能把两种分数刻度当成直接可比概率。

## 7. 交付逐token贡献和原生排序

保留公式、输入、实际SDK回执和版本。本包只验证多向量检索机制，不训练或运行ColBERT编码器。

## 官方依据

- Qdrant 官方文档或源码：https://qdrant.tech/documentation/concepts/vectors/
