ਇੰਕਰੀਮੈਂਟਲ ਪ੍ਰੋਸੈਸਿੰਗ: ਤੇਜ਼ ਪਾਈਪਲਾਈਨ ਅੱਪਡੇਟਾਂ

ਇਹ ਲੇਖ ਦੱਸਦਾ ਹੈ ਕਿ ਕਿਵੇਂ 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 ਕਾਲਾਂ ਕੇਵਲ ਨਵਾਂ ਡੇਟਾ (ਆਖਰੀ ਰਨ ਤੋਂ ਬਾਅਦ) ਫੈੱਚ ਕਰਦੀਆਂ ਹਨ

ਸਕਿਪ ਲਾਜਿਕ: ਜੇਕਰ ਆਉ