مستندات n8n
74+ نود
📊

امبدینگ‌ها

Embeddings

تبدیل متن به بردار عددی برای جستجوی معنایی، خوشه‌بندی و RAG

هوش مصنوعی
پیشرفته
۰ بازدید
n8n 1.0+

نمای کلی

نود Embeddings یکی از اجزای کلیدی سیستم‌های هوش مصنوعی پیشرفته در n8n است. Embedding فرآیندی است که متن را به یک آرایه از اعداد (بردار) تبدیل می‌کند. این بردار معنای متن را نشان می‌دهد و متون با معنای مشابه بردارهای نزدیک به هم دارند.

مفهوم Embedding به زبان ساده:

  • فرض کنید هر متن یک نقطه روی نقشه است
  • متون با معنای مشابه نزدیک هم قرار می‌گیرند
  • متون با معنای متفاوت دور از هم هستند
  • این "نقشه" ممکن است 256 تا 3072 بُعد داشته باشد (ابعاد بردار)

مفاهیم کلیدی:

  • بردار (Vector): آرایه‌ای از اعداد اعشاری مثل [0.12, -0.34, 0.56, ...]
  • ابعاد (Dimensions): تعداد اعداد در هر بردار (مثلاً 1536 یا 3072)
  • شباهت کسینوسی (Cosine Similarity): معیار اندازه‌گیری شباهت دو بردار (0 تا 1)
  • فاصله (Distance): هر چه فاصله کمتر، شباهت معنایی بیشتر
  • Token: واحد پردازش متن (هر کلمه فارسی تقریباً 3-5 توکن)

قابلیت‌های کلیدی:

  • تبدیل متن فارسی و انگلیسی به بردار
  • پشتیبانی از مدل‌های چندزبانه (Multilingual)
  • یکپارچه‌سازی با Vector Storeها (Pinecone، Supabase، Qdrant)
  • استفاده در زنجیره RAG برای AI Agent
  • پشتیبانی از مدل‌های محلی با Ollama (رایگان و بدون اینترنت)
  • Batch Processing برای پردازش حجم بالای اسناد

ارائه‌دهندگان Embedding:

  • OpenAI: text-embedding-3-small/large, text-embedding-ada-002
  • Google AI: text-embedding-004, embedding-001
  • Cohere: embed-multilingual-v3.0, embed-english-v3.0
  • HuggingFace: مدل‌های متن‌باز متنوع
  • Ollama: مدل‌های محلی مانند nomic-embed-text, mxbai-embed-large
  • Azure OpenAI: نسخه Azure مدل‌های OpenAI
  • AWS Bedrock: Titan Embeddings

کاربردهای اصلی:

  • جستجوی معنایی (Semantic Search)
  • سیستم پرسش و پاسخ از اسناد (RAG)
  • خوشه‌بندی و دسته‌بندی اسناد
  • تشخیص محتوای تکراری (Deduplication)
  • سیستم توصیه‌گر محتوا
  • تطبیق سوال با پاسخ (FAQ Matching)
  • تحلیل شباهت متون

احراز هویت

احراز هویت و تنظیمات

نود Embeddings بسته به ارائه‌دهنده انتخابی، credential متفاوتی نیاز دارد:

1. OpenAI Embeddings (محبوب‌ترین)

  1. 1به [platform.openai.com](https://platform.openai.com) بروید
  2. 2API Key بسازید (شروع با sk-)
  3. 3در n8n: Credentials > OpenAI API
  4. 4مدل‌ها:
  • text-embedding-3-small: 1536 بُعد، ارزان (توصیه می‌شود)
  • text-embedding-3-large: 3072 بُعد، دقیق‌تر
  • text-embedding-ada-002: 1536 بُعد، نسل قبلی

قیمت OpenAI Embeddings:

code
text-embedding-3-small:  $0.02 / 1M tokens
text-embedding-3-large:  $0.13 / 1M tokens
text-embedding-ada-002:  $0.10 / 1M tokens

2. Google AI Embeddings

  1. 1به [Google AI Studio](https://aistudio.google.com/) بروید
  2. 2API Key بگیرید (رایگان!)
  3. 3در n8n: Credentials > Google AI
  4. 4مدل: text-embedding-004
  5. 5ابعاد: 768

3. Cohere Embeddings

  1. 1به [dashboard.cohere.com](https://dashboard.cohere.com) بروید
  2. 2API Key بسازید
  3. 3در n8n: Credentials > Cohere API
  4. 4مدل‌ها:
  • embed-multilingual-v3.0: چندزبانه (فارسی خوب!)
  • embed-english-v3.0: فقط انگلیسی

4. Ollama Embeddings (محلی و رایگان)

  1. 1[Ollama](https://ollama.ai) را نصب کنید
  2. 2مدل Embedding دانلود کنید:
code
ollama pull nomic-embed-text
   ollama pull mxbai-embed-large
  1. 1در n8n: Credentials > Ollama
  2. 2Base URL: http://localhost:11434
  3. 3بدون نیاز به API Key و اینترنت!

5. HuggingFace Embeddings

  1. 1به [huggingface.co](https://huggingface.co) بروید
  2. 2Access Token بسازید
  3. 3در n8n: Credentials > HuggingFace API
  4. 4مدل‌های پیشنهادی:
  • sentence-transformers/all-MiniLM-L6-v2: سبک و سریع
  • sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2: چندزبانه

مقایسه ارائه‌دهندگان:

code
OpenAI 3-small:   ارزان، دقیق، 1536 بُعد، نیاز به اینترنت
OpenAI 3-large:   دقیق‌ترین، 3072 بُعد، گران‌تر
Google:           رایگان (محدود)، 768 بُعد
Cohere Multi:     بهترین برای فارسی، چندزبانه
Ollama:           رایگان، محلی، حریم خصوصی
HuggingFace:      متن‌باز، تنوع بالا، رایگان (محدود)

نکات مهم:

  • برای فارسی: Cohere Multilingual یا OpenAI 3-small توصیه می‌شود
  • برای حریم خصوصی: Ollama (همه چیز محلی)
  • برای شروع رایگان: Google AI یا Ollama
  • ابعاد بردار باید با Vector Store سازگار باشد
  • مدل Embedding تغییر ندهید بعد از ساخت دیتابیس بردار (بردارها ناسازگار می‌شوند)

عملیات‌های موجود

1

openaiEmbedding

تبدیل متن به بردار با مدل‌های OpenAI (text-embedding-3-small/large)

2

googleEmbedding

تبدیل متن به بردار با مدل text-embedding-004 گوگل

3

ollamaEmbedding

تبدیل متن به بردار با مدل‌های محلی Ollama بدون نیاز به اینترنت

4

huggingFaceEmbedding

استفاده از مدل‌های متن‌باز HuggingFace برای تولید Embedding

5

cohereEmbedding

تبدیل متن به بردار با مدل‌های Cohere با پشتیبانی عالی از فارسی

6

azureOpenaiEmbedding

استفاده از مدل‌های OpenAI از طریق Azure برای سازمان‌ها

7

batchEmbedding

تبدیل چندین متن به بردار در یک درخواست برای بهینه‌سازی سرعت و هزینه

8

embeddingForVectorStore

تولید Embedding و ذخیره در Vector Store (Pinecone، Supabase، Qdrant)

9

embeddingForRetrieval

تبدیل Query به بردار و جستجوی نزدیک‌ترین اسناد در Vector Store

10

embeddingComparison

مقایسه شباهت معنایی دو یا چند متن با محاسبه Cosine Similarity

کاربردهای متداول

1. جستجوی معنایی در اسناد (Semantic Search)

جستجوی هوشمند در دیتابیس اسناد فارسی:

code
مرحله 1 - ایندکس اسناد (یکبار):
Google Drive (دانلود اسناد)
  → Text Splitter (تکه‌تکه کردن - هر 500 کلمه)
  → Embeddings OpenAI (text-embedding-3-small)
  → Pinecone (ذخیره بردارها + metadata)

مرحله 2 - جستجو:
Webhook (سوال کاربر)
  → Embeddings OpenAI (تبدیل سوال به بردار)
  → Pinecone (جستجوی نزدیک‌ترین اسناد، topK: 5)
  → AI Agent (پاسخ بر اساس اسناد یافته‌شده)
  → Webhook Response (پاسخ)

2. سیستم پرسش و پاسخ از دانش شرکت (RAG)

ساخت چت‌بات FAQ هوشمند:

code
Telegram Trigger (سوال کاربر)
  → AI Agent (Tools Agent)
    LLM: GPT-4o-mini
    Embedding: text-embedding-3-small
    Vector Store: Supabase Vector
    System: "دستیار دانش شرکت هستی.
    فقط بر اساس اسناد موجود پاسخ بده.
    اگر پاسخی نیافتی بگو 'این سوال در اسناد ما نیست'."
    TopK: 4
    Memory: Window Memory (10 پیام)
  → Telegram (پاسخ مستند)

3. تشخیص محتوای تکراری (Duplicate Detection)

شناسایی تیکت‌های تکراری:

code
Webhook (تیکت جدید)
  → Embeddings OpenAI (تبدیل متن تیکت به بردار)
  → Pinecone (جستجوی مشابه، threshold: 0.92)
  → IF (شباهت > 0.92)
    → TRUE: تیکت تکراری! لینک تیکت قبلی
    → FALSE: ذخیره بردار + ایجاد تیکت جدید
  → MySQL (ذخیره نتیجه)

4. سیستم توصیه محتوا (Content Recommendation)

پیشنهاد مقالات مرتبط:

code
Webhook (مقاله فعلی کاربر)
  → Embeddings OpenAI (بردار مقاله فعلی)
  → Qdrant (جستجوی 5 مقاله مشابه)
    Filter: {category: "technology", status: "published"}
  → Set (فرمت‌دهی نتایج)
  → Webhook Response (لیست پیشنهادات)

5. تطبیق خودکار سوال با پاسخ (FAQ Matching)

پاسخ خودکار به سوالات متداول:

code
مرحله 1 - ذخیره FAQها:
Google Sheets (سوال + پاسخ)
  → Embeddings OpenAI (بردار هر سوال)
  → Supabase Vector (ذخیره با metadata: answer)

مرحله 2 - تطبیق:
Telegram Trigger (سوال کاربر)
  → Embeddings OpenAI (بردار سوال)
  → Supabase Vector (نزدیک‌ترین FAQ، topK: 1)
  → IF (score > 0.85)
    → TRUE: ارسال پاسخ FAQ
    → FALSE: ارسال به پشتیبان انسانی
  → Telegram (پاسخ)

6. خوشه‌بندی اسناد (Document Clustering)

دسته‌بندی خودکار نظرات مشتریان:

code
MySQL (نظرات جدید - هر روز)
  → SplitInBatches (دسته‌های 50تایی)
  → Embeddings OpenAI (بردار هر نظر)
  → Code (محاسبه Cosine Similarity بین همه نظرات)
  → Code (خوشه‌بندی K-Means)
  → Set (برچسب‌گذاری خوشه‌ها)
  → MySQL (ذخیره دسته‌بندی)
  → Gmail (گزارش خوشه‌بندی به مدیر)

7. جستجوی معنایی محصولات

جستجوی هوشمند در فروشگاه:

code
مرحله 1 - ایندکس محصولات:
MySQL (همه محصولات)
  → Set (ترکیب: نام + توضیحات + ویژگی‌ها)
  → Embeddings OpenAI (بردار هر محصول)
  → Pinecone (ذخیره با metadata: price, category, stock)

مرحله 2 - جستجو:
Webhook (جستجوی کاربر: "لپتاپ سبک برای دانشجو")
  → Embeddings OpenAI (بردار جستجو)
  → Pinecone (topK: 10, filter: {stock: true})
  → Set (فرمت نتایج + قیمت + تصویر)
  → Webhook Response (نتایج جستجو)

8. تحلیل شباهت رزومه با شغل

تطبیق رزومه با آگهی استخدام:

code
Webhook (رزومه + آگهی شغل)
  → Embeddings OpenAI (بردار رزومه)
  → Embeddings OpenAI (بردار آگهی شغل)
  → Code (Cosine Similarity محاسبه)
  → Set (امتیاز تطبیق + تحلیل)
  → IF (score > 0.75)
    → TRUE: رزومه مناسب → Telegram (اطلاع به HR)
    → FALSE: رزومه نامناسب → Gmail (پاسخ خودکار)

9. تشخیص زبان و موضوع اسناد

طبقه‌بندی خودکار ایمیل‌ها:

code
Email Trigger (ایمیل جدید)
  → Embeddings Cohere (embed-multilingual-v3.0)
  → Pinecone (جستجو در بردارهای دسته‌بندی‌ها)
    Namespaces: [فنی، مالی، فروش، عمومی]
  → Set (نزدیک‌ترین دسته)
  → IF/Switch (مسیریابی)
    → فنی: ارسال به تیم فنی
    → مالی: ارسال به حسابداری
    → فروش: ارسال به تیم فروش
  → MySQL (ذخیره طبقه‌بندی)

10. پایش برند و تحلیل احساسات

تحلیل معنایی نظرات شبکه‌های اجتماعی:

code
HTTP Request (API شبکه اجتماعی - هر ساعت)
  → SplitInBatches (دسته‌های 100تایی)
  → Embeddings OpenAI (بردار هر نظر)
  → Pinecone (مقایسه با بردارهای مرجع:
    "نظر مثبت"، "نظر منفی"، "شکایت"، "پیشنهاد")
  → Set (نزدیک‌ترین دسته + امتیاز)
  → MySQL (ذخیره تحلیل)
  → IF (دسته = "شکایت" AND score > 0.85)
    → Telegram (هشدار فوری به مدیر)

11. ساخت موتور جستجوی چندزبانه

جستجوی فارسی در اسناد انگلیسی:

code
مرحله 1 - ایندکس (اسناد انگلیسی):
Google Drive (اسناد انگلیسی)
  → Text Splitter (500 کلمه)
  → Embeddings Cohere (embed-multilingual-v3.0)
  → Pinecone (ذخیره بردارها)

مرحله 2 - جستجو (فارسی!):
Webhook (سوال فارسی: "چطور سرور نصب کنم؟")
  → Embeddings Cohere (embed-multilingual-v3.0)
    inputType: search_query
  → Pinecone (جستجو - topK: 5)
  → نتایج انگلیسی مرتبط پیدا می‌شوند!
  → AI Agent (ترجمه + خلاصه فارسی)
  → Webhook Response (پاسخ فارسی)

12. سیستم ضد تقلب در متون

تشخیص کپی و سرقت ادبی:

code
Webhook (متن جدید)
  → Text Splitter (پاراگراف‌ها)
  → Embeddings OpenAI (بردار هر پاراگراف)
  → Pinecone (جستجو در پایگاه متون قبلی، threshold: 0.95)
  → Code (محاسبه درصد تشابه)
  → Set (گزارش: بخش‌های مشابه + درصد + منابع)
  → IF (plagiarism > 30%)
    → Telegram (هشدار: متن کپی شده!)
  → MySQL (ذخیره گزارش)

نکات حرفه‌ای

نکات حرفه‌ای

  1. 1انتخاب مدل Embedding مناسب:
code
فارسی + انگلیسی: Cohere embed-multilingual-v3.0
   فقط انگلیسی:    OpenAI text-embedding-3-small
   دقت بالا:        OpenAI text-embedding-3-large
   رایگان + محلی:   Ollama nomic-embed-text
   سازمانی:         Azure OpenAI Embedding

   ترتیب توصیه برای پروژه فارسی:
   1. Cohere Multilingual (بهترین فارسی)
   2. OpenAI 3-small (خوب + ارزان)
   3. Ollama nomic-embed-text (رایگان)
  1. 1استراتژی Chunking (تکه‌تکه کردن متن):
code
// اندازه chunk بر کیفیت جستجو تاثیر زیادی دارد

   Chunk کوچک (200-300 کلمه):
   + جستجوی دقیق‌تر
   - context کمتر در هر نتیجه

   Chunk متوسط (500-800 کلمه):
   + تعادل خوب (توصیه می‌شود)
   + context کافی

   Chunk بزرگ (1000-2000 کلمه):
   + context زیاد
   - جستجوی کم‌دقت‌تر
   - مصرف توکن بیشتر

   Overlap (همپوشانی):
   50-100 کلمه بین چانک‌ها
   مانع از دست رفتن اطلاعات مرزی می‌شود
  1. 1بهینه‌سازی هزینه:
code
// هزینه Embedding خیلی کمتر از Chat است!
   // 1 میلیون توکن ≈ 200,000 کلمه فارسی

   text-embedding-3-small: $0.02 / 1M tokens
   یعنی: 200,000 کلمه فارسی = 0.02 دلار!

   راهکارهای کاهش هزینه:
   1. Cache بردارها (ذخیره و استفاده مجدد)
   2. Batch Processing (چند متن همزمان)
   3. Strip کردن فاصله‌ها و خطوط اضافی
   4. حذف متون تکراری قبل از Embedding
   5. از 3-small بجای 3-large (7x ارزان‌تر)
  1. 1Caching بردارها (بسیار مهم!):
code
// بردار یک متن همیشه یکسان است
   // پس نیازی به تولید مجدد نیست!

   Webhook (متن)
     → Code (Hash متن: MD5 یا SHA256)
     → Redis/MongoDB (بررسی Cache)
     → IF (Cache hit)
       → Return بردار ذخیره‌شده
     → IF (Cache miss)
       → Embeddings OpenAI
       → Redis/MongoDB (ذخیره بردار)
       → Return بردار جدید

   // صرفه‌جویی تا 80% در هزینه و سرعت!
  1. 1Dimension Reduction (کاهش ابعاد):
code
// مدل‌های جدید OpenAI از ابعاد متغیر پشتیبانی می‌کنند

   text-embedding-3-small:
     پیش‌فرض: 1536 بُعد
     کاهش به: 512 بُعد (سریع‌تر، فضای کمتر)
     کاهش به: 256 بُعد (بسیار سریع)

   // کاهش ابعاد = فضای کمتر در Vector Store
   // + جستجوی سریع‌تر
   // - کمی کاهش دقت (معمولاً ناچیز)

   توصیه: 512 بُعد برای اکثر کاربردها کافی است
  1. 1نکات فارسی:
code
// کلمات فارسی توکن بیشتری مصرف می‌کنند
   هر کلمه فارسی ≈ 3-5 توکن
   هر کلمه انگلیسی ≈ 1-2 توکن

   // برای بهترین نتیجه فارسی:
   1. از مدل چندزبانه استفاده کنید (Cohere)
   2. متن فارسی نرمال‌سازی کنید (ی و ک عربی → فارسی)
   3. Stop words فارسی حذف کنید (از، به، در، که...)
   4. اگر هم فارسی هم انگلیسی دارید: Multilingual الزامی
  1. 1انتخاب Vector Store مناسب:
code
Pinecone:    ابری، مقیاس‌پذیر، Tier رایگان
   Supabase:    ابری، PostgreSQL + pgvector
   Qdrant:      سریع، self-hosted، متن‌باز
   In-Memory:   فقط تست (داده از بین می‌رود)

   توصیه:
   تست و نمونه: In-Memory
   پروژه کوچک: Supabase (رایگان تا 500MB)
   پروژه بزرگ: Pinecone یا Qdrant
  1. 1الگوی RAG حرفه‌ای:
code
// بهترین روش ساخت سیستم Q&A:

   مرحله 1 - آماده‌سازی (یکبار):
   اسناد → Text Splitter → Embedding → Vector Store

   مرحله 2 - پاسخ‌دهی:
   سوال → Embedding → Vector Store Search
     → Top-K نتایج → LLM (پاسخ بر اساس نتایج)

   نکات:
   - Text Splitter: RecursiveCharacterTextSplitter
   - Chunk Size: 500, Overlap: 50
   - TopK: 4-6
   - LLM System Prompt: "فقط بر اساس context پاسخ بده"
  1. 1Metadata برای فیلتر بهتر:
code
// metadata به هر بردار اضافه کنید
   {
     text: "محتوای سند",
     metadata: {
       source: "manual.pdf",
       category: "technical",
       language: "fa",
       date: "2024-01-15",
       author: "تیم فنی"
     }
   }

   // سپس در جستجو فیلتر کنید:
   filter: { category: "technical", language: "fa" }
   // نتایج دقیق‌تر و سریع‌تر!
  1. 1مقایسه عملکرد مدل‌ها:
code
// بنچمارک MTEB (مرجع ارزیابی Embedding):

    text-embedding-3-large:  امتیاز عالی، 3072 بُعد
    text-embedding-3-small:  امتیاز خوب، 1536 بُعد
    Cohere multilingual:     بهترین چندزبانه
    nomic-embed-text:        بهترین رایگان/محلی

    برای 95% کاربردها:
    text-embedding-3-small کافی و بهینه است!
  1. 1Batch Processing برای حجم بالا:
code
// ایندکس 10,000 سند:

    // روش بد (کند):
    Loop → Embedding (تکی) → Vector Store
    // زمان: ~30 دقیقه

    // روش خوب (سریع):
    SplitInBatches (100تایی)
      → Embedding (Batch: 100 متن یکجا)
      → Vector Store (Upsert Batch)
    // زمان: ~3 دقیقه!

    // + Wait Node بین دسته‌ها برای Rate Limit
  1. 1امنیت و حریم خصوصی:
code
// داده‌های حساس → Ollama (محلی)
    // داده‌های عمومی → OpenAI / Cohere (ابری)

    // Ollama: هیچ داده‌ای به خارج ارسال نمی‌شود
    // مناسب برای: اسناد محرمانه، اطلاعات پزشکی، مالی
  1. 1نرمال‌سازی متن فارسی قبل از Embedding:
code
// استفاده از Code Node قبل از Embedding:

    function normalizeText(text) {
      return text
        .replace(/ي/g, 'ی')      // ی عربی → فارسی
        .replace(/ك/g, 'ک')      // ک عربی → فارسی
        .replace(/\s+/g, ' ')     // فاصله‌های اضافی
        .replace(/\n+/g, ' ')     // خطوط جدید
        .trim();
    }

    // این کار شباهت‌یابی فارسی را بهتر می‌کند
  1. 1Hybrid Search (جستجوی ترکیبی):
code
// ترکیب جستجوی معنایی + کلمه کلیدی

    سوال کاربر
      → شاخه 1: Embedding → Vector Search (معنایی)
      → شاخه 2: MySQL LIKE Search (کلمه‌ای)
      → Merge (ترکیب نتایج)
      → Code (Rank Fusion: امتیاز ترکیبی)
      → Top-K نتایج نهایی

    // Hybrid Search دقت بیشتری از هر کدام تنها دارد
  1. 1مدیریت به‌روزرسانی اسناد:
code
// وقتی سندی تغییر کرد:
    1. بردارهای قدیمی حذف شوند (Delete by metadata)
    2. سند جدید chunk شود
    3. بردارهای جدید ذخیره شوند

    Schedule (هر شب)
      → MySQL (اسناد تغییریافته)
      → Pinecone (Delete by source)
      → Text Splitter → Embedding → Pinecone (Insert)

    // از document_id در metadata استفاده کنید

رفع مشکلات

خطاهای رایج

1. خطای "Dimension mismatch"

علت: ابعاد بردار Embedding با Vector Store سازگار نیست

راه‌حل

  • ابعاد مدل و Vector Store باید یکسان باشند:
code
text-embedding-3-small: 1536 بُعد
  text-embedding-3-large: 3072 بُعد
  text-embedding-ada-002: 1536 بُعد
  Google text-embedding-004: 768 بُعد
  nomic-embed-text (Ollama): 768 بُعد
  • هنگام ساخت Index در Vector Store ابعاد صحیح تنظیم کنید
  • بعد از ساخت Index مدل Embedding تغییر ندهید!

2. خطای "Token limit exceeded"

علت: متن ورودی بلندتر از حد مجاز

راه‌حل

  • محدودیت توکن هر مدل:
code
OpenAI 3-small/large: 8,191 توکن
  Google embedding-004: 2,048 توکن
  Cohere multilingual: 512 توکن
  • از Text Splitter قبل از Embedding استفاده کنید
  • هر کلمه فارسی تقریباً 3-5 توکن مصرف می‌کند
  • متون بلند را به چانک‌های 500-1000 کلمه‌ای تقسیم کنید

3. خطای "Rate limit reached" (429)

علت: تعداد درخواست بیش از حد مجاز

راه‌حل

  • بین درخواست‌ها Wait Node اضافه کنید
  • از Batch Embedding استفاده کنید (چند متن در یک درخواست)
  • OpenAI: حداکثر 3,000 RPM در Tier 1
  • درخواست‌های Batch به جای تکی ارسال کنید

4. خطای "Invalid API key" (401)

علت: API Key نامعتبر

راه‌حل

  • OpenAI: کلید با sk- شروع شود
  • Cohere: کلید از Dashboard > API Keys
  • Google: کلید از AI Studio
  • Credential را Test کنید

5. نتایج جستجو نامربوط

علت: Embedding یا chunking نامناسب

راه‌حل

  • اندازه chunk را تنظیم کنید (500-1000 کلمه بهینه)
  • overlap بین چانک‌ها اضافه کنید (50-100 کلمه)
  • مدل چندزبانه برای فارسی استفاده کنید
  • metadata اضافه کنید برای فیلتر بهتر
  • topK افزایش دهید (5-10)
  • scoreThreshold تنظیم کنید (0.7-0.85)

6. خطای اتصال Ollama

علت: سرور Ollama در دسترس نیست

راه‌حل

  • مطمئن شوید Ollama در حال اجرا است: ollama serve
  • Base URL: http://localhost:11434
  • مدل دانلود شده باشد: ollama list
  • فایروال بررسی کنید
  • در Docker: از host.docker.internal بجای localhost

7. خطای "Model not found"

علت: نام مدل اشتباه

راه‌حل

  • نام‌های صحیح:
code
OpenAI: text-embedding-3-small, text-embedding-3-large
  Google: text-embedding-004
  Cohere: embed-multilingual-v3.0
  Ollama: nomic-embed-text, mxbai-embed-large
  • حروف بزرگ/کوچک دقت کنید

8. سرعت پایین Embedding

علت: پردازش تکی بجای دسته‌ای

راه‌حل

  • Batch Embedding: چند متن در یک درخواست
  • SplitInBatches: دسته‌های 50-100تایی
  • Ollama: از GPU استفاده کنید
  • Cache: بردارهای تکراری ذخیره کنید
  • موازی‌سازی: چند Embedding Node همزمان

9. مصرف بالای حافظه

علت: بردارهای زیاد در حافظه

راه‌حل

  • از Vector Store خارجی استفاده کنید (Pinecone، Supabase)
  • In-Memory Vector Store فقط برای تست
  • Batch Size کاهش دهید
  • اسناد غیرضروری حذف کنید
اشتراک‌گذاری:

آیا این مستندات مفید بود؟