
گردش کار RAG تطبیقی با Gemini و Qdrant در n8n
13 دقیقه مطالعه · منتشر شده ۱۴۰۵/۴/۲۷
دانلود workflow
فایل JSON آماده import در n8n — credentialها باید در n8n شما تنظیم شوند.
- فایل JSON را دانلود کنید.
- در n8n: Workflows → Import from File.
- Credentialهای هر node را متصل کنید.
- workflow را فعال کنید.
شناسه workflow: 4043 · منبع: کاتالوگ Axeto
تطبیقپذیری RAG با Google Gemini و Qdrant: پاسخدهی آگاهانه از زمینه
---
۱. نمای کلی گردش کار
این گردش کار یک سیستم تطبیقی بازیابی-افزوده (Adaptive Retrieval-Augmented Generation - RAG) را پیادهسازی میکند که از مدلهای زبان Google Gemini و فروشگاه برداری Qdrant بهره میبرد. عملکرد اصلی آن طبقهبندی پرسوجوهای ورودی کاربر به یکی از چهار نوع: واقعی (Factual)، تحلیلی (Analytical)، نظری (Opinion) یا زمینهای (Contextual) است. بر اساس این طبقهبندی، استراتژیهای بازیابی و پاسخدهی سفارشی را اعمال میکند. سپس سیستم مرتبطترین اسناد را از یک پایگاه داده برداری بازیابی کرده و پاسخی آگاهانه از زمینه تولید میکند و از صحت، جامعیت یا ظرافت بیشتر پاسخها اطمینان حاصل مینماید.
گردش کار به بلوکهای منطقی زیر ساختار یافته است:
- ۱.۱ دریافت و استانداردسازی ورودی: پرسوجوهای کاربر و فرادادههای مرتبط را دریافت کرده و سپس این ورودیها را برای پردازش یکنواخت استاندارد میکند.
- ۱.۲ طبقهبندی پرسوجو: از Google Gemini برای طبقهبندی پرسوجوی کاربر به یکی از چهار دسته از پیش تعریف شده استفاده میکند.
- ۱.۳ اعمال استراتژی تطبیقی: بر اساس طبقهبندی پرسوجو، یک استراتژی خاص بازسازی یا تجزیه پرسوجو را با استفاده از عاملهای تخصصی Google Gemini اعمال میکند.
- ۱.۴ آمادهسازی اعلان (Prompt): اعلانهای سیستمی و متغیرهای خروجی را که برای هر نوع پرسوجو سفارشی شدهاند، میسازد و آنها را برای مراحل تولید بعدی آماده میکند.
- ۱.۵ بازیابی اسناد: از پرسوجوی تطبیق یافته برای بازیابی اسناد مرتبط از فروشگاه برداری Qdrant استفاده میکند.
- ۱.۶ الحاق زمینه: محتوای اسناد بازیابی شده را در یک رشته زمینه واحد جمعآوری میکند.
- ۱.۷ تولید پاسخ: پاسخ نهایی را با استفاده از Google Gemini، با ادغام زمینه الحاق شده و حفظ تاریخچه مکالمه، تولید میکند.
- ۱.۸ تحویل پاسخ: پاسخ تولید شده را از طریق یک Webhook به کاربر ارسال میکند.
این گردش کار همچنین بافرهای حافظه چت را برای هر مسیر استراتژی برای حفظ زمینه مکالمه در بر میگیرد و یادداشتهای چسبان (sticky notes) دقیقی را برای راهنمایی کاربر و توضیحات استراتژی شامل میشود.
---
۲. تجزیه و تحلیل دقیق گردش کار
#### ۲.۱ دریافت و استانداردسازی ورودی
- هدف: دریافت تریگرهای خارجی (از چتباتها یا سایر گردش کارها) و استانداردسازی فیلدهای داده ورودی برای پردازش یکنواخت در مراحل بعدی.
- گرهها (Nodes):
* When Executed by Another Workflow (تریگر اجرای گردش کار)
* Chat (تریگر چت LangChain)
* Combined Fields (تنظیم)
- جزئیات گرهها:
* When Executed by Another Workflow:
* نوع: n8n-nodes-base.executeWorkflowTrigger
* نقش: به عنوان نقطه ورود هنگام فراخوانی گردش کار توسط گردش کار دیگر عمل میکند. انتظار میرود ورودیهای user_query، chat_memory_key و vector_store_id را دریافت کند.
* ورودی: دادهها از یک تریگر گردش کار خارجی.
* خروجی: ورودیهای استاندارد شده را به گره Combined Fields ارسال میکند.
* مشکلات احتمالی: دادههای ورودی مفقود یا بدشکل میتوانند منجر به شکست در گرههای بعدی شوند.
* Chat:
* نوع: @n8n/n8n-nodes-langchain.chatTrigger
* نقش: به عنوان نقطه ورود برای تریگرهای ناشی از رابط چت عمل میکند.
* ورودی: پیامهای چت ورودی.
* خروجی: دادههای چت را به گره Combined Fields ارسال میکند.
* مشکلات احتمالی: خطاهای Webhook یا اتصال؛ ورودی چت بدشکل.
* Combined Fields:
* نوع: n8n-nodes-base.set
* نقش: متغیرهای ورودی را با ایجاد فیلدهای یکنواخت نرمالسازی میکند:
* user_query (منبع گرفته شده از user_query یا chatInput)
* chat_memory_key (منبع گرفته شده از ورودی یا شناسه جلسه چت)
* vector_store_id (منبع گرفته شده از ورودی یا یک نگهدارنده موقعیت)
* ورودی: دادهها از گرههای When Executed by Another Workflow یا Chat.
* خروجی: شیء JSON استاندارد شده برای گرههای بعدی.
* مشکلات احتمالی: ورودیهای مفقود یا خالی؛ vector_store_id پیشفرض ممکن است نیاز به پیکربندی دستی داشته باشد.
#### ۲.۲ طبقهبندی پرسوجو
- هدف: طبقهبندی پرسوجوی کاربر به یکی از چهار دسته (واقعی، تحلیلی، نظری، زمینهای) با استفاده از یک عامل طبقهبندی Google Gemini، که امکان پردازش تطبیقی در مراحل بعدی را فراهم میکند.
- گرهها (Nodes):
* Query Classification (عامل LangChain)
* Gemini Classification (مدل زبان چت Google Gemini LangChain)
* Switch (سوئیچ)
* Sticky Note6 (یادداشت چسبان)
- جزئیات گرهها:
* Query Classification:
* نوع: @n8n/n8n-nodes-langchain.agent
* نقش: متن user_query را به یک دسته واحد طبقهبندی میکند.
* پیکربندی:
* پیام سیستمی: مدل را ملزم میکند که پرسوجو را به طور دقیق به یکی از چهار دسته طبقهبندی کند بدون اینکه توضیحی ارائه دهد.
* عبارت ورودی: "Classify this query: {{ $('Combined Fields').item.json.user_query }}"
* ورودی: user_query از گره Combined Fields.
* خروجی: یک شیء JSON حاوی فیلد output با نام دسته تعیین شده.
* نسخه: ۱.۸
* مشکلات احتمالی: خطاهای API مدل، پرسوجوهای مبهم منجر به طبقهبندی نادرست، یا عدم وجود خروجی.
* Gemini Classification:
* نوع: @n8n/n8n-nodes-langchain.lmChatGoogleGemini
* نقش: مدل زبان (LM) زیربنایی است که توسط گره Query Classification استفاده میشود.
* مدل: models/gemini-2.0-flash-lite
* اعتبارنامهها (Credentials): Google Palm API
* ورودی: اعلان طبقهبندی را از گره Query Classification دریافت میکند.
* خروجی: نتیجه طبقهبندی که به گره Query Classification ارسال میشود.
* Switch:
* نوع: n8n-nodes-base.switch
* نقش: گردش کار را بر اساس خروجی طبقهبندی (Factual, Analytical, Opinion, Contextual) هدایت میکند.
* شرایط: از مقایسههای دقیق و حساس به حروف بزرگ و کوچک بر روی خروجی طبقهبندی شده استفاده میکند.
* ورودی: نتیجه طبقهبندی از گره Query Classification.
* خروجی: گردش کار را به یکی از چهار مسیر تعریف شده هدایت میکند.
* مشکلات احتمالی: عدم تطابق بین خروجی طبقهبندی و شرایط تعریف شده؛ مسیر پیشفرض (ایندکس ۰) در صورت عدم تطابق انتخاب میشود.
#### ۲.۳ اعمال استراتژی تطبیقی
- هدف: اعمال استراتژیهای تطبیق پرسوجو برای بهبود اثربخشی بازیابی: دقت برای پرسوجوهای واقعی، تجزیه برای پرسوجوهای تحلیلی، فهرست کردن دیدگاهها برای پرسوجوهای نظری، و استنتاج زمینه برای پرسوجوهای زمینهای.
- گرهها (Nodes):
* مسیر واقعی (Factual Path):
* Factual Strategy - Focus on Precision (عامل LangChain)
* Gemini Factual (مدل زبان چت Google Gemini LangChain)
* Chat Buffer Memory Factual (بافر پنجره حافظه LangChain)
* Sticky Note 1 (یادداشت چسبان)
* مسیر تحلیلی (Analytical Path):
* Analytical Strategy - Comprehensive Coverage (عامل LangChain)
* Gemini Analytical (مدل زبان چت Google Gemini LangChain)
* Chat Buffer Memory Analytical (بافر پنجره حافظه LangChain)
* Sticky Note 2 (یادداشت چسبان)
* مسیر نظری (Opinion Path):
* Opinion Strategy - Diverse Perspectives (عامل LangChain)
* Gemini Opinion (مدل زبان چت Google Gemini LangChain)
* Chat Buffer Memory Opinion (بافر پنجره حافظه LangChain)
* Sticky Note 3 (یادداشت چسبان)
* مسیر زمینهای (Contextual Path):
* Contextual Strategy - User Context Integration (عامل LangChain)
* Gemini Contextual (مدل زبان چت Google Gemini LangChain)
* Chat Buffer Memory Contextual (بافر پنجره حافظه LangChain)
* Sticky Note 4 (یادداشت چسبان)
- جزئیات گرهها:
* Factual Strategy - Focus on Precision:
* نوع: @n8n/n8n-nodes-langchain.agent
* هدف: پرسوجوهای واقعی را برای دقت بیشتر بازسازی میکند و بر موجودیتها و روابط کلیدی تأکید دارد.
* ورودی: user_query اصلی از گره Combined Fields.
* پیام سیستمی: مدل را ملزم میکند که دقت پرسوجو را بدون ارائه توضیحات افزایش دهد.
* خروجی: یک رشته پرسوجوی واقعی بهبود یافته.
* مدل زبان متصل: Gemini Factual (مدل gemini-2.0-flash).
* بافر حافظه چت واقعی (Chat Buffer Memory Factual): زمینه مکالمه را با استفاده از بافری از ۱۰ پیام اخیر، با کلید chat_memory_key حفظ میکند.
* مشکلات احتمالی: مهلت زمانی مدل زبان، بازسازیهای مبهم، از دست دادن قصد پرسوجوی اصلی.
* Analytical Strategy - Comprehensive Coverage:
* نوع: @n8n/n8n-nodes-langchain.agent
* هدف: پرسوجوهای تحلیلی را به سه زیر-پرسوجوی متمایز برای پوشش جنبههای متنوع تجزیه میکند.
* ورودی: user_query اصلی.
* پیام سیستمی: مدل را ملزم میکند که دقیقاً سه زیر-پرسوجو تولید کند که هر کدام در یک خط جدید باشند.
* خروجی: لیستی از زیر-پرسوجوها که برای بازیابی در نظر گرفته شدهاند.
* مدل زبان متصل: Gemini Analytical.
* بافر حافظه چت تحلیلی (Chat Buffer Memory Analytical): مشابه بافر حافظه واقعی پیکربندی شده است.
* مشکلات احتمالی: تفسیر نادرست مدل، پوشش ناقص جنبههای پرسوجو.
* Opinion Strategy - Diverse Perspectives:
* نوع: @n8n/n8n-nodes-langchain.agent
* هدف: سه دیدگاه یا منظر متفاوت را در مورد پرسوجوهای ذهنی شناسایی میکند.
* ورودی: user_query اصلی.
* پیام سیستمی: مدل را ملزم میکند که دقیقاً سه دیدگاه متنوع را برگرداند.
* خروجی: لیستی از دیدگاههای شناسایی شده.
* مدل زبان متصل: Gemini Opinion.
* بافر حافظه چت نظری (Chat Buffer Memory Opinion): زمینه مکالمه را ردیابی میکند.
* مشکلات احتمالی: سوگیری در دیدگاههای تولید شده، پوشش محدود دیدگاهها.
* Contextual Strategy - User Context Integration:
* نوع: @n8n/n8n-nodes-langchain.agent
* هدف: زمینه ضمنی را که به صراحت در پرسوجوی کاربر بیان نشده است، استنتاج میکند.
* ورودی: user_query اصلی.
* پیام سیستمی: مدل را ملزم میکند که توضیحی مختصر از زمینه استنتاج شده ارائه دهد.
* خروجی: رشته توضیحات زمینه.
* مدل زبان متصل: Gemini Contextual.
* بافر حافظه چت زمینهای (Chat Buffer Memory Contextual): بافر حافظهای طراحی شده برای تعاملات آگاهانه از زمینه.
* مشکلات احتمالی: عدم توانایی در ثبت زمینه حیاتی، تعمیم بیش از حد زمینه ضمنی.
#### ۲.۴ آمادهسازی اعلان (Prompt)
- هدف: ساخت اعلانهای سیستمی و متغیرهای خروجی که برای هر نوع پرسوجو سفارشی شدهاند و فرآیند تولید پاسخ نهایی را هدایت میکنند.
- گرهها (Nodes):
* مسیر واقعی (Factual Path):
* Factual Prompt and Output (تنظیم)
* مسیر تحلیلی (Analytical Path):
* Analytical Prompt and Output (تنظیم)
* مسیر نظری (Opinion Path):
* Opinion Prompt and Output (تنظیم)
* مسیر زمینهای (Contextual Path):
* Contextual Prompt and Output (تنظیم)
* گره مشترک:
* Set Prompt and Output (تنظیم)
* راهنما:
* Sticky Notes 0-3 (یادداشتهای چسبان)
- جزئیات گرهها:
* Factual Prompt and Output:
* نوع: n8n-nodes-base.set
* نقش: output (پرسوجوی بهبود یافته) و prompt (دستورالعملهای سیستمی) را برای پرسوجوهای واقعی تعریف میکند. اعلان بر دقت، صحت و تأیید محدودیتهای اطلاعاتی تأکید دارد.
* ورودی: خروجی از گره Factual Strategy.
* خروجی: متغیرهای اعلان و خروجی قالببندی شده برای استفاده در مراحل بعدی.
* Analytical Prompt and Output:
* نوع: n8n-nodes-base.set
* نقش: مشابه گره اعلان واقعی، اما دستورالعملهایی را برای تجزیه و تحلیل جامع که جنبههای مختلف پرسوجوهای تحلیلی را پوشش میدهد، آماده میکند.
* ورودی: خروجی از گره Analytical Strategy.
* خروجی: متغیرهای اعلان و خروجی قالببندی شده.
* Opinion Prompt and Output:
* نوع: n8n-nodes-base.set
* نقش: اعلانی را تنظیم میکند که مدل را ملزم به ارائه نمایشی منصفانه از نظرات متنوع، با تأیید هرگونه محدودیت در پوشش دیدگاهها، هدایت میکند.
* ورودی: خروجی از گره Opinion Strategy.
* خروجی: متغیرهای اعلان و خروجی قالببندی شده.
* Contextual Prompt and Output:
* نوع: n8n-nodes-base.set
* نقش: اعلانی را ایجاد میکند که مدل را ملزم به در نظر گرفتن هم پرسوجوی صریح و هم زمینه استنتاج شده میکند و ارتباط بین زمینه و اسناد بازیابی شده را تشویق میکند.
* ورودی: خروجی از گره Contextual Strategy.
* خروجی: متغیرهای اعلان و خروجی قالببندی شده.
* Set Prompt and Output:
* نوع: n8n-nodes-base.set
* نقش: اعلان و خروجی آماده شده را از یکی از چهار گره خاص استراتژی دریافت میکند. اینها را به متغیرهای استاندارد شده (prompt و output) برای مراحل بازیابی اسناد و تولید پاسخ اختصاص میدهد.
* ورودی: خروجی از هر یک از چهار گره آمادهسازی اعلان.
* خروجی: متغیرهای استاندارد شده prompt و output که به گره بازیابی اسناد ارسال میشوند.
#### ۲.۵ بازیابی اسناد
- هدف: بازیابی ۱۰ سند مرتبطتر از فروشگاه برداری Qdrant با استفاده از پرسوجوی تطبیق یافته تولید شده در مراحل قبل.
- گرهها (Nodes):
* Embeddings (تعبیهها با استفاده از Google Gemini LangChain)
* Retrieve Documents from Vector Store (فروشگاه برداری Qdrant LangChain)
* Sticky Note4 (یادداشت چسبان)
- جزئیات گرهها:
* Embeddings:
* نوع: @n8n/n8n-nodes-langchain.embeddingsGoogleGemini
* هدف: پرسوجوی متنی را به یک بردار تعبیه تبدیل میکند.
* مدل: text-embedding-004
* ورودی: متن پرسوجوی تطبیقی از گره Set Prompt and Output.
* اعتبارنامهها (Credentials): Google Palm API
* خروجی: یک بردار تعبیه که برای جستجو در فروشگاه برداری استفاده میشود.
* مشکلات احتمالی: خطاهای API، مشکلات مربوط به کیفیت تعبیه.
* Retrieve Documents from Vector Store:
* نوع: @n8n/n8n-nodes-langchain.vectorStoreQdrant
* نقش: مجموعه Qdrant را با استفاده از تعبیههای تولید شده برای یافتن ۱۰ سند مطابق، پرسوجو میکند.
* پارامترها:
* vector_store_id: منبع گرفته شده از گره Combined Fields.
* topK: روی ۱۰ تنظیم شده است.
* پرسوجو هم اعلان سیستمی و هم پرسوجوی خروجی تطبیقی را برای جستجوی زمینهای بهبود یافته در بر میگیرد.
* اعتبارنامهها (Credentials): Qdrant API
* ورودی: بردار تعبیه از گره Embeddings و vector_store_id.
* خروجی: لیستی از قطعات سند بازیابی شده، شامل محتوا و فراداده آنها.
* مشکلات احتمالی: مشکلات اتصال، شناسه مجموعه نادرست، عدم یافتن اسناد.
#### ۲.۶ الحاق زمینه
- هدف: جمعآوری محتوای متنی قطعات سند بازیابی شده در یک رشته زمینه واحد و منسجم، که با جداکنندهها جدا شده است، برای استفاده در تولید پاسخ.
- گرهها (Nodes):
* Concatenate Context (خلاصه سازی)
- جزئیات گرهها:
* Concatenate Context:
* نوع: n8n-nodes-base.summarize (پیکربندی شده برای تجمیع)
* نقش: فیلدهای document.pageContent را از تمام اسناد بازیابی شده ترکیب میکند. محتوا با "\n\n---\n\n" جدا میشود.
* ورودی: قطعات سند بازیابی شده از گره Retrieve Documents from Vector Store.
* خروجی: یک رشته واحد به نام concatenated_document_pageContent.
* مشکلات احتمالی: ورودی خالی در صورت عدم بازیابی اسناد؛ رشته الحاق شده ممکن است از حد توکن مدل فراتر رود.
#### ۲.۷ تولید پاسخ
- هدف: تولید پاسخ نهایی رو به کاربر با استفاده از مدل زبان Google Gemini، ادغام پرسوجوی کاربر، زمینه الحاق شده، تاریخچه چت و اعلان سیستمی تطبیقی.
- گرهها (Nodes):
* Answer (عامل LangChain)
* Gemini Answer (مدل زبان چت Google Gemini LangChain)
Chat Buffer Memory (بافر پنجره حافظه LangChain) - توجه: این به بافر حافظه خاص مرتبط با مسیر استراتژی انتخاب شده اشاره دارد.*
* Sticky Note5 (یادداشت چسبان)
- جزئیات گرهها:
* Answer:
* نوع: @n8n/n8n-nodes-langchain.agent
* نقش: فرآیند تولید پاسخ نهایی را هماهنگ میکند. اعلان آماده شده، زمینه الحاق شده و حافظه چت مرتبط را به عنوان ورودی برای تدوین پاسخ دریافت میکند.
* ورودی:
* اعلان سیستمی از گره Set Prompt and Output.
* محتوای سند الحاق شده از Concatenate Context.
* تاریخچه چت از گره Chat Buffer Memory مناسب (Factual, Analytical, Opinion, یا Contextual).
* user_query اصلی از Combined Fields.
* خروجی: پاسخ نهایی تولید شده.
* مدل زبان متصل: Gemini Answer (مدل gemini-2.0-flash).
* مشکلات احتمالی: تولید محتوای نامربوط یا تکراری توسط مدل، فراتر رفتن از محدودیتهای پنجره زمینه.
#### ۲.۸ تحویل پاسخ
- هدف: ارسال پاسخ نهایی تولید شده به کاربر یا سیستم فراخوان.
- گرهها (Nodes):
* Respond to Webhook (پاسخ به Webhook)
- جزئیات گرهها:
* Respond to Webhook:
* نوع: n8n-nodes-base.respondToWebhook
* نقش: پاسخ نهایی را به عنوان یک پاسخ Webhook ارسال میکند. این معمولاً زمانی استفاده میشود که گردش کار توسط خود یک Webhook فعال شده باشد.
* ورودی: پاسخ تولید شده از گره Answer.
* خروجی: پاسخ HTTP به درخواست Webhook اصلی.
* مشکلات احتمالی: خطاهای پیکربندی Webhook، مشکلات شبکه که مانع تحویل پاسخ میشود.
Nodeهای استفادهشده
سوالات متداول
RAG تطبیقی چیست و چگونه کار میکند؟▾
RAG تطبیقی (Adaptive Retrieval-Augmented Generation) سیستمی است که پرسوجوهای کاربر را قبل از بازیابی اطلاعات، طبقهبندی میکند. سپس بر اساس نوع پرسوجو (واقعی، تحلیلی، نظری، زمینهای)، استراتژی بازیابی و تولید پاسخ را تنظیم میکند تا پاسخهای دقیقتر و مرتبطتری ارائه دهد.
نقش Google Gemini و Qdrant در این گردش کار چیست؟▾
Google Gemini برای طبقهبندی پرسوجوها و تولید پاسخهای نهایی استفاده میشود. Qdrant به عنوان یک فروشگاه برداری، وظیفه ذخیره و بازیابی سریع اسناد مرتبط با پرسوجو را بر عهده دارد.
چگونه این گردش کار n8n به بهبود دقت پاسخها کمک میکند؟▾
با طبقهبندی پرسوجوها، گردش کار میتواند استراتژیهای بازیابی و پردازش متفاوتی را اعمال کند. برای مثال، پرسوجوهای واقعی ممکن است به بازیابی مستقیم اطلاعات نیاز داشته باشند، در حالی که پرسوجوهای تحلیلی ممکن است به ترکیب اطلاعات از منابع مختلف یا استدلال نیاز داشته باشند. این تطبیقپذیری منجر به پاسخهای دقیقتر و آگاهانهتر از زمینه میشود.
آیا این گردش کار برای حفظ تاریخچه مکالمه طراحی شده است؟▾
بله، این گردش کار از بافرهای حافظه چت برای حفظ زمینه مکالمه در طول زمان استفاده میکند و اطمینان میدهد که پاسخها با توجه به تعاملات قبلی کاربر ارائه میشوند.
workflowهای مرتبط
- اتوماسیون جستجوی لینکدین با GPT-4 و جستجوی بولی گوگلHR
- اتوماسیون خلاصهسازی جلسات با Google Drive و OpenAIAI
- احراز هویت کاربران با OpenID Connect در n8nBuilding Blocks
- تحلیل صوتی با DeepGram و GPT-4o در n8nAI
- گردش کار n8n: ارجاع پشتیبانی هوش مصنوعی به انسانSupport
- اتوماسیون بایگانی صفحات خالی NotionBuilding Blocks
