چت هوش مصنوعی با فایل‌های Supabase Storage

چت هوش مصنوعی با فایل‌های Supabase Storage

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

دانلود workflow

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

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

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

عامل هوش مصنوعی برای تعامل مکالمه‌ای با فایل‌ها در Supabase Storage

این گردش کار به کاربران امکان می‌دهد تا با اسناد ذخیره شده در Supabase Storage به زبان طبیعی مکالمه کنند. این سیستم از قابلیت‌های جستجوی برداری و چت مبتنی بر هوش مصنوعی برای بازیابی اطلاعات متنی از مخزن فایل شما استفاده می‌کند. این ابزار برای محققان، تحلیلگران یا صاحبان کسب‌وکار که نیاز به دسترسی و درک کارآمد اطلاعات در مجموعه‌های بزرگ اسناد، از جمله فایل‌های PDF و متنی ساده دارند، ایده‌آل است.

شما می‌توانید این گردش کار را در نمونه Axeto n8n خود در آدرس زیر پیدا و وارد کنید: Axeto n8n Workflows

---

نمای کلی گردش کار

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

1. دریافت و برداری‌سازی اسناد: این بلوک فرآیند دریافت فایل‌ها از Supabase Storage، استخراج محتوای آن‌ها، ایجاد بردارهای جاسازی (embeddings) و ذخیره‌سازی آن‌ها برای جستجوی کارآمد را مدیریت می‌کند.

2. تعامل با چت‌بات هوش مصنوعی: این بلوک تعاملات چت کاربر را مدیریت می‌کند، داده‌های برداری‌شده را برای اطلاعات مرتبط پرس‌وجو می‌کند و پاسخ‌های مبتنی بر هوش مصنوعی را بر اساس محتوای اسناد تولید می‌کند.

این طراحی یک سیستم ماژولار و قابل نگهداری را تضمین می‌کند که Supabase را با قابلیت‌های هوش مصنوعی از طریق OpenAI به طور ایمن ادغام می‌کند و به شما امکان می‌دهد بدون اتکا به سرویس‌های خارجی مانند Google Drive، مخزن اسناد خود را پرس‌وجو کنید.

---

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

۱. ورود و بردارسازی اسناد

این بخش فرآیند ورود و آماده‌سازی اسناد شما را برای بازیابی مبتنی بر هوش مصنوعی خودکار می‌کند.

گره‌های درگیر:

  • Manual Trigger (n8n-nodes-base.manualTrigger)
  • Get All Files (n8n-nodes-base.supabase)
  • Aggregate (n8n-nodes-base.aggregate)
  • Get All Files from Storage (n8n-nodes-base.httpRequest)
  • Loop Over Items (n8n-nodes-base.splitInBatches)
  • If New File (n8n-nodes-base.if)
  • Download File (n8n-nodes-base.httpRequest)
  • Switch File Type (n8n-nodes-base.switch)
  • Extract PDF Content (n8n-nodes-base.extractFromFile)
  • Merge Content (n8n-nodes-base.merge)
  • Load Document (n8n-nodes-langchain.documentLoader)
  • Split Text into Chunks (n8n-nodes-langchain.textSplitter)
  • Generate Embeddings (n8n-nodes-langchain.embeddings)
  • Create File Record (n8n-nodes-base.supabase)
  • Insert into Vector Store (n8n-nodes-langchain.vectorStoreSupabase)
  • Setup Reminder (n8n-nodes-base.stickyNote)

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

  • Manual Trigger

* Type: n8n-nodes-base.manualTrigger

* نقش: فرآیند ورود فایل را با فعال‌سازی دستی آغاز می‌کند.

* پیکربندی: پارامتر خاصی لازم نیست.

* ورودی: ندارد.

* خروجی: گره Get All Files را فعال می‌کند.

  • Get All Files

* Type: n8n-nodes-base.supabase (عملیات Get All)

* نقش: رکوردهای فایل موجود را از جدول files Supabase شما بازیابی می‌کند تا موارد تکراری را بررسی کند.

* پیکربندی: شناسه جدول را روی "files" تنظیم کنید.

* ورودی: خروجی Manual Trigger.

* خروجی: لیستی از تمام رکوردهای فایل موجود.

* خطاهای احتمالی: خطاهای احراز هویت در صورت نامعتبر بودن اعتبارنامه‌های Supabase.

  • Aggregate

