پاسخ به سوالات مستندات با n8n، BigQuery و OpenAI

پاسخ به سوالات مستندات با n8n، BigQuery و OpenAI

11 دقیقه مطالعه · منتشر شده ۱۴۰۵/۴/۳۰

دانلود workflow

فایل JSON آماده import در n8n — credentialها باید در n8n شما تنظیم شوند.

  1. فایل JSON را دانلود کنید.
  2. در n8n: Workflows → Import from File.
  3. Credentialهای هر node را متصل کنید.
  4. workflow را فعال کنید.

شناسه workflow: 8220 · منبع: کاتالوگ Axeto

پاسخ به سوالات مستندات با استفاده از BigQuery RAG و OpenAI

این گردش کار نحوه ساخت یک سیستم تولید افزوده بازیابی (Retrieval-Augmented Generation - RAG) برای پاسخ به سوالات مربوط به مستندات n8n را نشان می‌دهد. این سیستم از BigQuery به عنوان پایگاه داده برداری و مدل‌های OpenAI برای جاسازی سوالات و تولید پاسخ استفاده می‌کند. این سیستم به کاربران اجازه می‌دهد تا سوالات زبان طبیعی بپرسند، قطعات مرتبط مستندات را از BigQuery بازیابی کند و سپس از یک عامل هوش مصنوعی برای ترکیب این قطعات در یک پاسخ منسجم با فرمت Markdown استفاده کند.

شما می‌توانید این گردش کار و موارد دیگر را در کاتالوگ Axeto بیابید.

ساختار گردش کار

گردش کار به دو بخش اصلی تقسیم می‌شود:

1. گردش کار اصلی: دریافت ورودی و پردازش عامل هوش مصنوعی: این بخش کوئری‌های ورودی کاربر را مدیریت می‌کند، آن‌ها را به یک عامل هوش مصنوعی هدایت می‌کند و فرآیند RAG را هماهنگ می‌کند.

2. گردش کار فرعی: بازیابی سند (BigQuery RAG OpenAI): این یک ابزار تخصصی است که توسط عامل هوش مصنوعی برای انجام بازیابی واقعی اسناد مرتبط از BigQuery فراخوانی می‌شود.

---

تجزیه و تحلیل گره‌های دقیق

۱. گردش کار اصلی: دریافت ورودی و پردازش عامل هوش مصنوعی

این بخش از گردش کار، پیام‌های چت را دریافت می‌کند، آن‌ها را با استفاده از یک عامل هوش مصنوعی پردازش می‌کند و پاسخ‌هایی با فرمت Markdown تولید می‌کند.

  • گره‌ها (Nodes):

* When chat message received (LangChain Chat Trigger)

* AI Agent (LangChain Agent)

* OpenAI Chat Model (LangChain LM Chat OpenAI)

* Simple Memory (LangChain Memory Buffer Window)

* BigQuery RAG OpenAI (LangChain Tool Workflow)

* Sticky Note (برای مستندات)

  • جزئیات گره‌ها:

* When chat message received

* نوع: n8n-nodes-base.chatTrigger (یا گره مشابه LangChain Trigger)

* هدف: به عنوان نقطه ورود عمل می‌کند و از طریق یک Webhook توسط پیام‌های چت دریافتی فعال می‌شود.

* پیکربندی: نیاز به شناسه Webhook دارد.

* اتصالات: خروجی به گره AI Agent دارد.

* ملاحظات: از اتصال Webhook و فرمت‌بندی صحیح پیام اطمینان حاصل کنید.

* AI Agent

* نوع: @n8n/n8n-nodes-langchain.agent

* هدف: هسته منطق پرسش و پاسخ است. ورودی کاربر را تفسیر می‌کند، از ابزار BigQuery RAG OpenAI برای بازیابی اسناد استفاده می‌کند و پاسخ نهایی را در فرمت Markdown تولید می‌کند.

* پیکربندی: یک prompt سیستمی، عامل را راهنمایی می‌کند تا از ابزار vector store استفاده کند و پاسخ‌ها را با عناصر Markdown (بخش‌ها، لیست‌ها، بلوک‌های کد، تصاویر) قالب‌بندی کند.

