Conversation
Share radius resolution and pre-fusion dense filtering across search lanes. Preserve sparse and linkage routes, remove inert RankInput arguments, and cover defaults, boundaries, iterative queries, and RRF score separation. Fixes EverMind-AI#394
|
This looks like the right shape for One acceptance check I would keep explicit before merge: a repeated-query iterative request should prove that each dense pool is filtered independently before RRF/MaxSim, not only that the final result set happens to exclude a low-score item. The easy regression trap is a helper path that filters the first query's pool but lets a later round contribute sub-radius dense hits through fusion. It may also be worth spelling out in docs that |
Summary
Fixes #394.
agenticandllm_multiroundacceptedradiusbut bypassed the manager's dense-recall filter. A request with dense hits at cosine 0.9 and 0.2 andradius=0.5now removes the 0.2 hit before fusion on every iterative query. Existingvectorandhybridfiltering remains in place.top_k: explicit values win (including zero), unlimited searches default to 0.5, and positivetop_khas no implicit floor.RankInput.radiusarguments. Never map cosine thresholds toahybrid_retrieve(min_score=...), which would compare them with a different score scale.min_score. Cover dispatch/defaults, zero and boundary scores, sparse preservation, empty dense pools, both agent kinds, and repeated queries with real RRF/MaxSim operators.Area
Acceptance coverage
Verification
Validation for PR head
33d7e23:make lintandmake packagepassed; Python 3.12 and 3.13 unit suites each passed (2623 passed, 4 skipped), and both integration suites passed (183 passed, 5 skipped, 7 deselected each). The Milvus 2.6.22 repository and/getchecks passed; its tiered API suite and final index-contract check are still running/pending as of this update. The linked run is the live status source.fcntlstand-in that raises on POSIX operations; Linux CI uses the real platform.The Linux validation branch has identical source, tests, and documentation to this PR. Its only differences are CI configuration: enabling the validation-branch push trigger and using the same MinIO version tag from
quay.io/minio/miniofor Milvus setup. The image-source workaround is not part of this PR; the unchanged upstream workflow may still encounter the previously observed Docker Hub pull failure.Checklist
main..envfiles, dependency folders, or generated output.Notes for Reviewers
This implements option (a) from the issue: a pre-fusion dense cosine floor. Keyword matches, cluster expansions, and case-to-skill linkage remain independent recall routes; radius is not a final-score floor or a promise of monotonically decreasing result counts. The existing
min_scorebehavior is unchanged.The intended behavior change includes default unlimited iterative searches: they now honor the documented 0.5 floor. Internal helper callers that omit the new optional argument retain unfiltered behavior. VECTOR and HYBRID already filtered dense hits before this change; the unused ranker argument was not evidence that those paths ignored radius.
By submitting this pull request, I agree that my contribution is licensed under the Apache License 2.0.