I’m seeing a confusing issue in an n8n RAG workflow and want to confirm whether this is expected behavior or a bug.
My workflow is roughly:
• Upload file
• Default Data Loader
• Insert Data to Store
• Embeddings OpenAI connected to the Vector Store
• On the retrieval side, Query Data Tool uses the same Embeddings OpenAI node
The problem is this:
When I upload a new file and run the insert flow, the OpenAI API usage stays flat. It looks like the Embeddings OpenAI node is not actually calling the embeddings API during insert.
What I observe:
• The Data Loader runs successfully
• The Insert Data to Store node runs successfully
• The visible output of the insert flow is plain text chunks/documents, not embedding vectors
• The retriever/query side is still able to answer from the vector store
Why this is confusing:
• The workflow is wired to the Embeddings OpenAI node
• Earlier, I remember the embeddings node appearing to execute more visibly
• For a fresh large file upload, I would expect OpenAI embedding calls and corresponding API usage
• But the OpenAI usage graph/log remains flat
My question is:
In n8n, when using Vector Store + Embeddings OpenAI as a sub-node, is it expected that the Embeddings node does not show separate execution and that no obvious OpenAI API usage spike is visible during insert? Or does this indicate that embeddings are not actually being generated for fresh uploads?
More specifically:
Should a fresh document insert always trigger actual OpenAI embeddings API calls?
Is the plain text chunk output from “Insert Data to Store” normal, with embeddings being hidden internally?
Could retrieval still work only because previously stored vectors are being queried instead of the newly uploaded file being embedded?
What is the best way to verify that fresh vectors are actually being written for newly uploaded documents? I’m trying to determine whether this is:
• expected cluster/sub-node execution behavior,
• a UI/execution display issue,
• cached/old vectors being retrieved,
• or a real issue where embeddings are not being generated on insert.
Hi @sibidharan Welcome!
Have you tested the chat message? Does it work? If it does with the document you have chunked, then there should be a lag or internal execution as sometimes the workflow UI sometimes does not catch up, although you can try this same with similar database like Pinecone if that works then nothing to worry about as sometimes the executions may happen internally in some cases although this should not but if it works then that’s it.
@sibidharan That is i guess only that specific workflow’s limit although it works fine for me and even if you setup something like this with pinecone that would also work as expected! And if chat works which basically means that your flow is actually working fine! No issue there! Hope this helped.
Cloud works but self-hosted doesn’t is almost always a network isolation issue, not an n8n bug.
First thing to check: can your Docker container actually reach OpenAI?
docker exec -it n8n wget -q -O- https://api.openai.com ``` If that hangs, your container can’t reach external APIs. Fix DNS or routing first. Second: look at execution time for the embeddings node. Under 50ms means it never called the API. 200ms+ means it did.
If you’re on SQLite, write lock contention during concurrent inserts can silently fail sub-node executions. Switching to Postgres often fixes this.
Yes, the chat is using OpenAI and it is able to respond. We are using OpenAI for lot of other things and it all seems to work. Just that Embeddings node is not getting highlighted when its supposed to turn green!
In the last screenshot I posted, the OpenAI Chat Model is turning green! Just embeddings not when inserting documents - as its supposed to turn green - I saw it before, but this current behaviour is making me question.
Yes. We have access to all models and have enough credits. If it doesn’t have access, it must say otherwise, but its staying like it was never called.
I remember it the Embeddings sub-node is used to convert the chunks into numerical embeddings that then gets saved to Vector DB. But right now, it looks like plain text chunks are sitting in Vector DB. Something doesn’t feel right!!
In pinecone/insert node output, can I see plain text? Is it normal ? Where can I see the numerical embeddings? If OpenAI embeddings are called, I must see Numerical Embeddings - or is my understanding wrong ? Please correct me.
I see the Embeddings Node being called with same API key in n8n cloud with same app version: 2.12.3 - I am running the same 2.12.3 in my self hosted instance. Please see the difference:
Network and SQLite concurrency — that’s your culprit. Check if the Embeddings node actually fires (look at execution logs, not just the visual indicator). Cloud works because it has Postgres and better isolation. Switch to Postgres if possible; if not, verify your Docker DNS can reach api.openai.com first.
Some of your questions in the top are about data store, so, use query and observe the data in terminal, try to isolate the problems one by one, read data in terminal, they should be numbers
Since chat works fine, your container can reach OpenAI. That rules out DNS. The fact that it works on Cloud but not self-hosted with the same version points to the execution environment, not the workflow. Cloud runs Postgres, your instance runs SQLite. Try switching to Postgres and see if the embeddings node fires. If you can’t switch yet, check the n8n execution logs (not the UI) for any silent errors during the insert step.
honestly sounds like youre hitting the sub-node execution display issue. the embeddings node is probably running fine internally, just not showing green on the ui. self-hosted sometimes lags on cluster node state updates. test a retrieval against a newly uploaded document to confirm the vectors went in, and check the n8n logs while running insert, search for “embeddings” or “openai” calls. if logs show no api calls at all, make sure the vector store is actually connected to the embeddings node (sometimes that connection gets weird). the fact that retrieval works is a good sign tho, means the vectors are there. if it starts failing on new docs, then theyre probably not being embedded and youd need to rebuild the index
good confirmation — isolating with LMStudio is a clean way to verify the API calls are actually firing vs. just not showing in the UI. the sub-node visual state on self-hosted is unreliable, but if the calls go through the embeddings are being generated correctly.