nexyron.semantic.nodes

Generic Description

Debug-only semantic retrieval of nodes.

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.nodes is retained only for debugging the node slice of the unified semantic index without graph-edge, 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.nodes 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 node-index hits scored by semantic similarity to a text query. It is not the product search surface and should not be used by Studio, assistants, or user-facing examples.

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 node slice of the unified semantic index. Use the unified procedure unless you are checking whether node 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, node_id, score, text
WHERE result_kind = 'node'
MATCH (u:User)-[e:INTERACTED_WITH]->(d:Document)
WHERE id(u) = node_id
TIME e.ts BETWEEN datetime('2025-01-01T00:00:00Z') AND datetime('2025-03-01T00:00:00Z')
WITH node_id, score, date_trunc('day', e.ts) AS day_bucket, properties(d) AS doc_map, unpivot(properties(d.metadata)) AS metadata_rows
RETURN node_id, score, day_bucket, keys(doc_map) AS doc_keys, metadata_rows
LIMIT 10

Real Use Cases

Real Limitations And Tradeoffs