* اتصالات: ورودی را از When chat message received دریافت می‌کند، از OpenAI Chat Model به عنوان مدل زبان خود استفاده می‌کند، از Simple Memory برای تاریخچه مکالمه بهره می‌برد و BigQuery RAG OpenAI را به عنوان یک ابزار فراخوانی می‌کند.

* ملاحظات: خطاهای احتمالی در اجرای ابزار، پاسخ‌های مدل زبان یا قالب‌بندی Markdown.

* OpenAI Chat Model

* نوع: @n8n/n8n-nodes-langchain.lmChatOpenAi

* هدف: قابلیت‌های مدل زبان را فراهم می‌کند، به طور خاص از gpt-4.1-mini برای مقرون به صرفه بودن استفاده می‌کند.

* پیکربندی: مدل روی gpt-4.1-mini تنظیم شده است. نیاز به اعتبارنامه معتبر OpenAI API دارد.

* اتصالات: توسط AI Agent به عنوان مدل زبان آن استفاده می‌شود.

* ملاحظات: محدودیت‌های نرخ OpenAI API، مشکلات احراز هویت یا در دسترس بودن مدل.

* Simple Memory

* نوع: @n8n/n8n-nodes-langchain.memoryBufferWindow

* هدف: زمینه مکالمه را حفظ می‌کند و به عامل هوش مصنوعی اجازه می‌دهد به نوبت‌های قبلی مراجعه کند.

* پیکربندی: تنظیمات پیش‌فرض buffer window.

* اتصالات: برای مدیریت زمینه به AI Agent متصل است.

* ملاحظات: برای محیط‌های تولیدی، راه‌حل‌های حافظه قوی‌تری مانند Postgres Chat Memory را برای جلوگیری از از دست دادن زمینه در مکالمات طولانی در نظر بگیرید.

* BigQuery RAG OpenAI

* نوع: @n8n/n8n-nodes-langchain.toolWorkflow

* هدف: این گره به عنوان یک ابزار قابل فراخوانی عمل می‌کند و یک گردش کار فرعی را برای بازیابی اسناد مرتبط از BigQuery بر اساس سوال کاربر فراخوانی می‌کند.

* پیکربندی: پارامتر ورودی vector_search_question را می‌گیرد که همان پرس و جوی کاربر است.

* اتصالات: توسط AI Agent به عنوان یک ابزار فراخوانی می‌شود.

* ملاحظات: خطا در گردش کار فرعی یا عدم تطابق در پارامترهای ورودی.

۲. گردش کار فرعی: بازیابی اسناد (BigQuery RAG OpenAI)

این گردش کار فرعی مسئول تبدیل سوال کاربر به یک embedding، پرس و جو از vector store در BigQuery و بازگرداندن مرتبط‌ترین قطعات مستندات است.

  • گره‌ها (Nodes):

* When Executed by Another Workflow (Execute Workflow Trigger)

* Set field - question (Set Node)

* OpenAI - Create Embedding (HTTP Request)

* Set Field - Embedding (Set Node)

* BigQuery - Vector Retriever - n8n docs (HTTP Request)

* Documents retrieved (Set Node)

* Sticky Note (برای مستندات)

  • جزئیات گره‌ها:

* When Executed by Another Workflow

* نوع: n8n-nodes-base.executeWorkflowTrigger

* هدف: نقطه ورود این گردش کار فرعی است که هنگام فراخوانی آن توسط AI Agent به عنوان یک ابزار فعال می‌شود.

* پیکربندی: انتظار پارامتر ورودی به نام vector_search_question را دارد.

* اتصالات: خروجی به گره Set field - question دارد.

* ملاحظات: اطمینان حاصل کنید که پارامتر ورودی به درستی منتقل و قالب‌بندی شده است.

* Set field - question

* نوع: n8n-nodes-base.set

* هدف: پارامتر ورودی vector_search_question را به فیلدی به نام question برای دسترسی آسان‌تر در گره‌های بعدی اختصاص می‌دهد.

* پیکربندی: question را به {{$json.vector_search_question}} تنظیم می‌کند.

* اتصالات: خروجی به گره OpenAI - Create Embedding دارد.

* ملاحظات: مواردی را که ممکن است سوال ورودی خالی یا تعریف نشده باشد، مدیریت می‌کند.

* OpenAI - Create Embedding

* نوع: n8n-nodes-base.httpRequest

* هدف: API OpenAI را برای تولید یک embedding برداری برای سوال کاربر فراخوانی می‌کند.

* پیکربندی:

* متد (Method): POST

* URL: https://api.openai.com/v1/embeddings

* بدنه (Body): شامل سوال و مشخص کردن مدل embedding (مثلاً text-embedding-3-large).

* احراز هویت (Authentication): نیاز به اعتبارنامه OpenAI API دارد.

* اتصالات: داده‌های embedding تولید شده را به گره Set Field - Embedding خروجی می‌دهد.

* ملاحظات: خطاهای احتمالی API، شکست احراز هویت، محدودیت‌های نرخ یا مشکلات مربوط به متن ورودی.

* Set Field - Embedding

* نوع: n8n-nodes-base.set

* هدف: بردار embedding را از پاسخ API OpenAI استخراج کرده و در فیلدی به نام embedding ذخیره می‌کند.

* پیکربندی: embedding را به {{$json.data[0].embedding}} تنظیم می‌کند.

* اتصالات: خروجی به گره BigQuery - Vector Retriever - n8n docs دارد.

* ملاحظات: داده‌های embedding گمشده یا بدشکل در پاسخ API را مدیریت می‌کند.

* BigQuery - Vector Retriever - n8n docs

* نوع: n8n-nodes-base.httpRequest

* هدف: یک کوئری SQL را در برابر BigQuery اجرا می‌کند تا جستجوی شباهت برداری را انجام دهد. ۱۰ سند مرتبط‌تر را بر اساس embedding ارائه شده بازیابی می‌کند.

* پیکربندی:

* متد (Method): POST

