mirror of
https://github.com/qdrant/qdrant.git
synced 2026-07-26 12:41:04 -05:00
87 lines
2.0 KiB
Python
Executable File
87 lines
2.0 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
# See lib/edge/publish/examples/src/bin/fusion-query.rs for the equivalent Rust example.
|
|
|
|
from qdrant_edge import *
|
|
from common import *
|
|
|
|
|
|
shard = load_new_shard()
|
|
fill_dummy_data(shard)
|
|
|
|
search_filter = Filter(
|
|
must=[
|
|
FieldCondition(
|
|
key="color",
|
|
match=MatchValue(value="red"),
|
|
)
|
|
]
|
|
)
|
|
|
|
# Basic RRF fusion (equal weights)
|
|
print("=== Basic RRF Fusion ===")
|
|
result = shard.query(QueryRequest(
|
|
prefetches = [
|
|
Prefetch(
|
|
prefetches=[],
|
|
query=Query.Nearest([6.0, 9.0, 4.0, 2.0]),
|
|
limit=5,
|
|
params=None,
|
|
filter=None,
|
|
score_threshold=None,
|
|
),
|
|
Prefetch(
|
|
prefetches=[],
|
|
query=Query.Nearest([1.0, -3.0, 2.0, 8.0]),
|
|
limit=5,
|
|
params=None,
|
|
filter=search_filter,
|
|
score_threshold=None,
|
|
)
|
|
],
|
|
query = Fusion.Rrf(k=2),
|
|
filter = None,
|
|
score_threshold = None,
|
|
limit = 10,
|
|
offset = 0,
|
|
params = None,
|
|
with_vector = True,
|
|
with_payload = True,
|
|
))
|
|
|
|
for point in result:
|
|
print(point)
|
|
|
|
# Weighted RRF fusion - first prefetch has 3x weight
|
|
print("\n=== Weighted RRF Fusion (3:1) ===")
|
|
result = shard.query(QueryRequest(
|
|
prefetches = [
|
|
Prefetch(
|
|
prefetches=[],
|
|
query=Query.Nearest([6.0, 9.0, 4.0, 2.0]),
|
|
limit=5,
|
|
params=None,
|
|
filter=None,
|
|
score_threshold=None,
|
|
),
|
|
Prefetch(
|
|
prefetches=[],
|
|
query=Query.Nearest([1.0, -3.0, 2.0, 8.0]),
|
|
limit=5,
|
|
params=None,
|
|
filter=search_filter,
|
|
score_threshold=None,
|
|
)
|
|
],
|
|
query = Fusion.Rrf(k=2, weights=[3.0, 1.0]), # First prefetch has 3x weight
|
|
filter = None,
|
|
score_threshold = None,
|
|
limit = 10,
|
|
offset = 0,
|
|
params = None,
|
|
with_vector = True,
|
|
with_payload = True,
|
|
))
|
|
|
|
for point in result:
|
|
print(point)
|