Wyszukiwanie w witrynie

Redis 8.4 wprowadza hybrydowe wyszukiwanie pełnotekstowe i wektorowe


Redis 8.4, pamięciowy magazyn danych, dodaje hybrydowe wyszukiwanie pełnotekstowe i wektorowe, zapewniając ponad 30% wyższą wydajność dla obciążeń związanych z buforowaniem i wyszukiwaniem.

Ponad trzy miesiące po poprzednim wydaniu 8.2, Redis, rozproszony magazyn danych klucz-wartość w pamięci, oficjalnie wprowadził wersję 8.4, rozwijając fundamenty ustanowione przez Redis 8.0.

Główną nowością jest nowa komenda FT.HYBRID, która łączy wyszukiwanie pełnotekstowe i wektorowe w jednej ścieżce zapytania. Poprzednie podejścia wymagały wieloetapowej logiki, ręcznego łączenia wyników lub zewnętrznych procesów, co zwiększało opóźnienia i zmniejszało precyzję.

Umożliwia to aplikacjom wyrażanie intencji w bardziej naturalny sposób, łączenie dopasowań semantycznych i dosłownych, nadawanie priorytetu niedawnemu kontekstowi oraz uwzględnianie filtrów GEO i GEOSHAPE.

Pod względem wydajności, według deweloperów, Redis 8.4 zapewnia o ponad 30% wyższą przepustowość w typowych scenariuszach cachingowych — 90% operacji GET i 10% SET — w porównaniu z Redis 8.2. Obciążenia związane z wyszukiwaniem również odnotowują wzrosty dzięki wprowadzeniu wielowątkowego przetwarzania I/O dla zapytań rozproszonych.

Gdy duże zestawy wyników są rozproszone na wiele shardów, odpowiedzi są teraz przetwarzane równocześnie, zamiast przechodzić przez pojedynczy wątek. Korzystają na tym również operacje agregujące, co skraca czas odpowiedzi i pozwala wątkom roboczym pozostać wolnymi do wykonywania logiki wyszukiwania i punktacji.

Wpływ równoległego I/O na wydajność zapytań RediSearch w Redis 8.4.

Jeśli chodzi o efektywność pamięci, Redis 8.4 dodatkowo zmniejsza zużycie pamięci przez JSON, optymalizując przechowywanie krótkich ciągów znaków i jednorodnych tablic liczb. Krótkie ciągi do siedmiu bajtów są teraz wstawiane bezpośrednio, co redukuje zużycie pamięci o około 37% w typowych przypadkach.

Duże tablice numeryczne zyskują jeszcze więcej. Przechowując typ elementu raz na tablicę i wybierając najbardziej kompaktową bezpieczną reprezentację — int, uint, BF16, FP16, FP32 lub FP64 — silnik może zmniejszyć zużycie pamięci o 50% do 92%, w zależności od zakresu wartości.

Co więcej, wydanie to dodaje również nowe operacje atomowe, które wcześniej wymagały skryptów Lua. Klucze typu string teraz obsługują porównanie i ustawienie oraz porównanie i usunięcie bezpośrednio poprzez nowe opcje SET (IFEQ, IFNE, IFDEQ, IFDNE) oraz nowe polecenie XDELEX. Aktualizacje wielu kluczy stają się również łatwiejsze dzięki MSETEX, które może ustawić wiele kluczy i warunkowo zarządzać ich czasem wygaśnięcia w jednej operacji.

Ostatnie, ale nie mniej ważne, wdrożenia klastrów zyskują duże usprawnienia dzięki Atomic Slot Migration. Wcześniejsze wersje Redis migrowały sloty klucz po kluczu, co skutkowało przekierowaniami, przerwanymi potokami, niespójnymi operacjami na wielu kluczach oraz potencjalną utratą danych w sytuacjach awaryjnych.

Migracja slotu atomowego zamiast tego przenosi dane całego slotu oraz odbywające się w nim zmiany do docelowego węzła przed wykonaniem jednorazowego przekazania własności. Klienci nadal wchodzą w interakcję z węzłem źródłowym podczas kopiowania, co pomaga unikać błędów w trakcie migracji i zmniejsza ryzyko operacyjne.

Aby uzyskać więcej informacji, zobacz ogłoszenie. Redis 8.4 jest teraz dostępny przez Docker Hub (obrazy Alpine lub Debian), Snap, Homebrew, RPM i APT.

Źródło zdjęcia: Redis