---
title: nexyron.semantic.nodes
url: https://nexyron.tech/docs/cypher/procedures/semantic/nexyron-semantic-nodes
description: Normal semantic search should use one query:
---

# nexyron.semantic.nodes

## Generic Description

Debug-only semantic retrieval of nodes.

Normal semantic search should use one query:

```cypher
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.

```cypher
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

-   verifying graph-node entries in the unified semantic index
-   checking whether graph-node text is being embedded
-   comparing node-index behavior against the unified search output
-   compose the procedure output with `YIELD`, `WITH`, and `RETURN` rather than hiding follow-up logic outside Cypher

## Real Limitations And Tradeoffs

-   quality depends on indexed text fields and embedding quality
-   semantic similarity is suggestive, not authoritative truth
-   procedure calls are explicit contracts; missing state, unsupported parameters, or absent artifacts should fail rather than silently falling back
