#10607·qdrant

二进制 Euclidean 查询结果不是按报告得分排序的,当二进制=假分

作者: leemeii创建于 2026年9月11日更新于 2026年9月11日
标签bugaccepted

def call(method, path, **kwargs): response = requests.request( method, BASE + path, timeout=30, **kwargs, ) response.raise_for_status() return response.json()

def search(params): points = call( "POST", f"/collections/{COLLECTION}/points/query", json={ "query": QUERY, "limit": 5, "params": params, }, )["result"]["points"]

return [
    (int(point["id"]), float(point["score"]))
    for point in points
]

def is_monotonic(rows): scores = [score for _, score in rows] return all( left <= right + 2e-5 for left, right in zip(scores, scores[1:]) )

try: call( "PUT", f"/collections/{COLLECTION}", json={ "vectors": { "size": 2, "distance": "Euclid", "hnsw_config": { "m": 4, "ef_construct": 64, }, }, "quantization_config": { "binary": { "always_ram": True, }, }, }, )

call(
    "PUT",
    f"/collections/{COLLECTION}/points?wait=true",
    json={
        "points": [
            {"id": i, "vector": vector}
            for i, vector in enumerate(SEED)
        ]
    },
)

call(
    "PUT",
    f"/collections/{COLLECTION}/points/vectors?wait=true",
    json={
        "points": [
            {"id": 1, "vector": UPDATED_POINT_1}
        ]
    },
)

time.sleep(1)