* Type: n8n-nodes-base.aggregate

* نقش: خروجی Get All Files را برای مقایسه آسان‌تر در یک آرایه واحد ادغام می‌کند.

* پیکربندی: تمام موارد ورودی را ادغام کنید.

* ورودی: خروجی Get All Files.

* خروجی: لیستی ادغام شده از فایل‌های موجود.

  • Get All Files from Storage

* Type: n8n-nodes-base.httpRequest

* نقش: با استفاده از API ذخیره‌سازی Supabase، لیست فایل‌های موجود در سطل ذخیره‌سازی Supabase شما را واکشی می‌کند.

* پیکربندی:

* Method: POST

* URL: نقطه پایانی API ذخیره‌سازی Supabase برای لیست کردن اشیاء.

* Body: بار داده JSON برای لیست کردن اشیاء (مثلاً {"limit": 100, "offset": 0, "sortBy": {"column": "name", "order": "asc"}}).

* اعتبارنامه‌ها: اعتبارنامه‌های API Supabase با مجوزهای مناسب.

* ورودی: لیست ادغام شده فایل‌های موجود از گره Aggregate.

* خروجی: لیستی از فایل‌های موجود در سطل ذخیره‌سازی Supabase شما.

* خطاهای احتمالی: خطاهای API، مهلت زمانی شبکه، پاسخ‌های JSON نامعتبر.

* Setup Reminder: به شما یادآوری می‌کند که نام ذخیره‌سازی Supabase، کلید API و URL خود را پیکربندی کنید.

  • Loop Over Items

* Type: n8n-nodes-base.splitInBatches

* نقش: هر فایل را از لیست ذخیره‌سازی به صورت جداگانه پردازش می‌کند.

* پیکربندی: اندازه دسته روی 1 تنظیم شده است.

* ورودی: لیست فایل‌ها از Get All Files from Storage.

* خروجی: داده‌های فایل فردی برای پردازش.

  • If New File

* Type: n8n-nodes-base.if

* نقش: فایل‌هایی را که قبلاً پردازش شده‌اند (در جدول files وجود دارند) یا فایل‌های جایگزین (مانند .emptyFolderPlaceholder) را فیلتر می‌کند.

* پیکربندی:

شرط ۱: شناسه فایل در لیست فایل‌های موجود یافت نمی‌شود*.

شرط ۲: نام فایل ".emptyFolderPlaceholder" نیست*.

* ورودی: داده‌های فایل فعلی از Loop Over Items و لیست فایل‌های موجود.

* خروجی: در صورت برآورده شدن شرایط (شاخه True)، به گره Download File ادامه می‌دهد؛ در غیر این صورت، پردازش را نادیده می‌گیرد (شاخه False).

* خطاهای احتمالی: خطاهای ارزیابی عبارت در صورت مفقود بودن یا نامعتبر بودن داده‌های ورودی.

  • Download File

* Type: n8n-nodes-base.httpRequest

* نقش: محتوای یک فایل جدید را از ذخیره‌سازی Supabase دانلود می‌کند.

* پیکربندی:

* Method: GET

* URL: URL ذخیره‌سازی Supabase برای فایل.

* اعتبارنامه‌ها: اعتبارنامه‌های API Supabase.

* ورودی: اطلاعات فایل از گره If New File (شاخه True).

* خروجی: داده‌های باینری فایل.

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

* Setup Reminder: به شما یادآوری می‌کند که نام ذخیره‌سازی Supabase، کلید API و URL خود را پیکربندی کنید.

  • Switch File Type

* Type: n8n-nodes-base.switch

* نقش: فایل دانلود شده را بر اساس نوع آن (PDF یا متن) برای استخراج محتوای مناسب هدایت می‌کند.

* پیکربندی: پسوند فایل داده‌های باینری را بررسی می‌کند.

* ورودی: داده‌های باینری فایل دانلود شده از Download File.

* خروجی:

* فایل‌های PDF به Extract PDF Content ارسال می‌شوند.

* فایل‌های متنی (یا فایل‌هایی با پسوند ناشناخته) به Merge Content ارسال می‌شوند.

  • Extract PDF Content

* Type: n8n-nodes-base.extractFromFile

* نقش: محتوای متنی را به طور خاص از فایل‌های PDF استخراج می‌کند.

* پیکربندی: عملیات روی "pdf" تنظیم شده است.

