[Bug] Deleted rows take vector search top-k slots in data-evolution tables
Maintainer antworten meist innerhalb von 3 Tagen
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 57/100
Rechercherichtung
Start with LiveRowGlobalIndexReader::VisitVectorSearch and compare its vector path with the full-text path that loads live rows before searching shards. The issue suggests combining VectorSearch.pre_filter with shard live rows through ReplacePreFilter, using GlobalIndexLiveRowFilter::LiveRows, or loading live rows before fan-out. Add coverage for the reproduction with three deleted nearest rows and verify that a limit of 3 returns 3 live rows when enough matches pass the filters.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Search before asking
- I searched in the issues and found nothing similar.
Paimon-cpp version
main at commit 50ef548ec87cc444a153fb2a03789f9be768d610, with #448 applied.
Minimal reproduce step
- Create a data-evolution table with row tracking and
deletion-vectors.enabled = true. Write 10 rows with a vector column, then build a vector global index on that column. - Delete the three rows nearest to a query vector, using deletion vectors.
- Search for that vector with
limit = 3throughGlobalIndexScan::CreateReader→VisitVectorSearch. - Pass the result to
ScanContextBuilder::SetGlobalIndexResult, then scan and read.
What doesn't meet your expectations?
The index still ranks the deleted rows, so they take all three top-k slots. The read then drops them, because deletion vectors are applied only at read time. The query returns 0 rows instead of 3.
#448 (for #403) excludes deleted rows only from full-text ranking: LiveRowGlobalIndexReader::VisitVectorSearch delegates unchanged, and live rows are loaded only before a full-text search fans out to the shards. Java filters vector search with the same live rows (apache/paimon#8459).
Expected: limit = k returns k live rows whenever at least k live rows pass the search's pre_filter and predicate.
Anything else?
Follow-up of #403 / #448.
Suggestions:
VectorSearchalready carries apre_filterover global row ids, soLiveRowGlobalIndexReader::VisitVectorSearchcan combine it with the live rows of the shard throughReplacePreFilter, reusingGlobalIndexLiveRowFilter::LiveRows, and pass the search on unchanged when the whole shard is live.- Load live rows on the visiting thread before a vector search fans out to the shards, as
LiveRowUnionGlobalIndexReaderdoes for full-text search.
Are you willing to submit a PR?
- I'm willing to submit a PR!
- Vorherrschende Sprache
- C++
- Sterne
- 70
- Forks
- 36
- Ø Merge
- 3 T. 16 Std.
- Gemergte PRs (30 T.)
- 38
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus apache/paimon-cpp
-
[Feature] Split the table hierarchy and materialize the store a table is served byEvtl. vergeben @lucasfang hat das vor 5 Tagen übernommen. Offen
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 20/100
apache/paimon-cpp#459 ·
Maintainer antworten meist innerhalb von 3 Tagen
-
[Feature] Support hybrid file-index queries with full-text search, vector search, and predicateOffenenhancement
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
apache/paimon-cpp#452 ·
Maintainer antworten meist innerhalb von 3 Tagen
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 8/100
apache/paimon-cpp#435 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 3 Tagen
-
enhancement
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
apache/paimon-cpp#410 ·
Maintainer antworten meist innerhalb von 3 Tagen
-
enhancement
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
apache/paimon-cpp#409 ·
Maintainer antworten meist innerhalb von 3 Tagen
Alle Issues in apache/paimon-cpp
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
k2-fsa/sherpa-onnx#4100 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 1 Tag
-
Mod: Part Design Topic: User Interface
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Maintainer antworten meist innerhalb von 1 Tag
-
A-tools P-medium S-ready-to-start task
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 77/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
sistemicorp/scripts#62 ·