* URL: نقطه پایانی کوئری BigQuery (مثلاً https://bigquery.googleapis.com/bigquery/v2/projects/<YOUR-PROJECT-ID>/queries). به یاد داشته باشید که <YOUR-PROJECT-ID> را با شناسه پروژه واقعی Google Cloud خود جایگزین کنید.

* بدنه (Body): شامل یک کوئری SQL با استفاده از تابع VECTOR_SEARCH است (مثلاً SELECT document FROM \n8n-docs-rag.n8n_docs.n8n_docs_embeddings\ WHERE VECTOR_SEARCH(embedding_column, @embedding_vector, 10, options => 'distance_type=COSINE,brute_force=true')).

* احراز هویت (Authentication): نیاز به اعتبارنامه OAuth2 Google BigQuery دارد.

* اتصالات: نتایج کوئری را به گره Documents retrieved خروجی می‌دهد.

* ملاحظات: خطاهای احراز هویت، محدودیت‌های سهمیه، سینتکس نامعتبر SQL، شناسه پروژه نادرست، قطع شدن شبکه یا مشکلات مربوط به جدول/ستون‌های BigQuery.

* Documents retrieved

* نوع: n8n-nodes-base.set

* هدف: ردیف‌های بازگردانده شده توسط BigQuery را به یک رشته JSON تبدیل کرده و در فیلد documents ذخیره می‌کند. این داده قالب‌بندی شده سپس به AI Agent در گردش کار اصلی بازگردانده می‌شود.

* پیکربندی: documents را به {{$json.rows.toJsonString()}} تنظیم می‌کند.

* اتصالات: این خروجی نهایی گردش کار فرعی است و داده‌ها را به گره BigQuery RAG OpenAI در گردش کار اصلی بازمی‌گرداند.

* ملاحظات: نتایج خالی کوئری یا خطاهای احتمالی تبدیل JSON را مدیریت می‌کند.

---

جدول خلاصه

نام نود (Node Name)نوع نود (Node Type)نقش عملکردی (Functional Role)نود(های) ورودی (Input Node(s))نود(های) خروجی (Output Node(s))یادداشت چسبان (Sticky Note)
When chat message receivedLangChain Chat Triggerنقطه ورود برای پیام‌های چت دریافتیAI Agentبا دریافت پیام چت، گردش کار را فعال می‌کند.
AI AgentLangChain Agentورودی را پردازش می‌کند، پایگاه داده برداری را جستجو می‌کند، پاسخ Markdown تولید می‌کندWhen chat message receivedOpenAI Chat Model, Simple Memory, BigQuery RAG OpenAIRAG را هماهنگ می‌کند؛ از ابزار برای بازیابی استفاده می‌کند و خروجی را در Markdown قالب‌بندی می‌کند.
OpenAI Chat ModelLangChain LM Chat OpenAIمدل gpt-4.1-mini را برای تولید متن فراهم می‌کندAI AgentAI Agent (به عنوان مدل زبان)از gpt-4.1-mini برای کارایی هزینه استفاده می‌کند. کلید API OpenAI مورد نیاز است.
Simple MemoryLangChain Memory Buffer Windowزمینه مکالمه را حفظ می‌کندAI AgentAI Agent (به عنوان حافظه)تاریخچه مکالمه را ذخیره می‌کند. برای محیط عملیاتی، جایگزین‌ها را در نظر بگیرید.
BigQuery RAG OpenAILangChain Tool Workflowفراخوانی گردش کار فرعی برای بازیابی سندAI AgentAI Agent (به عنوان ابزار)گردش کار بازیابی سند را فراخوانی می‌کند و سوال کاربر را ارسال می‌کند.
When Executed by Another WorkflowExecute Workflow Triggerنقطه ورود گردش کار فرعیSet field - questionزمانی که AI Agent این گردش کار فرعی را فراخوانی می‌کند، فعال می‌شود.
Set field - questionSet Nodeپارامتر ورودی را به فیلد question اختصاص می‌دهدWhen Executed by Another WorkflowOpenAI - Create Embeddingسوال را برای تولید امبدینگ آماده می‌کند.
OpenAI - Create EmbeddingHTTP Requestبردار امبدینگ را برای سوال تولید می‌کندSet field - questionSet Field - EmbeddingAPI OpenAI را برای امبدینگ فراخوانی می‌کند. از text-embedding-3-large استفاده می‌کند.
Set Field - EmbeddingSet Nodeبردار امبدینگ را از پاسخ API استخراج می‌کندOpenAI - Create EmbeddingBigQuery - Vector Retriever - n8n docsآرایه امبدینگ را برای کوئری BigQuery جدا می‌کند.
BigQuery - Vector Retriever - n8n docsHTTP Requestجدول برداری BigQuery را برای اسناد مرتبط کوئری می‌کندSet Field - EmbeddingDocuments retrievedجستجوی شباهت برداری را در BigQuery انجام می‌دهد. <YOUR-PROJECT-ID> را جایگزین کنید. اعتبارنامه‌های BigQuery مورد نیاز است.
Documents retrievedSet Nodeنتایج BigQuery را به عنوان رشته JSON برای AI Agent قالب‌بندی می‌کندBigQuery - Vector Retriever - n8n docsBigQuery RAG OpenAI (خروجی گردش کار فرعی)اسناد بازیابی شده را بسته‌بندی می‌کند تا به AI Agent گردش کار اصلی بازگردانده شود.
Sticky Note (multiple)Sticky Noteمستندات و توضیحات را ارائه می‌دهداطلاعات زمینه‌ای، دستورالعمل‌ها و پیوندها را برای نودهای مختلف و گردش کار کلی ارائه می‌دهد.

---

بازسازی گردش کار

برای بازسازی این گردش کار:

1. راه‌اندازی گردش کار اصلی:

* یک گره LangChain Chat Trigger (مثلاً n8n-nodes-base.chatTrigger) اضافه کنید. آن را با یک شناسه وب‌هوک منحصربه‌فرد پیکربندی کنید.

* یک گره LangChain Agent (مثلاً @n8n/n8n-nodes-langchain.agent) اضافه کنید. یک اعلان سیستمی تعریف کنید که به آن دستور استفاده از ابزار فروشگاه برداری (vector store) و قالب‌بندی پاسخ‌ها در Markdown را بدهد.

* یک گره LangChain LM Chat OpenAI (مثلاً @n8n/n8n-nodes-langchain.lmChatOpenAi) اضافه کنید. مدل را روی gpt-4.1-mini تنظیم کرده و کلید API OpenAI خود را وارد کنید.

* یک گره LangChain Memory Buffer Window (مثلاً @n8n/n8n-nodes-langchain.memoryBufferWindow) اضافه کنید.

* یک گره LangChain Tool Workflow (مثلاً @n8n/n8n-nodes-langchain.toolWorkflow) اضافه کرده و نام آن را BigQuery RAG OpenAI بگذارید. این گره زیرگردش کار را فراخوانی می‌کند.

* این گره‌ها را همانطور که در بخش "گردش کار اصلی" توضیح داده شده است، به هم متصل کنید.

2. راه‌اندازی زیرگردش کار (بازیابی اسناد):

* یک زیرگردش کار جدید ایجاد کنید.

* یک گره Execute Workflow Trigger (مثلاً n8n-nodes-base.executeWorkflowTrigger) اضافه کنید. آن را طوری پیکربندی کنید که پارامتر ورودی vector_search_question را بپذیرد.

* یک گره Set برای نگاشت پارامتر ورودی به فیلد question اضافه کنید.

* یک گره HTTP Request برای فراخوانی API Embeddings OpenAI (https://api.openai.com/v1/embeddings) اضافه کنید. بدنه درخواست و احراز هویت را پیکربندی کنید.

* یک گره Set دیگر برای استخراج بردار embedding از پاسخ OpenAI اضافه کنید.

* یک گره نهایی HTTP Request برای پرس‌وجو از جدول برداری BigQuery خود اضافه کنید. نقطه پایانی API BigQuery، پرس‌وجوی SQL (با استفاده از VECTOR_SEARCH) و احراز هویت را پیکربندی کنید. اطمینان حاصل کنید که <YOUR-PROJECT-ID> را در URL و احتمالاً نام جدول/ستون‌ها را در پرس‌وجوی SQL جایگزین کنید.

* یک گره نهایی Set برای قالب‌بندی نتایج BigQuery به یک رشته JSON به نام documents اضافه کنید.

* این گره‌ها را به صورت متوالی در داخل زیرگردش کار به هم متصل کنید.

3. پیکربندی اعتبارنامه‌ها: اطمینان حاصل کنید که اعتبارنامه‌های API لازم برای OpenAI و Google BigQuery را در n8n تنظیم کرده‌اید.

4. استقرار و آزمایش: گردش کار را فعال کرده و با ارسال پیام‌های چت به وب‌هوک پیکربندی شده، آن را آزمایش کنید.

Nodeهای استفاده‌شده

سوالات متداول

RAG چیست و چگونه کار می‌کند؟

RAG (Retrieval-Augmented Generation) سیستمی است که با بازیابی اطلاعات مرتبط از یک پایگاه داده خارجی (مانند BigQuery در این مورد) و سپس استفاده از یک مدل زبان بزرگ (مانند OpenAI) برای تولید پاسخ بر اساس آن اطلاعات، کیفیت و دقت پاسخ‌های هوش مصنوعی را بهبود می‌بخشد.

چرا از BigQuery به عنوان پایگاه داده برداری استفاده می‌شود؟

BigQuery به دلیل قابلیت‌های مقیاس‌پذیری، مدیریت داده‌های حجیم و ادغام با سایر ابزارهای Google Cloud، می‌تواند به عنوان یک پایگاه داده کارآمد برای ذخیره و بازیابی بردارهای جاسازی شده (embeddings) مورد استفاده قرار گیرد، که برای سیستم‌های RAG ضروری است.

چه مدل‌هایی از OpenAI در این گردش کار استفاده می‌شود؟

این گردش کار از مدل‌های OpenAI برای جاسازی سوالات و تولید پاسخ استفاده می‌کند. در مثال ذکر شده، مدل `gpt-4.1-mini` به دلیل مقرون به صرفه بودن پیشنهاد شده است، اما می‌توان از مدل‌های دیگر OpenAI نیز بسته به نیاز استفاده کرد.

چگونه می‌توان این گردش کار را برای مستندات خود سفارشی کرد؟

برای سفارشی‌سازی، باید داده‌های مستندات خود را پردازش کرده و به بردارهای جاسازی شده تبدیل کنید، سپس آن‌ها را در BigQuery بارگذاری نمایید. همچنین، prompt سیستم در گره 'AI Agent' را برای هدایت بهتر عامل هوش مصنوعی تنظیم کنید.

workflowهای مرتبط

این workflow در کاتالوگ Axeto.ai بایگانی شده است. لایسنس اصلی متعلق به سازنده workflow است.