Skip to content

bug: rrf order on a traversed binding fails on engine v2 #762

Description

@azimafroozeh

What happened

With set engine = v2;, a query that orders by rrf(nearest(...), bm25(...)) on a binding reached through a traversal fails with RRF arm has no ranking column 'd._distance'; expected {"d.slug":"d1"}, which the same query returns under set engine = v1;. Found by running .gqt cases on v2 and comparing each step's rows with v1; Steps is the shrunk case in the .gqt corpus format.

Steps to reproduce

--- schema
node Doc {
    slug: String @key
    body: String @index
    embedding: Vector(2) @index
}
node Topic {
    name: String @key
}
edge About: Doc -> Topic

--- seed
{"type":"Doc","data":{"slug":"d1","body":"needle","embedding":[1.0,0.0]}}
{"type":"Doc","data":{"slug":"d2","body":"filler","embedding":[0.0,1.0]}}
{"type":"Topic","data":{"name":"storage"}}
{"edge":"About","from":"d1","to":"storage"}
{"edge":"About","from":"d2","to":"storage"}

--- query
set engine = v2;
query ranked_destination() {
    match { $t: Topic { name: "storage" } $d about $t }
    return { $d.slug }
    order { rrf(nearest($d.embedding, [1.0, 0.0]), bm25($d.body, "needle")) }
    limit 1
}

Version

omnigraph 0.11.0, PR 760 branch planner-m3-read-path-plan @ 09f1956 (engine v2 is not on main yet), built from source

Environment

macOS (Darwin 25.5) arm64, local filesystem store (the .gqt harness runs the embedded engine). Not tried on an object-store backend.

Logs / output

query failed: RRF arm has no ranking column 'd._distance'

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

P-highHigh priorityacceptedTriaged and validated; open for a PRbugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions