ഇൻക്രിമെന്റൽ പ്രോസസ്സിംഗ്: ഫാസ്റ്റ് പൈപ്പ്‌ലൈൻ അപ്‌ഡേറ്റുകൾ

ഈ ലേഖനം SEO പൈപ്പ്‌ലൈൻ എങ്ങനെ ഇൻക്രിമെന്റൽ പ്രോസസ്സിംഗ് ഉപയോഗിച്ച് മണിക്കൂറുകൾക്ക് പകരം സെക്കൻഡുകൾക്കുള്ളിൽ പ്രവർത്തിക്കുന്നു എന്ന് വിശദീകരിക്കുന്നു.

പ്രശ്നം: പൂർണ്ണമായ പുനർപ്രോസസ്സിംഗ് സാവധാനമാണ്

മുഴുവൻ പൈപ്പ്‌ലൈനും ആദ്യം മുതൽ പ്രവർത്തിപ്പിക്കാൻ മണിക്കൂറുകൾ വേണ്ടിവരുന്നു:

  • ഘട്ടം 0 (സോഴ്സ് എംബെഡിംഗ്): 15 മിനിറ്റ് (65,000 ഉൽപ്പന്നങ്ങൾ)

  • ഘട്ടം 1 (ക്വെറി ഫെച്ചിംഗ്): 10 മിനിറ്റ് (API കോളുകൾ)

  • ഘട്ടം 2 (ക്വെറി ക്ലസ്റ്ററിംഗ്): 30 മിനിറ്റ് (65K×65K സമാനത)

  • ഘട്ടം 3 (ഫ്രെയ്സ് മാപ്പിംഗുകൾ): 20 മിനിറ്റ് (എംബെഡിംഗ് + മാച്ചിംഗ്)

  • ഘട്ടം 4 (ഉൽപ്പന്ന മാച്ചിംഗ്): 45 മിനിറ്റ് (ക്വെറികൾ × ഉൽപ്പന്നങ്ങൾ)

  • ഘട്ടം 5 (ബന്ധപ്പെട്ട തിരയലുകൾ): 25 മിനിറ്റ് (ക്വെറി × ക്വെറി സമാനത)

ആകെ: ~2.5 മണിക്കൂർ പൂർണ്ണ പൈപ്പ്‌ലൈനിന്

പ്രശ്നം: ദൈനംദിന അപ്‌ഡേറ്റുകൾ മാറ്റമില്ലാത്ത ഡാറ്റ വീണ്ടും കംപ്യൂട്ട് ചെയ്ത് 2.5 മണിക്കൂർ പാഴാക്കും.

പരിഹാരം: മൂന്ന്-ലെയർ ഇൻക്രിമെന്റൽ തന്ത്രം

ആവശ്യമില്ലാത്ത ജോലി ഒഴിവാക്കാൻ ഞങ്ങൾ മൂന്ന് സാങ്കേതിക വിദ്യകൾ ഉപയോഗിക്കുന്നു:

1. സ്റ്റെപ്പ് സ്കിപ്പിംഗ് (പരുക്കൻ-ഗ്രാനുലാരിറ്റി)

ഔട്ട്‌പുട്ട് പുതിയതും സ്ക്രിപ്റ്റ് മാറ്റമില്ലാത്തതുമാണെങ്കിൽ മുഴുവൻ ഘട്ടങ്ങളും ഒഴിവാക്കുക.

2. ഇൻക്രിമെന്റൽ എംബെഡിംഗ് (മീഡിയം-ഗ്രാനുലാരിറ്റി)

പുതിയ/മാറിയ ഇനങ്ങൾ മാത്രം എംബെഡ് ചെയ്യുക, കാഷെ ചെയ്ത എംബെഡിംഗുകൾ വീണ്ടും ഉപയോഗിക്കുക.

3. ചെക്ക്‌പോയിന്റിംഗ് (നല്ല-ഗ്രാനുലാരിറ്റി)

ദീർഘമായ പ്രവർത്തനങ്ങളിൽ പുരോഗതി സംരക്ഷിക്കുക, പരാജയപ്പെട്ടാൽ ചെക്ക്‌പോയിന്റിൽ നിന്ന് പുനരാരംഭിക്കുക.

സ്റ്റെപ്പ് സ്കിപ്പിംഗ് തന്ത്രം

ഇത് എങ്ങനെ പ്രവർത്തിക്കുന്നു

ഓരോ ഘട്ടത്തിനും മുമ്പ് പരിശോധിക്കുക:

ഔട്ട്‌പുട്ട് നിലവിലുണ്ടോ? ഇല്ലെങ്കിൽ, ഘട്ടം പ്രവർത്തിപ്പിക്കുക.

ഔട്ട്‌പുട്ടിന്റെ പഴക്കം: 7 ദിവസത്തിലധികം പഴക്കമുണ്ടെങ്കിൽ, ഘട്ടം പ്രവർത്തിപ്പിക്കുക.

സ്ക്രിപ്റ്റ് മാറിയോ? ഔട്ട്‌പുട്ട് സൃഷ്ടിച്ചതിന് ശേഷം സ്ക്രിപ്റ്റ് മാറ്റിയിട്ടുണ്ടെങ്കിൽ, ഘട്ടം പ്രവർത്തിപ്പിക്കുക.

എല്ലാ പരിശോധനകളും വിജയിച്ചോ? ഘട്ടം ഒഴിവാക്കുക.

നടപ്പിലാക്കൽ

def should_skip_step(output_path, script_path, days=7):
    # Check if output exists
    if not os.path.exists(output_path):
# ... (implementation details omitted)

ഉപയോഗം

ഓരോ സ്ക്രിപ്റ്റും സ്റ്റാർട്ടപ്പിൽ പരിശോധിക്കുന്നു:

from seo_common import should_skip_step

if should_skip_step(SEO_SOURCE_EMBEDDINGS_PATH, __file__):
    print("✓ Skipping: Output is fresh and script unchanged")
    return

നേട്ടങ്ങൾ

വേഗതയേറിയ ദൈനംദിന റൺ: ഡാറ്റ മാറ്റമില്ലാത്തതാണെങ്കിൽ മിക്ക ഘട്ടങ്ങളും ഒഴിവാക്കുന്നു

ഓട്ടോമാറ്റിക് അസാധുവാക്കൽ: സ്ക്രിപ്റ്റ് മാറ്റങ്ങൾ വീണ്ടും റൺ ചെയ്യാൻ പ്രേരിപ്പിക്കുന്നു

ക്രമീകരിക്കാവുന്ന പുതുമ: ഓരോ ഘട്ടത്തിനും days പാരാമീറ്റർ ക്രമീകരിക്കുക

ഇൻക്രിമെന്റൽ എംബെഡിംഗ് തന്ത്രം

ഇത് എങ്ങനെ പ്രവർത്തിക്കുന്നു

ഇനങ്ങൾ (ഉൽപ്പന്നങ്ങൾ, ക്വെറികൾ, ഫ്രെയ്സുകൾ) എംബെഡ് ചെയ്യുമ്പോൾ:

കാഷെ ലോഡ് ചെയ്യുക: മുമ്പ് എംബെഡ് ചെയ്ത ഇനങ്ങളും അവയുടെ കീകളും വായിക്കുക

കീകൾ താരതമ്യം ചെയ്യുക: പുതിയ, മാറിയ, ഇല്ലാതാക്കിയ ഇനങ്ങൾ തിരിച്ചറിയുക

പുതിയത് മാത്രം എംബെഡ് ചെയ്യുക: കാഷെയിൽ ഇല്ലാത്ത ഇനങ്ങൾ മാത്രം എംബെഡ് ചെയ്യുക

മെർജ് ചെയ്യുക: കാഷെ ചെയ്ത എംബെഡിംഗുകളെ പുതിയ എംബെഡിംഗുകളുമായി ശരിയായ ക്രമത്തിൽ സംയോജിപ്പിക്കുക

സേവ് ചെയ്യുക: അപ്ഡേറ്റ് ചെയ്ത കാഷെ എഴുതുക

നടപ്പിലാക്കൽ

incremental_embed_with_keys ഫംഗ്ഷൻ ഇത് കൈകാര്യം ചെയ്യുന്നു:

def incremental_embed_with_keys(
    items,           # Current items to embed
    keys,            # Unique keys for items
# ... (implementation details omitted)

കാഷെ ഹിറ്റ് നിരക്കുകൾ

ആദ്യ റണ്ണിന് ശേഷമുള്ള സാധാരണ കാഷെ ഹിറ്റ് നിരക്കുകൾ:

സോഴ്സ് ഡാറ്റ (ഉൽപ്പന്നങ്ങൾ, ഭാഗങ്ങൾ, ലേഖനങ്ങൾ):

  • ആദ്യ റൺ: 0% (65,000 ഇനങ്ങൾ എംബെഡ് ചെയ്യുക)

  • ദൈനംദിന റൺ: 99.5% (ഏകദേശം 300 പുതിയ/മാറിയ ഇനങ്ങൾ മാത്രം)

ക്വെറികൾ (GSC, Ads, ലൈവ് എന്നിവയിൽ നിന്ന്):

  • ആദ്യ റൺ: 0% (65,000 ക്വെറികൾ എംബെഡ് ചെയ്യുക)

  • ദൈനംദിന റൺ: 99.2% (ഏകദേശം 500 പുതിയ ക്വെറികൾ മാത്രം)

ഫ്രെയ്സ് മാപ്പിംഗുകൾ:

  • ആദ്യ റൺ: 0% (5,000 ഫ്രെയ്സുകൾ എംബെഡ് ചെയ്യുക)

  • ദൈനംദിന റൺ: 99.8% (ഏകദേശം 10 പുതിയ ഫ്രെയ്സുകൾ മാത്രം)

പ്രകടന ആഘാതം

ആദ്യ റൺ (തണുത്ത കാഷെ):

  • സോഴ്സ് എംബെഡിംഗ്: 15 മിനിറ്റ് (65,000 ഇനങ്ങൾ)

  • ക്വെറി എംബെഡിംഗ്: 10 മിനിറ്റ് (65,000 ക്വെറികൾ)

  • ഫ്രെയ്സ് എംബെഡിംഗ്: 2 മിനിറ്റ് (5,000 ഫ്രെയ്സുകൾ)

ദൈനംദിന റൺ (ചൂടുള്ള കാഷെ):

  • സോഴ്സ് എംബെഡിംഗ്: 10 സെക്കൻഡ് (300 ഇനങ്ങൾ, 99.5% ഹിറ്റ് നിരക്ക്)

  • ക്വെറി എംബെഡിംഗ്: 5 സെക്കൻഡ് (500 ക്വെറികൾ, 99.2% ഹിറ്റ് നിരക്ക്)

  • ഫ്രെയ്സ് എംബെഡിംഗ്: 1 സെക്കൻഡ് (10 ഫ്രെയ്സുകൾ, 99.8% ഹിറ്റ് നിരക്ക്)

സ്പീഡപ്പ്: 90-180× വേഗത്തിൽ

ചെക്ക്‌പോയിന്റിംഗ് തന്ത്രം

ഇത് എങ്ങനെ പ്രവർത്തിക്കുന്നു

ദീർഘനേരം പ്രവർത്തിക്കുന്ന ഓപ്പറേഷനുകൾക്ക് (65,000 ഇനങ്ങൾ എംബെഡ് ചെയ്യൽ):

ബാച്ച് പ്രോസസ്സിംഗ്: ഇനങ്ങൾ ബാച്ചുകളായി പ്രോസസ്സ് ചെയ്യുക (ഉദാ., 1,000 ഇനങ്ങൾ)

ചെക്ക്‌പോയിന്റ് സംരക്ഷിക്കുക: ഓരോ ബാച്ചിന് ശേഷം, ശേഖരിച്ച ഫലങ്ങൾ സംരക്ഷിക്കുക

പരാജയത്തിൽ പുനരാരംഭിക്കുക: പ്രോസസ്സ് തകർന്നാൽ, അവസാന ചെക്ക്‌പോയിന്റിൽ നിന്ന് പുനരാരംഭിക്കുക

അന്തിമ സംരക്ഷണം: എല്ലാ ബാച്ചുകൾക്ക് ശേഷം, പൂർണ്ണ ഫലങ്ങൾ സംരക്ഷിക്കുക

നടപ്പിലാക്കൽ

ചെക്ക്‌പോയിന്റിംഗ് incremental_embed_with_keys-ൽ നിർമ്മിച്ചിരിക്കുന്നു:

checkpoint_every = 1000  # Save every 1,000 items

embeddings_list = []
# ... (implementation details omitted)

നേട്ടങ്ങൾ

ക്രാഷ് വീണ്ടെടുക്കൽ: തുടക്കം മുതൽ ആരംഭിക്കുന്നതിനുപകരം അവസാന ചെക്ക്‌പോയിന്റിൽ നിന്ന് പുനരാരംഭിക്കുക

പുരോഗതി ദൃശ്യത: ഓരോ 1,000 ഇനങ്ങളിലും പുരോഗതി കാണുക

മെമ്മറി കാര്യക്ഷമത: ബാച്ചുകളായി പ്രോസസ്സ് ചെയ്യുക, എല്ലാം ഒരേസമയം ലോഡ് ചെയ്യരുത്

പൈപ്പ്‌ലൈനിലുടനീളം സംയോജനം

ഇൻക്രിമെന്റൽ പ്രോസസ്സിംഗ് ഒന്നിലധികം ഘട്ടങ്ങളിൽ ഉപയോഗിക്കുന്നു:

ഘട്ടം 0: സോഴ്സ് ഡാറ്റ എംബെഡിംഗ്

ഇൻക്രിമെന്റൽ: പുതിയ/മാറിയ ഉൽപ്പന്നങ്ങൾ, ഭാഗങ്ങൾ, ലേഖനങ്ങൾ മാത്രം എംബെഡ് ചെയ്യുക

ചെക്ക്‌പോയിന്റിംഗ്: ഓരോ 1,000 ഇനങ്ങളിലും സംരക്ഷിക്കുക

സ്കിപ്പ് ലോജിക്ക്: ഔട്ട്‌പുട്ട് 7 ദിവസത്തിൽ താഴെ പഴക്കവും സ്ക്രിപ്റ്റ് മാറ്റമില്ലാത്തതുമാണെങ്കിൽ ഒഴിവാക്കുക

കാണുക: സോഴ്സ് ഡാറ്റ എംബെഡിംഗ്

ഘട്ടം 1: ക്വെറി ഫെച്ചിംഗ്

ഇൻക്രിമെന്റൽ: API കോളുകൾ പുതിയ ഡാറ്റ മാത്രം (അവസാന റണ്ണിന് ശേഷമുള്ളത്) ഫെച്ച് ചെയ്യുന്നു

സ്കിപ്പ് ലോജിക്ക്: ഔട്ട്‌പുട്ട് 1 ദിവസത്തിൽ താഴെ പഴക്കമുള്ളതാണെങ്കിൽ ഒഴിവാക്കുക

കാണുക: ക്വെറി ഫെച്ചിംഗ്

ഘട്ടം 3b: ക്വെറി എംബെഡിംഗ്

ഇൻക്രിമെന്റൽ: പുതിയ ക്വെറികൾ മാത്രം എംബെഡ് ചെയ്യുക

ചെക്ക്‌പോയിന്റിംഗ്: ഓരോ 1,000 ക്വെറികളിലും സംരക്ഷിക്കുക

സ്കിപ്പ് ലോജിക്ക്: ഔട്ട്‌പുട്ട് 7 ദിവസത്തിൽ താഴെ പഴക്കവും സ്ക്രിപ്റ്റ് മാറ്റമില്ലാത്തതുമാണെങ്കിൽ ഒഴിവാക്കുക

കാണുക: ക്വെറി എംബെഡിംഗ്

ഘട്ടം 4: ഫ്രെയ്സ് മാപ്പിംഗ് വിപുലീകരണം

ഇൻക്രിമെന്റൽ: പുതിയ ഫ്രെയ്സുകൾ മാത്രം എംബെഡ് ചെയ്യുക

ചെക്ക്‌പോയിന്റിംഗ്: ഓരോ 1,000 ഫ്രെയ്സുകളിലും സംരക്ഷിക്കുക

സ്കിപ്പ് ലോജിക്ക്: ഔട്ട്‌പുട്ട് 7 ദിവസത്തിൽ താഴെ പഴക്കവും സ്ക്രിപ്റ്റ് മാറ്റമില്ലാത്തതുമാണെങ്കിൽ ഒഴിവാക്കുക

കാണുക: ഫ്രെയ്സ്-ടു-ഫിൽട്ടർ മാപ്പിംഗുകൾ

ഘട്ടം 6: ഉൽപ്പന്ന മാച്ചിംഗ്

ഇൻക്രിമെന്റൽ: പുതിയ ക്വെറികൾ മാത്രം പൊരുത്തപ്പെടുത്തുക

സ്കിപ്പ് ലോജിക്ക്: ഔട്ട്‌പുട്ട് 7 ദിവസത്തിൽ താഴെ പഴക്കവും സ്ക്രിപ്റ്റ് മാറ്റമില്ലാത്തതുമാണെങ്കിൽ ഒഴിവാക്കുക

കാണുക: ഉൽപ്പന്ന മാച്ചിംഗ്

കോൺഫിഗറേഷൻ

ഇൻക്രിമെന്റൽ പ്രോസസ്സിംഗ് ഓരോ ഘട്ടത്തിനും കോൺഫിഗർ ചെയ്തിരിക്കുന്നു:

പുതുമ പരിധി

# Skip if output < 7 days old (default)
should_skip_step(output_path, script_path, days=7)

# Skip if output < 1 day old (for frequently changing data)
should_skip_step(output_path, script_path, days=1)

ചെക്ക്‌പോയിന്റ് ആവൃത്തി

# Save every 1,000 items (default)
incremental_embed_with_keys(..., checkpoint_every=1000)

# Save every 5,000 items (for faster processing, less safety)
incremental_embed_with_keys(..., checkpoint_every=5000)

ബാച്ച് വലുപ്പം

# Embed 32 items per batch (default, balanced)
incremental_embed_with_keys(..., batch_size=32)

# Embed 64 items per batch (faster on GPU, more memory)
incremental_embed_with_keys(..., batch_size=64)

മോണിറ്ററിംഗും ഡീബഗ്ഗിംഗും

കാഷെ സ്ഥിതിവിവരക്കണക്കുകൾ

ഓരോ ഘട്ടവും കാഷെ സ്ഥിതിവിവരക്കണക്കുകൾ പ്രിന്റ് ചെയ്യുന്നു:

✓ Found existing cache, checking for changes...
  Existing: 65,000 items
  Current:  65,300 items
  Reusing: 64,800 embeddings
  New:     500 items to embed

സ്കിപ്പ് സന്ദേശങ്ങൾ

ഘട്ടങ്ങൾ ഒഴിവാക്കുമ്പോൾ:

✓ Skipping 0_embed_source_data.py: Output is fresh and script unchanged.

ചെക്ക്‌പോയിന്റ് സന്ദേശങ്ങൾ

ദീർഘമായ പ്രവർത്തനങ്ങളിൽ:

Embedding 65,000 items (checkpointing every 1,000)...
  Batch 0-1000...
    ✓ Checkpoint saved (1,000 total)
  Batch 1000-2000...
    ✓ Checkpoint saved (2,000 total)
  ...

റഫറൻസുകൾ

സാങ്കേതിക ആശയങ്ങൾ

ബന്ധപ്പെട്ട ലേഖനങ്ങൾ

സംഗ്രഹം

ഇൻക്രിമെന്റൽ പ്രോസസ്സിംഗ് പൈപ്പ്‌ലൈനിനെ 90-180× വേഗത്തിലാക്കുന്നു:

മൂന്ന്-ലെയർ തന്ത്രം:

  • ✅ സ്റ്റെപ്പ് സ്കിപ്പിംഗ് (ഔട്ട്‌പുട്ട് പുതിയതാണെങ്കിൽ മുഴുവൻ ഘട്ടങ്ങളും ഒഴിവാക്കുക)

  • ✅ ഇൻക്രിമെന്റൽ എംബെഡിംഗ് (പുതിയ/മാറിയ ഇനങ്ങൾ മാത്രം എംബെഡ് ചെയ്യുക)

  • ✅ ചെക്ക്‌പോയിന്റിംഗ് (പുരോഗതി സംരക്ഷിക്കുക, പരാജയത്തിൽ പുനരാരംഭിക്കുക)

പ്രകടനം:

  • ✅ ആദ്യ റൺ: ~2.5 മണിക്കൂർ (പൂർണ്ണ പൈപ്പ്‌ലൈൻ)

  • ✅ ദൈനംദിന റൺ: ~5 മിനിറ്റ് (ഇൻക്രിമെന്റൽ അപ്‌ഡേറ്റുകൾ)

  • ✅ കാഷെ ഹിറ്റ് നിരക്കുകൾ: ആദ്യ റണ്ണിന് ശേഷം 99%+

നേട്ടങ്ങൾ:

  • ✅ വേഗതയേറിയ ദൈനംദിന അപ്‌ഡേറ്റുകൾ (മണിക്കൂറുകൾക്ക് പകരം മിനിറ്റുകൾ)

  • ✅ ഓട്ടോമാറ്റിക് അസാധുവാക്കൽ (സ്ക്രിപ്റ്റ് മാറ്റങ്ങൾ വീണ്ടും റൺ ചെയ്യാൻ പ്രേരിപ്പിക്കുന്നു)

  • ✅ ക്രാഷ് വീണ്ടെടുക്കൽ (ചെക്ക്‌പോയിന്റിൽ നിന്ന് പുനരാരംഭിക്കുക)

  • ✅ മെമ്മറി കാര്യക്ഷമത (ബാച്ച് പ്രോസസ്സിംഗ്)

മാറ്റമില്ലാത്ത ഡാറ്റയിൽ കംപ്യൂട്ട് പാഴാക്കാതെ ദൈനംദിന പൈപ്പ്‌ലൈൻ റണ്ണുകൾ ഈ തന്ത്രം സാധ്യമാക്കുന്നു.


← ഡോക്യുമെന്റേഷൻ സൂചികയിലേക്ക് മടങ്ങുക