nexyron.semantic.edges

Generic Description

Debug-only semantic retrieval of edges.

Normal semantic search should use one query:

CALL nexyron.semantic.search({query: 'fraud cluster', k: 5})
YIELD result_kind, item_id, node_id, edge_id, source, name, score, text, metadata_json
RETURN result_kind, item_id, node_id, edge_id, source, name, score, text, metadata_json
ORDER BY score DESC

Semantic search procedures expose vector and semantic retrieval surfaces through Cypher.

Consumer-Level Explanation

Use nexyron.semantic.search for normal semantic retrieval. nexyron.semantic.edges is retained only for debugging the edge slice of the unified semantic index without graph-node, abstraction, or artifact results. Use these procedures when retrieval should combine semantic scoring with graph filters, metadata, and planner-visible row shaping.

Conceptual Explanation

nexyron.semantic.edges should be read as one named procedure contract in the broader Nexyron Cypher surface. The procedure call is not only a syntax hook: it defines what runtime state, projection, registry entry, or graph algorithm is being asked to operate, and it determines which output columns downstream YIELD, WITH, and RETURN stages can safely use.

More Detailed Explanation

This procedure returns only edge-index hits. It is useful for index debugging when relationships carry semantically interesting text, but it is not the product search surface.

The returned score is a cosine-similarity relevance score. Higher values are more similar to the query; sort with ORDER BY score DESC when you need explicit ordering after additional matches.

Advanced Example

This debug-only example isolates the edge slice of the unified semantic index. Use the unified procedure unless you are checking whether edge embeddings exist and are searchable.

CALL nexyron.semantic.search({query: 'identity fraud cluster', k: 10, ef: 200})
YIELD result_kind, item_id, node_id, edge_id, source, name, score, text, metadata_json
WITH result_kind, edge_id, score, text
WHERE result_kind = 'edge'
MATCH (u:User)-[e:INTERACTED_WITH]->(d:Document)
WHERE id(e) = edge_id
TIME e.ts BETWEEN datetime('2025-01-01T00:00:00Z') AND datetime('2025-03-01T00:00:00Z')
WITH edge_id, score, date_trunc('day', e.ts) AS day_bucket, properties(d) AS doc_map, unpivot(properties(d.metadata)) AS metadata_rows
RETURN edge_id, score, day_bucket, keys(doc_map) AS doc_keys, metadata_rows
LIMIT 10

Real Use Cases

Real Limitations And Tradeoffs