plexus-engine 0.3.6

Engine integration traits for consuming Plexus plans
Documentation
Feature: vector extension hardening

@vector
Scenario: vector scan tie preserves collection order
When executing plan mlir:
"""
func.func @vector_scan_tie_order() {
  %0 = plexus.const_row : !plexus.rows<0>
  %1 = plexus.vector_scan %0 {collection = "docs", query_vector = #plexus.list<[#plexus.lit<1.0 : f64>, #plexus.lit<1.0 : f64>]>, metric = #plexus.vector_metric<dot_product>, top_k = 3 : i32, approx_hint = false, schema = [#plexus.col<"doc", node>, #plexus.col<"score", float64, "float64">]} : (!plexus.rows<0>) -> !plexus.rows<2>
  plexus.return %1 : (!plexus.rows<2>) -> ()
}
"""
Then the result should be, in order:
| node:1 | float:1.0 |
| node:2 | float:1.0 |
| node:3 | float:1.0 |

@vector
Scenario: rerank tie preserves input order
When executing plan mlir:
"""
func.func @rerank_tie_order() {
  %0 = plexus.const_row : !plexus.rows<0>
  %1 = plexus.vector_scan %0 {collection = "docs", query_vector = #plexus.list<[#plexus.lit<1.0 : f64>, #plexus.lit<1.0 : f64>]>, metric = #plexus.vector_metric<dot_product>, top_k = 3 : i32, approx_hint = false, schema = [#plexus.col<"doc", node>, #plexus.col<"score", float64, "float64">]} : (!plexus.rows<0>) -> !plexus.rows<2>
  %2 = plexus.rerank %1 {score_expr = #plexus.vector_similarity<dot_product, #plexus.prop<0, "embedding">, #plexus.list<[#plexus.lit<1.0 : f64>, #plexus.lit<1.0 : f64>]>>, top_k = 3 : i32, schema = [#plexus.col<"doc", node>, #plexus.col<"score", float64, "float64">]} : (!plexus.rows<2>) -> !plexus.rows<2>
  plexus.return %2 : (!plexus.rows<2>) -> ()
}
"""
Then the result should be, in order:
| node:1 | float:1.0 |
| node:2 | float:1.0 |
| node:3 | float:1.0 |

@vector
Scenario: vector similarity rejects dimension mismatch
When executing plan mlir:
"""
func.func @vector_similarity_dimension_mismatch() {
  %0 = plexus.scan_nodes {labels = ["Doc"], schema = [#plexus.col<"d", node>]} : !plexus.rows<1>
  %1 = plexus.project %0 {exprs = [#plexus.vector_similarity<dot_product, #plexus.prop<0, "embedding">, #plexus.list<[#plexus.lit<1.0 : f64>, #plexus.lit<0.0 : f64>, #plexus.lit<0.0 : f64>]>>], schema = [#plexus.col<"score", float64, "float64">]} : (!plexus.rows<1>) -> !plexus.rows<1>
  plexus.return %1 : (!plexus.rows<1>) -> ()
}
"""
Then an error should contain: numeric value

@vector
Scenario: vector similarity rejects non-numeric vector elements
When executing plan mlir:
"""
func.func @vector_similarity_non_numeric() {
  %0 = plexus.scan_nodes {labels = ["Doc"], schema = [#plexus.col<"d", node>]} : !plexus.rows<1>
  %1 = plexus.project %0 {exprs = [#plexus.vector_similarity<dot_product, #plexus.prop<0, "embedding">, #plexus.list<[#plexus.lit<1.0 : f64>, #plexus.lit<"oops">]>>], schema = [#plexus.col<"score", float64, "float64">]} : (!plexus.rows<1>) -> !plexus.rows<1>
  plexus.return %1 : (!plexus.rows<1>) -> ()
}
"""
Then an error should contain: numeric value

@vector
Scenario: vector similarity rejects missing embedding property
When executing plan mlir:
"""
func.func @vector_similarity_missing_embedding() {
  %0 = plexus.scan_nodes {labels = ["Doc"], schema = [#plexus.col<"d", node>]} : !plexus.rows<1>
  %1 = plexus.project %0 {exprs = [#plexus.vector_similarity<dot_product, #plexus.prop<0, "missing_embedding">, #plexus.list<[#plexus.lit<1.0 : f64>, #plexus.lit<0.0 : f64>]>>], schema = [#plexus.col<"score", float64, "float64">]} : (!plexus.rows<1>) -> !plexus.rows<1>
  plexus.return %1 : (!plexus.rows<1>) -> ()
}
"""
Then an error should contain: numeric value

@vector @cap-vector-disabled
Scenario: vector plans are rejected by vector-disabled capabilities
When executing plan mlir:
"""
func.func @vector_capability_rejection() {
  %0 = plexus.const_row : !plexus.rows<0>
  %1 = plexus.vector_scan %0 {collection = "docs", query_vector = #plexus.list<[#plexus.lit<1.0 : f64>, #plexus.lit<0.0 : f64>]>, metric = #plexus.vector_metric<dot_product>, top_k = 3 : i32, approx_hint = false, schema = [#plexus.col<"doc", node>, #plexus.col<"score", float64, "float64">]} : (!plexus.rows<0>) -> !plexus.rows<2>
  plexus.return %1 : (!plexus.rows<2>) -> ()
}
"""
Then an error should contain: unsupported features