# Qdrant 混合检索：融合稠密与稀疏候选，让罕见型号和语义改写都能找到

已运行真实Qdrant内存dense+sparse Prefetch/RRF并保存实际排序；作者k60公式仅参考，未运行真实embedding/BM25或业务召回评估。

## 运行

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

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

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

## 1. 构造型号精确词与语义两个信号

稠密向量偏向通用重启内容，稀疏索引7表示Q7型号。所有向量为作者手工设置，目的是观察融合机制。

## 2. 保留各路原始候选

audit.py分别输出dense和sparse排名，再算作者k=60的参考RRF。这个常数不冒充当前Qdrant默认值。

## 3. 创建命名dense与sparse向量

集合分别配置vectors_config与sparse_vectors_config；两个分支都记录向量名称，避免查询走错字段。

## 4. 运行两路prefetch

用同一查询分别发Dense向量和SparseVector(indices,values)，记录limit和过滤条件。预取过少可能让目标永远进不了融合。

## 5. 执行FusionQuery RRF

真实query_points把两个Prefetch送进Fusion.RRF，保留实际分数和顺序，不拿作者公式硬断言服务默认分值。

## 6. 比较稀有型号的召回

查看文档3是否进入候选、融合后位置如何；同时保留只有dense的反例。混合检索仍须用真实任务评估相关性。

## 7. 交付三份排序与配置

包内提供原生内存Qdrant脚本和作者参考。未运行真实embedding/BM25训练，不能把手工向量结果当生产召回率。

## 官方依据

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