* ورودی: داده‌های باینری PDF از Switch File Type.

* خروجی: JSON حاوی محتوای متنی استخراج شده.

* خطاهای احتمالی: خطا در صورت خراب بودن فایل PDF یا در فرمت پشتیبانی نشده.

  • Merge Content

* Type: n8n-nodes-base.merge

* نقش: محتوای متنی استخراج شده از فایل‌های PDF یا فایل‌های متنی مستقیم را در یک فرمت واحد یکپارچه می‌کند.

* پیکربندی: حالت ادغام پیش‌فرض (پیوست).

* ورودی: محتوای متنی از Switch File Type (شاخه متن) یا Extract PDF Content (شاخه PDF).

* خروجی: محتوای متنی یکپارچه آماده برای پردازش بیشتر.

  • Load Document

* Type: n8n-nodes-langchain.documentLoader

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

* پیکربندی:

* Document Content: از یک عبارت برای انتخاب فیلد data یا text از گره Merge Content استفاده می‌کند.

* Metadata: شامل file_id استخراج شده از ویژگی JSON id داده ورودی.

* ورودی: محتوای متنی ادغام شده و فراداده فایل.

* خروجی: یک شیء سند با محتوا و فراداده.

* خطاهای احتمالی: خطاهای عبارت در صورت مفقود بودن فیلدهای مورد انتظار در ورودی.

  • Split Text into Chunks

* Type: n8n-nodes-langchain.textSplitter

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

* پیکربندی:

* Chunk Size: 500 کاراکتر.

* Chunk Overlap: 200 کاراکتر.

* ورودی: شیء سند از Load Document.

* خروجی: آرایه‌ای از قطعات متن.

  • Generate Embeddings

* Type: n8n-nodes-langchain.embeddings (OpenAI)

* نقش: با استفاده از مدل بردارسازی OpenAI، بردارهای جاسازی (embeddings) را برای هر قطعه متن ایجاد می‌کند.

* پیکربندی:

* Model: text-embedding-3-small.

* اعتبارنامه‌ها: اعتبارنامه‌های API OpenAI.

* ورودی: قطعات متن از Split Text into Chunks.

* خروجی: بردارهای جاسازی به همراه فراداده مرتبط آن‌ها.

* خطاهای احتمالی: خطاهای API OpenAI، مشکلات احراز هویت.

  • Create File Record

* Type: n8n-nodes-base.supabase (عملیات Insert)

* نقش: یک رکورد جدید را در جدول files Supabase درج می‌کند تا فایل را به عنوان پردازش شده علامت‌گذاری کند.

* پیکربندی:

* Table ID: "files".

* Fields:

* name: نام فایل.

* storage_id: شناسه ذخیره‌سازی فایل.

* اعتبارنامه‌ها: اعتبارنامه‌های API Supabase.

* ورودی: اطلاعات فایل از گره Loop Over Items.

* خروجی: تأیید ایجاد رکورد در جدول files.

  • Insert into Vector Store

* Type: n8n-nodes-langchain.vectorStoreSupabase

* نقش: بردارهای جاسازی تولید شده و فراداده آن‌ها را در فروشگاه بردار Supabase شما ذخیره می‌کند.

* پیکربندی:

* Mode: Insert.

* Query Name: match_documents.

* Table: documents.

* اعتبارنامه‌ها: اعتبارنامه‌های API Supabase.

* ورودی: بردارهای جاسازی از Generate Embeddings و تأییدیه از Create File Record.

* خروجی: تأیید درج موفقیت‌آمیز در فروشگاه بردار.

* خطاهای احتمالی: خطاهای درج پایگاه داده، مشکلات اعتبارنامه‌ها.

  • Setup Reminder

* Type: n8n-nodes-base.stickyNote

* نقش: یادآوری‌های مهمی را برای پیکربندی کلیدهای API، نام‌های ذخیره‌سازی و شناسه‌های پایگاه داده خاص محیط شما ارائه می‌دهد.

---

۲. تعامل ربات چت هوش مصنوعی

این بخش به کاربران امکان می‌دهد به صورت مکالمه‌ای با اسناد خود تعامل داشته باشند.

