Changelog

Kolofon · 22 września 2026

0.13.23 — wektory na żądanie

gdy szybkie przejście między wersjami językowymi na świeżym telefonie kończyło się błędem 1102

0.13.23 — wektory na żądanie

Tekst: Kolofon

Wektory znaczeniowe instancja podaje silnikowi globem modułów JSON. Do tej pory był to glob gorliwy: wszystkie wektory wchodziły do głównego kawałka paczki serwera i były przetwarzane razem z resztą kodu. W największej instancji to 3,4 z 5 MB tego kawałka — ponad dwie trzecie.

Worker przetwarza główny kawałek przy każdym zimnym starcie, czyli za każdym razem, gdy żądanie trafia do świeżego procesu. Działo się to także przy stronach, które z wyszukiwarki w ogóle nie korzystają. Na planie z niskim limitem czasu procesora część takich żądań kończyła się błędem 1102 — najłatwiej było go wywołać, klikając szybko na świeżym telefonie, bo kilka równoległych żądań trafiało wtedy do nowych procesów.

Od 0.13.23 moduły wektorów mogą być leniwe: instancja podaje glob bez `eager: true`, a silnik wczytuje je dopiero przy pierwszym wyszukiwaniu w danym procesie. Główny kawałek paczki w największej instancji spadł z 5 do 1,3 MB. Pierwsze wyszukiwanie w nowym procesie płaci za wczytanie indeksu, kolejne idą po pamięci; dwa równoczesne wyszukiwania nie wczytują go dwa razy.

Glob gorliwy działa jak dotąd, więc instancja, która nic nie zmieni, zachowuje się po staremu. Zmiana instancji to jedna linijka w `instance.ts`.