Baza wektorowa — po co i kiedy

Rząd malowanych szufladek aptecznych

Baza wektorowa jest potrzebna dopiero od pewnej skali. Poniżej niej bywa zbędną złożonością.

Co robi

Przechowuje osadzenia i szybko znajduje najbliższe do zapytania. Bez niej porównanie ze wszystkimi fragmentami trwa zbyt długo przy dużych zbiorach.

Sztuczka polega na tym, że przy dużych zbiorach nie porównuje wszystkiego. Buduje strukturę, która pozwala odrzucić większość fragmentów bez sprawdzania ich po kolei. Cena jest taka, że wynik bywa przybliżony — najbliższy fragment może wypaść z listy. Przy wyszukiwaniu dla ludzi to zwykle nie ma znaczenia, przy porównywaniu kartotek albo wykrywaniu duplikatów potrafi mieć.

Kiedy nie jest potrzebna

Przy kilku tysiącach fragmentów porównanie wszystkiego po kolei zajmuje ułamek sekundy. Zwykła baza danych z rozszerzeniem w zupełności wystarcza.

Warto policzyć fragmenty, a nie dokumenty. Kilkaset instrukcji pociętych na sekcje daje zbiór, który mieści się w tej kategorii bez trudu. Firmowa baza wiedzy rzadko z niej wyrasta.

Kiedy jest

Od setek tysięcy fragmentów wzwyż, przy wielu zapytaniach jednocześnie albo gdy indeks musi być stale aktualizowany.

Trzeci warunek bywa najważniejszy. Zbiór, który da się przeliczyć raz i zostawić, obsłuży niemal wszystko. Zbiór zmieniany co godzinę wymaga rozwiązania przystosowanego do dopisywania i usuwania w locie.

Dochodzi sytuacja, w której wyszukiwanie zasila coś działającego bez człowieka: dopasowywanie zgłoszeń, podpowiadanie odpowiedzi, porównywanie kartotek. Zapytań jest wtedy wielokrotnie więcej niż użytkowników i czas odpowiedzi liczy się zupełnie inaczej.

Na co patrzeć przy wyborze

  • możliwość filtrowania po dodatkowych polach,
  • obsługę uprawnień,
  • aktualizację bez przebudowy indeksu,
  • możliwość uruchomienia lokalnie,
  • koszt przy docelowej wielkości.

Ostatni punkt liczy się przy wielkości docelowej, nie dzisiejszej. Rozwiązanie tanie przy kilkudziesięciu tysiącach fragmentów potrafi zmienić kategorię kosztową o rząd wyżej, a przenosiny są wtedy osobnym projektem.

Filtrowanie

Najczęściej pomijane kryterium. Bez możliwości zawężenia po dacie, dziale czy uprawnieniach baza szybko przestaje wystarczać.

Filtr zawężający zbiór przed wyszukiwaniem załatwia dwie sprawy naraz: kontrolę dostępu i wydajność. Rozwiązanie, w którym filtrowanie działa dopiero na gotowej liście wyników, sprawdza się tylko przy zbiorach małych — a te akurat bazy wektorowej nie potrzebują.

Co trzeba przygotować

Poza samymi osadzeniami: pola opisowe przy każdym fragmencie, wskazanie źródła i wersji dokumentu oraz sposób jednoznacznego powiązania fragmentu z plikiem, z którego pochodzi. Bez tego ostatniego usunięcie dokumentu ze źródła nie da się przełożyć na usunięcie go z indeksu.

Warto od razu przewidzieć pole na oznaczenie modelu użytego do przeliczenia. Bez niego, po zmianie modelu, nie da się odróżnić fragmentów już przeliczonych od czekających w kolejce.

Zaczynać prosto

Rozszerzenie do bazy, której firma już używa, jest zwykle właściwym początkiem. Osobne rozwiązanie dokłada się wtedy, gdy tamto przestanie wystarczać.

Przemawia za tym coś więcej niż koszt. Kopie zapasowe, uprawnienia, monitorowanie i wiedza administratora już istnieją. Osobna baza to osobny element do utrzymania i osobne miejsce, w którym coś przestanie działać w piątek po południu. Kiedy naprawdę przestaje wystarczać, pokazuje pomiar opisany w tekście o wydajności przy dużych zbiorach.