گره‌های درگیر:

  • Chat Message Trigger (n8n-nodes-langchain.chatTrigger)
  • AI Agent (n8n-nodes-langchain.agent)
  • OpenAI Chat Model (n8n-nodes-langchain.chatModel)
  • Vector Store Tool (n8n-nodes-langchain.toolVectorStore)
  • Supabase Vector Store (n8n-nodes-langchain.vectorStoreSupabase)
  • OpenAI Embeddings (n8n-nodes-langchain.embeddings)
  • Setup Reminder (n8n-nodes-base.stickyNote)

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

  • Chat Message Trigger

* Type: n8n-nodes-langchain.chatTrigger (Webhook)

* نقش: پیام‌های چت ورودی از کاربران را گوش می‌دهد.

* پیکربندی: یک شناسه Webhook منحصر به فرد برای ادغام با رابط چت شما تولید می‌شود.

* ورودی: بار داده پیام چت کاربر.

* خروجی: پیام چت را به AI Agent ارسال می‌کند.

* خطاهای احتمالی: خطاهای پیکربندی Webhook، فرمت‌های نامعتبر بار داده.

  • AI Agent

* Type: n8n-nodes-langchain.agent

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

* ورودی: پرس و جوی کاربر از Chat Message Trigger، قطعات سند مرتبط از Vector Store Tool و پاسخ‌ها از OpenAI Chat Model.

* خروجی: پاسخ نهایی چت تولید شده توسط هوش مصنوعی.

* خطاهای احتمالی: خطاهای API، داده‌های ورودی نامعتبر.

  • OpenAI Chat Model

* Type: n8n-nodes-langchain.chatModel (OpenAI)

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

* اعتبارنامه‌ها: اعتبارنامه‌های API OpenAI.

* ورودی: پرس و جوی کاربر و زمینه ارائه شده توسط AI Agent.

* خروجی: پاسخ‌های کاندید برای AI Agent.

* خطاهای احتمالی: محدودیت‌های نرخ API OpenAI، خطاهای احراز هویت.

  • Vector Store Tool

* Type: n8n-nodes-langchain.toolVectorStore

* نقش: فروشگاه بردار Supabase را برای یافتن مرتبط‌ترین قطعات سند بر اساس پرس و جوی کاربر، پرس و جو می‌کند.

* پیکربندی:

* Name: knowledge_base.

* Top K: 8 (مرتبط‌ترین ۸ قطعه را بازیابی می‌کند).

* ورودی: متن پرس و جوی کاربر از AI Agent.

* خروجی: مرتبط‌ترین قطعات سند K و فراداده آن‌ها.

* خطاهای احتمالی: خطاهای اجرای پرس و جو، مشکلات اتصال به Supabase.

  • Supabase Vector Store

* Type: n8n-nodes-langchain.vectorStoreSupabase

* نقش: رابطی را برای پرس و جوی فروشگاه بردار Supabase شما فراهم می‌کند.

* پیکربندی:

* Table: documents.

* Metadata Filter: می‌تواند برای فیلتر کردن نتایج بر اساس فراداده (مانند file_id) پیکربندی شود.

* اعتبارنامه‌ها: اعتبارنامه‌های API Supabase.

* ورودی: پارامترهای پرس و جو از Vector Store Tool.

* خروجی: بردارهای سند مطابق در پایگاه داده Supabase.

* خطاهای احتمالی: خطاهای پرس و جوی پایگاه داده، مشکلات اعتبارنامه‌ها.

  • OpenAI Embeddings

* Type: n8n-nodes-langchain.embeddings (OpenAI)

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

* اعتبارنامه‌ها: اعتبارنامه‌های API OpenAI.

* ورودی: متن پرس و جو.

* خروجی: بردارهای جاسازی برای جستجوی فروشگاه بردار.

* خطاهای احتمالی: مشابه گره Generate Embeddings.

  • Setup Reminder

* Type: n8n-nodes-base.stickyNote

* نقش: به شما یادآوری می‌کند که اعتبارنامه‌های API OpenAI و Supabase خود را در جایی که در این بلوک استفاده می‌شوند، پیکربندی کنید.

---

۳. جدول خلاصه

