<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>N8n on Thomas</title>
        <link>https://blog.thomasplantain.fr/tags/n8n/</link>
        <description>Recent content in N8n on Thomas</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>fr-fr</language>
        <lastBuildDate>Tue, 20 Jan 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.thomasplantain.fr/tags/n8n/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Kokoro TTS</title>
        <link>https://blog.thomasplantain.fr/post/kokoro/</link>
        <pubDate>Tue, 20 Jan 2026 00:00:00 +0000</pubDate>
        
        <guid>https://blog.thomasplantain.fr/post/kokoro/</guid>
        <description>&lt;img src="https://blog.thomasplantain.fr/img/cover.jpg" alt="Featured image of post Kokoro TTS" /&gt;&lt;h2 id=&#34;text-to-speech&#34;&gt;Text To Speech
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;Technology that enables text to be converted into speech sounds imitative of the human voice.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;run-locally&#34;&gt;Run locally
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/remsky/Kokoro-FastAPI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/remsky/Kokoro-FastAPI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And you can play with web ui:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;http://localhost:8880/web&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.thomasplantain.fr/img/kokoro/kokoro-webui.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Kokoro web ui&#34;
	
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;n8n-workflow-with-kokoro&#34;&gt;n8n workflow with Kokoro
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;I want to hear Qwen answer &amp;#x1f60a;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;First I tested kokoro API with Bruno.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.thomasplantain.fr/img/kokoro/bruno-kokoro.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;RBruno&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;And then I added it to a new n8n workflow.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.thomasplantain.fr/img/kokoro/n8n-kokoro.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Kokoro API call&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;I had to remove all special characters.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.thomasplantain.fr/img/kokoro/kokoro-api-call.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Kokoro API call&#34;
	
	
&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>RAG n8n</title>
        <link>https://blog.thomasplantain.fr/post/n8n/</link>
        <pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate>
        
        <guid>https://blog.thomasplantain.fr/post/n8n/</guid>
        <description>&lt;img src="https://blog.thomasplantain.fr/img/rag_library.avif" alt="Featured image of post RAG n8n" /&gt;&lt;h2 id=&#34;rag-with-n8n&#34;&gt;RAG with n8n
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#rag-with-n8n&#34; &gt;RAG with n8n&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#overview&#34; &gt;Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#before-you-start&#34; &gt;Before you start&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#whats-rag&#34; &gt;What&amp;rsquo;s RAG&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#whats-you-need&#34; &gt;What&amp;rsquo;s you need&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#installation&#34; &gt;Installation&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#n8n&#34; &gt;n8n&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#qdrant&#34; &gt;Qdrant&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#ollama&#34; &gt;Ollama&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#rag-workflow&#34; &gt;RAG Workflow&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#data-ingestion&#34; &gt;Data ingestion&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#qdrant-collections&#34; &gt;Qdrant collections&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#chatbot&#34; &gt;Chatbot&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#see-also&#34; &gt;See also&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#sml-small-language-model&#34; &gt;SML (Small Language Model)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#links&#34; &gt;Links&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;overview&#34;&gt;Overview
&lt;/h2&gt;&lt;p&gt;This guide explains how to implement a RAG (Retrieval Augmented Generation) on your laptop.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Embedded AI&lt;/li&gt;
&lt;li&gt;Data sovereignty&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;before-you-start&#34;&gt;Before you start
&lt;/h2&gt;&lt;h3 id=&#34;whats-rag&#34;&gt;What&amp;rsquo;s RAG
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;RAG (retrieval augmented generation) is a technology that improves the responses of generative AI models by feeding them with knowledge from internal databases.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.thomasplantain.fr/img/n8n/RAG.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;nvidia RAG&#34;
	
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;whats-you-need&#34;&gt;What&amp;rsquo;s you need
&lt;/h3&gt;&lt;p&gt;Before you put the RAG in place, ensure you already have:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;Ollama&lt;/li&gt;
&lt;li&gt;md files&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;installation&#34;&gt;Installation
&lt;/h2&gt;&lt;h3 id=&#34;n8n&#34;&gt;n8n
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;n8n is a workflow automation platform that gives technical teams the flexibility of code with the speed of no-code.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Run locally&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker volume create n8n_data
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Go to the web &lt;a class=&#34;link&#34; href=&#34;http://localhost:5678/home/workflows&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;n8n Dashboard&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.thomasplantain.fr/img/n8n/n8n-portal.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;RAG perso&#34;
	
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;qdrant&#34;&gt;Qdrant
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;Qdrant (read: quadrant) is a vector similarity search engine and vector database. It provides a production-ready service with a convenient API to store, search, and manage points—vectors with an additional payload Qdrant is tailored to extended filtering support.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Run localy&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker volume create qdrant_data
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker run -p 6333:6333 -v qdrant_data:/qdrant/storage qdrant/qdrant
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;http://localhost:6333/dashboard&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;qdrant Dashboard&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;ollama&#34;&gt;Ollama
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;Ollama is the easiest way to get up and running with large language models such as gpt-oss, Gemma 3, DeepSeek-R1, Qwen3 and more.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.thomasplantain.fr/img/n8n/ollama-chat.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;RAG perso&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;rag-workflow&#34;&gt;RAG Workflow
&lt;/h2&gt;&lt;p&gt;The RAG is composed in 2 workflows.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.thomasplantain.fr/img/n8n/n8n-RAG-Qdrant.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;RAG perso&#34;
	
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;data-ingestion&#34;&gt;Data ingestion
&lt;/h3&gt;&lt;p&gt;&lt;img src=&#34;https://blog.thomasplantain.fr/img/n8n/rag-data.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;RAG perso&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;It starts with the file submission trigger, to upload CVs (in markdown format).&lt;/p&gt;
&lt;p&gt;We add Qdrant connector to store the files in the vector database. We need an embed model to split the files into vectors.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.thomasplantain.fr/img/n8n/qdrant-config.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Qdrant connector&#34;
	
	
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Emebed model: mxbai-embed-large&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.thomasplantain.fr/img/n8n/qdrant-embed.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Qdrant embedding&#34;
	
	
&gt;&lt;/p&gt;
&lt;h4 id=&#34;qdrant-collections&#34;&gt;Qdrant collections
&lt;/h4&gt;&lt;p&gt;When the Data Ingestion workflow is executed, you can go to Qdrant dashboard to see the collections.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.thomasplantain.fr/img/n8n/qdrant-collection.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Qdrant embedding&#34;
	
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;chatbot&#34;&gt;Chatbot
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;Now the CVs are in the Qdrant vector database, we can chat to request some informations about the candidate.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.thomasplantain.fr/img/n8n/rag-chatbot.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;RAG perso&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;We start with the Chat trigger connected to an AI agent, with Qwen3 model.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.thomasplantain.fr/img/n8n/agent-qwen.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Qwen3&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;We create the tool to be able to search in our Qdrant collection and we had a simple prompt.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.thomasplantain.fr/img/n8n/hr-prompt.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;HR prompt&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&amp;#x1f525; And finaly we test our chat by asking informations about a candidate.
We can see that the agent called qdrant to retrieve the data and generate a nice answer.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.thomasplantain.fr/img/n8n/chat-exec.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;chat&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;see-also&#34;&gt;See also
&lt;/h2&gt;&lt;h3 id=&#34;sml-small-language-model&#34;&gt;SML (Small Language Model)
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;Small language models, on the other hand, use far fewer parameters, typically ranging from a few thousand to a few hundred million. This make them more feasible to train and host in resource-constrained environments such as a single computer or even a mobile device.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://v-chandra.github.io/on-device-llms/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://v-chandra.github.io/on-device-llms/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;links&#34;&gt;Links
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/n8n-io/n8n&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;n8n link&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/qdrant/qdrant&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Qdrant link&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ollama/ollama&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ollama link&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
