அதிகரிப்புச் செயலாக்கம்: வேகமான பைப்லைன் புதுப்பிப்புகள்

இந்த கட்டுரை, SEO pipeline எப்படி அதிகரிப்பு செயலாக்கத்தைப் பயன்படுத்தி மணிநேரங்களுக்குப் பதிலாக வினாடிகளில் இயங்குகிறது என்பதை விளக்குகிறது.

சிக்கல்: முழு மறுசெயலாக்கம் மெதுவானது

முழு பைப்லைனையும் புதிதாக இயக்க மணிநேரங்கள் ஆகும்:

  • படி 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%+

நன்மைகள்:

  • ✅ வேகமான தினசரி புதுப்பிப்புகள் (மணிநேரங்களுக்குப் பதிலாக நிமிடங்கள்)

  • ✅ தானியங்கி மறுசெல்லுபடியாக்கம் (ஸ்கிரிப்ட் மாற்றங்கள் மீண்டும் இயக்கத்தைத் தூண்டும்)

  • ✅ செயலிழப்பு மீட்பு (செக்பாயிண்டிலிருந்து தொடரவும்)

  • ✅ நினைவக திறன் (தொகுதி செயலாக்கம்)

இந்த உத்தி, மாறாத தரவுகளில் கணக்கீட்டை வீணாக்காமல் தினசரி பைப்லைன் இயக்கங்களை இயலச் செய்கிறது.


← ஆவண அட்டவணைக்குத் திரும்பு