இன்க்ரிமென்டல் பிராசசிங்: வேகமான பைப்லைன் புதுப்பிப்புகள்

இந்த கட்டுரை 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)

கண்காணிப்பு மற்றும் பிழைத்திருத்தம்

கேச் புள்ளிவிவரங்கள்

ஒவ்வொரு படியும் கேச் புள்ளிவிவர