All nodes/AI/RAG
Embed Text
Computes a vector embedding for the input text. The model comes from a connected Embedding node or from the inline setting. The vector can be fed into RAG Query (search by a ready vector) or used in any pipeline.
Type in the graph: embed_text
Exec
An error branch can be enabled (expose_error_output) to handle failures on their own path.
Ports can be split into separate execution and data handles.
Try it
Minimal working workflow
- Execute + Data
- Embedding
Runs as pasted
When to use it
Reach for this node when you need the vector itself — the numbers, not the documents. For an ordinary search over a base it is not needed: RAG Query embeds the query on its own.
Two reasons to add it. First, the same query is searched in several bases: the vector is computed once and fed into the Embedding port of every RAG Query, instead of paying for an embedding at each of them. Second, the vector is needed outside search: comparing two texts in JavaScript, storing it in a collection, sending it to an external service.
How it works
The Text port carries both the trigger and the text. When only execution arrives there, the
text comes from the Text field — a template such as {{ inputs.text }} or
{{ nodes.x.output.text }}. The node has no separate run input.
The model arrives through the Embedding port from an Embedding Model node and overrides the field in the form; with no config node connected, the field applies. Set in neither place, the node fails.
The output is an object: embedding (an array of numbers), dim (the vector length) and model
(what computed it). In templates address the field you need — {{ nodes.<id>.output.dim }}; there
is no reason to put the whole object into a prompt, it is hundreds of numbers.
Embedding tokens are counted as a read and charged to the balance. When the model comes from your own connection, the platform does not bill them.
Common mistakes
- Empty text. That is an error, not an empty result: RAG Query would silently ignore an empty vector and search by text instead, and you would never see it. Check that the port is connected or that the template renders something.
- A model other than the one behind the base. A vector from another model is not comparable with the contents of the base: either the dimensions disagree, or the search returns plausible noise.
- Feeding the vector into the Query port of RAG Query. That port takes text. The vector goes into the separate Embedding port, while the trigger still arrives through Query.
- Expecting the node to find something. It only computes a vector — the search is done by RAG Query.
Inputs
| Port | Wire | Payload | Notes |
|---|---|---|---|
Texttext | Execute + Dataexecute_data | — | Text to embed; replaces the Text template when connected |
Embeddingembedding_config | Embeddinglink_embedding | — | Embedding node config; its model overrides the field here |
Outputs
| Port | Wire | Payload | Notes |
|---|---|---|---|
Embeddingoutput | Execute + Dataexecute_data | object |
Configuration
| Field | Type | Default | Description |
|---|---|---|---|
Texttext_template | string | {{inputs.text}} | Text to embed. Supports {{inputs.text}}, {{nodes.x.output.text}}. supports templates |
Embedding Modelmodel | string | "" | Model used to embed the text. A connected Embedding config node supplies this value and wins over the field. overridden by port: embedding_config |
Shared fields
Every node has these three — the platform adds them, not the node author.
expose_error_output— When enabled, show an execution output to connect nodes that run if this step fails.split_ports_in— Show separate execution and data input handles instead of one combined port.split_ports_out— Show separate execution and data output handles instead of one combined port.