
RAG تطبیقی با Gemini و Qdrant: طبقهبندی هوشمند پرسوجو
9 دقیقه مطالعه · منتشر شده ۱۴۰۵/۴/۲۷
دانلود workflow
فایل JSON آماده import در n8n — credentialها باید در n8n شما تنظیم شوند.
- فایل JSON را دانلود کنید.
- در n8n: Workflows → Import from File.
- Credentialهای هر node را متصل کنید.
- workflow را فعال کنید.
شناسه workflow: 3459 · منبع: کاتالوگ Axeto
استراتژی RAG تطبیقی با طبقهبندی پرسوجو و بازیابی (Gemini & Qdrant)
این Workflow یک چارچوب تولید افزوده بازیابی تطبیقی (RAG) را پیادهسازی میکند. این چارچوب به طور پویا استراتژی بازیابی اطلاعات و تولید پاسخ خود را بر اساس طبقهبندی پرسوجوی کاربر تنظیم میکند. این روش برای سناریوهایی ایدهآل است که در آنها انواع مختلف پرسوجوها (مانند پرسشهای واقعی، تحلیلی، نظر، یا زمینهای) نیازمند پردازش سفارشی برای به حداکثر رساندن ارتباط و دقت پاسخها هستند.
این Workflow میتواند مستقیماً از طریق رابط چت n8n یا به عنوان یک زیر-Workflow که توسط Workflowهای دیگر فراخوانی میشود، فعال شود و ورودیهایی مانند پرسوجوی کاربر، شناسه جلسه چت و شناسه مجموعه فروشگاه برداری را دریافت کند.
شما میتوانید این Workflow و موارد دیگر را در کاتالوگ Axeto ما بیابید: Axeto AI n8n Workflows
نمای کلی Workflow
این Workflow به طور منطقی به بلوکهای زیر تقسیم میشود:
1. دریافت و استانداردسازی ورودی: ورودیها را از چت یا Workflowهای خارجی دریافت و استاندارد میکند.
2. طبقهبندی پرسوجو: پرسوجوی کاربر را به یکی از چهار دسته طبقهبندی میکند.
3. انتخاب استراتژی تطبیقی: Workflow را بر اساس طبقهبندی پرسوجو هدایت میکند.
4. تطبیق پرسوجو ویژه استراتژی: یک استراتژی تطبیق پرسوجوی سفارشی برای هر دسته اعمال میکند.
5. آمادهسازی Prompt و خروجی: Prompt و متن خروجی را برای بازیابی و تولید پاسخ تنظیم میکند.
6. بازیابی اسناد: اسناد مرتبط را از فروشگاه برداری Qdrant بازیابی میکند.
7. الحاق زمینه: محتوای اسناد بازیابی شده را در یک بلوک زمینه واحد ترکیب میکند.
8. تولید پاسخ: پاسخ نهایی را با استفاده از Google Gemini با زمینه و حافظه چت تولید میکند.
9. تحویل پاسخ: پاسخ تولید شده را به کاربر ارسال میکند.
---
تحلیل بلوک به بلوک
۱. دریافت و استانداردسازی ورودی
هدف: این بلوک ورودیها را از دو تریگر احتمالی مدیریت میکند: رابط داخلی چت یا یک تریگر Workflow خارجی. ورودیها را برای پردازش پاییندستی به یک فرمت یکپارچه استاندارد میکند.
Nodes:
-
Chat Trigger(n8n-nodes-base.chatTrigger) -
Execute Workflow Trigger(n8n-nodes-base.executeWorkflowTrigger) -
Set(n8n-nodes-base.set) - با نام "Combined Fields"
جزئیات:
- Chat Trigger: به عنوان نقطه ورود برای تعامل مستقیم چت عمل میکند. از شناسه Webhook پیشفرض برای رابط چت استفاده میکند و ورودی چت کاربر را ارسال میکند.
- Execute Workflow Trigger: به این Workflow اجازه میدهد تا توسط Workflowهای n8n دیگر فراخوانی شود و پارامترهایی مانند
user_query،chat_memory_keyوvector_store_idرا بپذیرد. - Combined Fields (Set): ورودیها را با تنظیم
user_query،chat_memory_keyوvector_store_idاز هر دو منبع تریگر، نرمال میکند. از عباراتی برای بازگشت بین ورودی چت و ورودیهای Workflow استفاده میکند.
* user_query = $json.user_query || $json.chatInput
* chat_memory_key = $json.chat_memory_key || $('Chat Trigger').item.json.sessionId
* vector_store_id = $json.vector_store_id || "<ID HERE>" (نیاز به بهروزرسانی دستی با شناسه مجموعه Qdrant شما دارد).
---
۲. طبقهبندی پرسوجو
هدف: پرسوجوی کاربر را به یکی از چهار دسته طبقهبندی میکند: واقعی (Factual)، تحلیلی (Analytical)، نظر (Opinion) یا زمینهای (Contextual). این طبقهبندی استراتژی بازیابی بعدی را تعیین میکند.
Nodes:
-
Google Gemini LM Chat( @n8n/n8n-nodes-langchain.lmChatGoogleGemini) - با نام "Gemini Classification" -
LangChain Agent( @n8n/n8n-nodes-langchain.agent) - با نام "Query Classification" -
Switch(n8n-nodes-base.switch) -
Sticky Note(n8n-nodes-base.stickyNote) - با نام "Sticky Note6"
جزئیات:
- Gemini Classification (Google Gemini LM Chat): از مدل
models/gemini-2.0-flash-liteبرای طبقهبندی پرسوجو استفاده میکند. نیاز به اعتبارنامه Google Palm API دارد. - Query Classification (LangChain Agent): یک prompt طبقهبندی را با یک پیام سیستمی که مدل را برای بازگرداندن دقیقاً یک نام دسته راهنمایی میکند، پردازش میکند. Prompt شامل
user_queryاز مرحله قبل است.
* عبارت کلیدی: Classify this query: {{ $('Combined Fields').item.json.user_query }}
- Switch: Workflow را بر اساس رشته طبقهبندی trimmed شده هدایت میکند. دارای چهار حالت است که با رشتههای دقیق مطابقت دارند: "Factual"، "Analytical"، "Opinion" و "Contextual".
- Sticky Note6: توضیحی برای هدف طبقهبندی پرسوجو ارائه میدهد.
---
۳. انتخاب استراتژی تطبیقی
هدف: این بلوک توسط گره Switch از بخش قبل مدیریت میشود که Workflow را بر اساس نوع پرسوجوی طبقهبندی شده به یکی از چهار شاخه استراتژی هدایت میکند.
---
۴. تطبیق پرسوجو ویژه استراتژی
هدف: هر یک از چهار شاخه استراتژی، تطبیق پرسوجوی سفارشی را با استفاده از عاملهای Google Gemini برای اصلاح پرسوجو یا تولید زیر-پرسوجوها برای بازیابی مؤثرتر، اعمال میکند.
Nodes:
- استراتژی واقعی (Factual Strategy):
* LangChain Agent ( @n8n/n8n-nodes-langchain.agent) - با نام "Factual Strategy - Focus on Precision"
* Memory Buffer Window ( @n8n/n8n-nodes-langchain.memoryBufferWindow) - با نام "Chat Buffer Memory Factual"
* Google Gemini LM Chat ( @n8n/n8n-nodes-langchain.lmChatGoogleGemini) - با نام "Gemini Factual"
* Set (n8n-nodes-base.set) - با نام "Factual Prompt and Output"
* Sticky Note (n8n-nodes-base.stickyNote) - با نام "Sticky Note"
- استراتژی تحلیلی (Analytical Strategy):
* LangChain Agent ( @n8n/n8n-nodes-langchain.agent) - با نام "Analytical Strategy - Comprehensive Coverage"
* Memory Buffer Window ( @n8n/n8n-nodes-langchain.memoryBufferWindow) - با نام "Chat Buffer Memory Analytical"
* Google Gemini LM Chat ( @n8n/n8n-nodes-langchain.lmChatGoogleGemini) - با نام "Gemini Analytical"
* Set (n8n-nodes-base.set) - با نام "Analytical Prompt and Output"
* Sticky Note (n8n-nodes-base.stickyNote) - با نام "Sticky Note1"
- استراتژی نظر (Opinion Strategy):
* LangChain Agent ( @n8n/n8n-nodes-langchain.agent) - با نام "Opinion Strategy - Diverse Perspectives"
* Memory Buffer Window ( @n8n/n8n-nodes-langchain.memoryBufferWindow) - با نام "Chat Buffer Memory Opinion"
* Google Gemini LM Chat ( @n8n/n8n-nodes-langchain.lmChatGoogleGemini) - با نام "Gemini Opinion"
* Set (n8n-nodes-base.set) - با نام "Opinion Prompt and Output"
* Sticky Note (n8n-nodes-base.stickyNote) - با نام "Sticky Note2"
- استراتژی زمینهای (Contextual Strategy):
* LangChain Agent ( @n8n/n8n-nodes-langchain.agent) - با نام "Contextual Strategy - User Context Integration"
* Memory Buffer Window ( @n8n/n8n-nodes-langchain.memoryBufferWindow) - با نام "Chat Buffer Memory Contextual"
* Google Gemini LM Chat ( @n8n/n8n-nodes-langchain.lmChatGoogleGemini) - با نام "Gemini Contextual"
* Set (n8n-nodes-base.set) - با نام "Contextual Prompt and Output"
* Sticky Note (n8n-nodes-base.stickyNote) - با نام "Sticky Note3"
جزئیات:
- Nodes LangChain Agent: هر گره عامل، پرسوجوی کاربر را بر اساس استراتژی خود بازنویسی میکند:
* واقعی (Factual): پرسوجو را برای دقت و تمرکز بر موجودیتها بهبود میبخشد.
* تحلیلی (Analytical): دقیقاً ۳ زیر-پرسوجو برای پوشش جامع تولید میکند.
* نظر (Opinion): دقیقاً ۳ دیدگاه متفاوت مرتبط با پرسوجو را شناسایی میکند.
* زمینهای (Contextual): زمینه ضمنی یا مرتبطی را که به صراحت بیان نشده است، استنباط میکند.
- Nodes Memory Buffer Window: تاریخچه چت را برای هر شاخه استراتژی با استفاده از
chat_memory_keyحفظ میکنند. از طول پنجره زمینه ۱۰ استفاده میکنند. - Nodes Google Gemini LM Chat: اینها فراخوانیهای مدل زبان زیربنایی برای عاملهای استراتژی مربوطه هستند که از مدل
models/gemini-2.0-flashاستفاده میکنند. آنها خروجی گرههای عامل LangChain را پردازش میکنند. - Nodes Set (Prompt and Output): این گرهها خروجی نهایی و یک prompt سیستمی سفارشی را برای مرحله بعدی تولید پاسخ آماده میکنند. آنها
outputرا به نتیجه استراتژی وpromptرا به یک پیام سیستمی که LLM را در مورد نحوه پاسخدهی بر اساس نوع پرسوجو راهنمایی میکند، تنظیم میکنند. - Sticky Notes: هر یادداشت چسبان، تمرکز استراتژی بازیابی خاص را برای دسته مربوطه توصیف میکند.
---
۵. آمادهسازی Prompt و خروجی
هدف: خروجی استراتژی انتخاب شده و prompt مربوط به آن را در یک ساختار یکپارچه برای بازیابی اسناد ادغام میکند.
Nodes:
-
Set(n8n-nodes-base.set) - با نام "Set Prompt and Output" -
Sticky Note(n8n-nodes-base.stickyNote) - با نام "Sticky Note4"
جزئیات:
- Set Prompt and Output (Set): این گره به سادگی فیلدهای
outputوpromptدریافتی از یکی از گرههای "Prompt and Output" ویژه استراتژی را عبور میدهد. - Sticky Note4: توضیح میدهد که این مرحله با در نظر گرفتن پرسوجوی تطبیق یافته و زمینه، برای بازیابی تطبیقی آماده میشود.
---
۶. بازیابی اسناد
هدف: با استفاده از پرسوجوی تطبیق یافته و prompt، مرتبطترین اسناد را از مجموعه فروشگاه برداری Qdrant مشخص شده بازیابی میکند.
Nodes:
-
Google Gemini Embeddings( @n8n/n8n-nodes-langchain.embeddingsGoogleGemini) -
Qdrant Vector Store( @n8n/n8n-nodes-langchain.vectorStoreQdrant)
جزئیات:
- Google Gemini Embeddings: Embeddingهای متنی را برای پرسوجوی تطبیق یافته (از فیلد
outputگره "Set Prompt and Output") برای استفاده در جستجوی برداری تولید میکند. از مدلmodels/text-embedding-004استفاده میکند و نیاز به اعتبارنامه Google Palm API دارد. - Qdrant Vector Store: مجموعه Qdrant مشخص شده توسط
vector_store_idرا برای ۱۰ سند مرتبط بر اساس embeddingهای تولید شده جستجو میکند.
* Mode: load
* topK: 10
* Prompt: prompt سیستمی و پرسوجوی تطبیق یافته را ترکیب میکند.
* Qdrant Collection ID: از متغیر vector_store_id گرفته میشود.
* Credentials: نیاز به اعتبارنامه Qdrant API دارد.
---
۷. الحاق زمینه
هدف: محتوای قطعات سند بازیابی شده را در یک بلوک متن واحد و منسجم ترکیب میکند تا به عنوان زمینه برای تولید پاسخ نهایی استفاده شود.
Nodes:
-
Set(n8n-nodes-base.set) - با نام "Concatenate Context"
جزئیات:
- Concatenate Context (Set):
pageContentرا از هر قطعه سند بازیابی شده میگیرد و آنها را با جدا کردن با خطوط جدید، در یک متغیر رشتهای واحد به نامcontextبه هم متصل میکند.
---
۸. تولید پاسخ
هدف: پاسخ نهایی به پرسوجوی کاربر را با استفاده از Google Gemini، با ادغام زمینه بازیابی شده و حفظ تاریخچه چت، تولید میکند.
Nodes:
-
Memory Buffer Window( @n8n/n8n-nodes-langchain.memoryBufferWindow) - با نام "Chat Buffer Memory Final" -
Google Gemini LM Chat( @n8n/n8n-nodes-langchain.lmChatGoogleGemini) - با نام "Gemini Final Answer"
جزئیات:
- Chat Buffer Memory Final (Memory Buffer Window): تاریخچه کلی چت مکالمه را با استفاده از
chat_memory_keyمدیریت میکند. - Gemini Final Answer (Google Gemini LM Chat): این گره prompt نهایی را میسازد و prompt سیستمی،
contextبازیابی شده،user_queryاصلی کاربر و تاریخچه چت را ترکیب میکند. سپس از مدلmodels/gemini-2.0-proبرای تولید پاسخ نهایی استفاده میکند. نیاز به اعتبارنامه Google Palm API دارد.
---
۹. تحویل پاسخ
هدف: پاسخ تولید شده را به کاربر ارسال میکند، چه از طریق رابط چت و چه به عنوان یک مقدار بازگشتی به Workflow فراخواننده.
Nodes:
-
Respond to Webhook(n8n-nodes-base.respondToWebhook)
جزئیات:
- Respond to Webhook: پاسخ نهایی تولید شده را به کلاینتی که درخواست را آغاز کرده است، باز میگرداند. اگر توسط رابط چت فعال شده باشد، پاسخ را به چت ارسال میکند. اگر به عنوان یک زیر-Workflow فراخوانی شده باشد، دادهها را به Workflow والد باز میگرداند.
Nodeهای استفادهشده
سوالات متداول
RAG تطبیقی چیست و چرا از آن استفاده میکنیم؟▾
RAG تطبیقی (Adaptive RAG) یک چارچوب تولید افزوده بازیابی است که استراتژی خود را بر اساس نوع پرسوجوی کاربر تنظیم میکند. این امر باعث میشود پاسخها دقیقتر و مرتبطتر باشند، زیرا برای پرسوجوهای مختلف (مانند پرسشهای واقعی، تحلیلی، نظر یا زمینهای) رویکرد متفاوتی اتخاذ میشود.
نقش Google Gemini و Qdrant در این Workflow چیست؟▾
Google Gemini برای طبقهبندی پرسوجوی کاربر به دستههای مختلف (واقعی، تحلیلی، نظر، زمینهای) استفاده میشود. Qdrant به عنوان یک فروشگاه برداری (Vector Store) برای ذخیره و بازیابی اسناد مرتبط با پرسوجو عمل میکند.
این Workflow چگونه کار میکند؟▾
Workflow ابتدا ورودی کاربر را دریافت و استاندارد میکند، سپس پرسوجو را با استفاده از Gemini طبقهبندی میکند. بر اساس این طبقهبندی، استراتژی مناسبی برای بازیابی اسناد از Qdrant انتخاب شده و سپس با استفاده از Gemini و اسناد بازیابی شده، پاسخ نهایی تولید و ارسال میشود.
چگونه میتوان این Workflow را در n8n پیادهسازی کرد؟▾
این Workflow از نودهای n8n مانند Chat Trigger، Execute Workflow Trigger، Set، Google Gemini LM Chat، LangChain Agent، Switch، Qdrant Vector Store و Respond to Webhook استفاده میکند. شما میتوانید این نودها را به ترتیب مشخص شده در مستندات، پیکربندی و به هم متصل کنید.
workflowهای مرتبط
- پاسخ خودکار به سوالات GitHub PR با GPT-4o، Notion و SlackEngineering
- اتوماسیون جستجوی لینکدین با GPT-4 و جستجوی بولی گوگلHR
- اتوماسیون خلاصهسازی جلسات با Google Drive و OpenAIAI
- تغییر نام خودکار گرههای n8n با هوش مصنوعیEngineering
- احراز هویت کاربران با OpenID Connect در n8nBuilding Blocks
- تحلیل صوتی با DeepGram و GPT-4o در n8nAI