نام گرهنوع گرهنقش عملکردیگره(های) ورودیگره(های) خروجی
Manual Triggern8n-nodes-base.manualTriggerشروع ورود فایل-Get All Files
Get All Filesn8n-nodes-base.supabaseبازیابی رکوردهای فایل موجودManual TriggerAggregate
Aggregaten8n-nodes-base.aggregateادغام رکوردهای فایلGet All FilesGet All Files from Storage
Get All Files from Storagen8n-nodes-base.httpRequestواکشی فایل‌ها از ذخیره‌سازی SupabaseAggregateLoop Over Items
Loop Over Itemsn8n-nodes-base.splitInBatchesپردازش فایل‌ها یکی یکیGet All Files from StorageIf New File
If New Filen8n-nodes-base.ifفیلتر کردن فایل‌های پردازش شده/جایگزینLoop Over Items, Get All FilesDownload File (True), Skip (False)
Download Filen8n-nodes-base.httpRequestدانلود محتوای فایلIf New File (True)Switch File Type
Switch File Typen8n-nodes-base.switchهدایت بر اساس نوع فایل (PDF/متن)Download FileExtract PDF Content (PDF), Merge Content (Text)
Extract PDF Contentn8n-nodes-base.extractFromFileاستخراج متن از PDFSwitch File Type (PDF)Merge Content
Merge Contentn8n-nodes-base.mergeیکپارچه‌سازی محتوای متنیSwitch File Type (Text), Extract PDF ContentLoad Document
Load Documentn8n-nodes-langchain.documentLoaderبارگیری متن با فرادادهMerge ContentSplit Text into Chunks
Split Text into Chunksn8n-nodes-langchain.textSplitterتقسیم متن به قطعاتLoad DocumentGenerate Embeddings
Generate Embeddingsn8n-nodes-langchain.embeddingsایجاد بردارهای جاسازیSplit Text into ChunksInsert into Vector Store
Create File Recordn8n-nodes-base.supabaseعلامت‌گذاری فایل به عنوان پردازش شده در جدول files SupabaseLoop Over ItemsInsert into Vector Store
Insert into Vector Storen8n-nodes-langchain.vectorStoreSupabaseذخیره بردارهای جاسازی در فروشگاه بردار SupabaseGenerate Embeddings, Create File Record-
Setup Remindern8n-nodes-base.stickyNoteیادآوری‌های پیکربندی--
Chat Message Triggern8n-nodes-langchain.chatTriggerدریافت پیام‌های چت کاربر-AI Agent
AI Agentn8n-nodes-langchain.agentهماهنگ‌سازی تولید پاسخ هوش مصنوعیChat Message Trigger, Vector Store Tool, OpenAI Chat ModelOpenAI Chat Model
OpenAI Chat Modeln8n-nodes-langchain.chatModelتولید پاسخ‌های چتAI AgentAI Agent
Vector Store Tooln8n-nodes-langchain.toolVectorStoreپرس و جو از فروشگاه بردار برای اسناد مرتبطAI AgentAI Agent
Supabase Vector Storen8n-nodes-langchain.vectorStoreSupabaseرابط برای پرس و جوهای فروشگاه بردار SupabaseVector Store ToolVector Store Tool
OpenAI Embeddingsn8n-nodes-langchain.embeddingsتولید بردارهای جاسازی برای جستجو (داخلی)Vector Store ToolVector Store Tool
Setup Remindern8n-nodes-base.stickyNoteیادآوری‌های پیکربندی--

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

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

این گردش کار n8n چه کاری انجام می‌دهد؟

این گردش کار به شما امکان می‌دهد تا با فایل‌های ذخیره شده در Supabase Storage خود به زبان طبیعی مکالمه کنید. این سیستم اسناد را پردازش کرده، بردارهای جاسازی ایجاد می‌کند و سپس با استفاده از هوش مصنوعی به سوالات شما پاسخ می‌دهد.

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

این گردش کار از n8n برای اتوماسیون، Supabase Storage برای ذخیره‌سازی فایل، OpenAI برای قابلیت‌های هوش مصنوعی و LangChain برای پردازش زبان طبیعی و ایجاد بردارهای جاسازی استفاده می‌کند.

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

شما می‌توانید این گردش کار را از طریق لینک ارائه شده در وب‌سایت Axeto.ai وارد نمونه n8n خود کنید. جزئیات دقیق‌تر در بخش "تجزیه و تحلیل گره‌های دقیق" توضیح داده شده است.

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

این گردش کار برای محققان، تحلیلگران، صاحبان کسب‌وکار و هر کسی که نیاز به دسترسی و درک سریع اطلاعات از مجموعه‌های بزرگ اسناد دارد، ایده‌آل است.

workflowهای مرتبط

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