Ulepsz wyszukiwanie w witrynie: odpowiedzi kontekstowe z wykorzystaniem generatywnej AI

Generatywna AI to sztuczna inteligencja wykorzystywana do tworzenia nowych treści, takich jak tekst, obrazy, muzyka, dźwięki i filmy. Generatywna AI korzysta z modelu systemów uczących się, aby uczyć się wzorów i zależności w zbiorze danych zawierającym treści stworzone przez ludzi.

Ta technologia wykazała niesamowite możliwości w przypadku aplikacji takich jak Gemini. Być może zastanawiasz się, jak wdrożyć narzędzia generatywnej AI w swoich usługach internetowych.

Jednym z częstych przypadków użycia jest zapewnienie użytkownikom lepszego interfejsu do zadawania pytań dotyczących treści witryny. Dzięki systemom uczącym się możesz znacznie poprawić wyniki wyszukiwania użytkowników.

Możesz utworzyć interfejs, w którym użytkownicy wpisują pytanie, które jest następnie wysyłane do dużego modelu językowego (LLM), takiego jak Gemini, a potem wyświetlane są odpowiedzi.

Załóżmy, że taka funkcja istnieje w tej witrynie. Użytkownik chce się dowiedzieć, które interfejsy API są uwzględnione w Interop 2024, i wprowadza to zapytanie:

What are the features included in Interop 24?

Niestety wynik będzie prawdopodobnie nieprawidłowy z kilku powodów:

  • Użytkownik podał modelowi LLM zbyt mało kontekstu dotyczącego pytania, dlatego model jest bardziej podatny na podawanie błędnych odpowiedzi lub halucynacji.
  • Duże modele językowe zostały prawdopodobnie wytrenowane przed utworzeniem Interop 2024 lub przed podjęciem decyzji o ich funkcjach, więc nie mają dostępu do tych informacji.

Chociaż duże modele językowe mogą znajdować bardziej aktualne informacje, zbiory danych wykorzystywane do ich trenowania są z założenia nieaktualne. Dbanie o aktualne wyniki może być bardzo kosztowne i czasochłonne.

Używanie technik tworzenia promptów

Inżynieria promptów to zestaw technik, które pozwalają uzyskać najlepsze wyniki z modeli LLM.

Jedną z metod jest podanie dodatkowego kontekstu w promptach, aby zwiększyć prawdopodobieństwo, że model LLM wygeneruje treści związane z tym kontekstem.

W przypadku naszego przykładu interoperacyjności pierwszym krokiem jest podanie pełnej treści artykułu jako kontekstu. Następnie dodaj pytanie jako dane wejściowe, aby model LLM mógł na nie odpowiedzieć. Na przykład:

Context:
Following on from the success of Interop 2022 and Interop 2023, we
are excited about the opportunity to collaborate once again with
all key browser vendors and other relevant stakeholders...
(trimmed to fit in this article)

Input:
What are the features included in Interop 2024?

Dane wyjściowe Gemini mogą wyglądać tak:

The features included in Interop 24 are Accessibility, CSS Nesting, Custom
Properties, Declarative Shadow DOM, font-size-adjust, HTTPS URLs for
WebSocket, IndexedDB, Layout, Pointer and Mouse Events, Popover, Relative
Color Syntax, requestVideoFrameCallback, Scrollbar Styling, @starting-style
and, transition-behavior, Text Directionality, text-wrap: balance,URL

Taka odpowiedź jest prawdopodobnie znacznie lepsza niż pytanie bez kontekstu, ponieważ bazuje na podanym kontekście.

Skalowanie za pomocą RAG

Zamiast odpowiadać na pytanie dotyczące pojedynczego artykułu chcemy, aby model LLM odpowiadał na więcej pytań dotyczących web.dev, korzystając z dowolnego artykułu jako dodatkowego kontekstu. Chociaż jest to możliwe w przypadku mniejszych witryn, okno kontekstu Gemini 1.5 obejmuje milion tokenów, więc większe prompty są wolniejszedroższe w eksploatacji.

Długości danych wejściowych i wyjściowych LLM są mierzone i obliczane w tokenach, które są sposobem na reprezentowanie wspólnej sekwencji znaków w danych wejściowych. Liczba tokenów będzie zazwyczaj większa niż liczba słów. W pierwszym przykładzie dane wejściowe zawierały 775 słów reprezentowanych przez 1097 tokenów. Różne modele LLM mogą obliczać tokeny na różne sposoby. Większość z nich udostępnia interfejs API lub punkt końcowy do obliczania liczby tokenów dla danych wejściowych tekstowych.

Jednym z rozwiązań jest udostępnienie artykułów dotyczących promptów LLM. To zadanie składa się z 2 części:

  1. Dodaj treść najpopularniejszych artykułów jako kontekst podczas wywoływania modelu LLM.
  2. Wyszukaj treści dotyczące artykułów związanych z tematem „Jakie funkcje są dostępne w Interop 2024?”.

Chcemy, aby wyniki z Gemini zwracały treści oparte na tych artykułach:

Dane wejściowe powinny wyglądać tak:

Context:
Article 1:
Over the past two years... (trimmed)

Article 2:
At the end of last year Interop 2023 wrapped up. This effort... (trimmed)

Article 3:
Following on from the success of Interop 2022... (trimmed)

Input:
What are the features included in Interop 2024?

Ten kontekst daje oczekiwany wynik.

* Accessibility * CSS Nesting * Custom Properties
* Declarative Shadow DOM * font-size-adjust
* HTTPS URLs for WebSocket * IndexedDB * Layout
* Pointer and Mouse Events * Popover * Relative Color Syntax
* requestVideoFrameCallback * Scrollbar Styling
* @starting-style and transition-behavior * Text Directionality
* text-wrap: balance * URL

W przypadku osób obeznanych z AI podejście to wykorzystuje RAG, powszechną praktykę, która zwiększa prawdopodobieństwo uzyskania rzeczywistych odpowiedzi z narzędzi generatywnej AI.

Chociaż technika RAG może działać z normalnym wyszukiwaniem pełnotekstowym, ma też pewne wady.

  • Przeszukiwanie całego tekstu pomaga AI znajdować dopasowania do słów kluczowych. Jednak modele LLM nie są w stanie określić docelowego znaczenia zapytania użytkownika. W efekcie dane wyjściowe mogą być niekompletne lub nieprawidłowe.
  • Problemy mogą wystąpić, gdy słowa mają wiele znaczeń lub zapytania zawierają synonimy. Na przykład słowo „bank” (instytucja finansowa lub brzeg rzeki) może prowadzić do wyświetlania nieistotnych wyników.
  • Wyszukiwanie całego tekstu może zwrócić wyniki, które zawierają słowa kluczowe, ale nie są zgodne z celami użytkownika.

Wyszukiwanie semantyczne to technika, która pozwala zwiększyć dokładność wyszukiwania dzięki skupieniu się na tych kluczowych aspektach:

  • Intencja wyszukiwania: próba zrozumienia, czego szuka użytkownik. Czego próbują znaleźć lub osiągnąć?
  • Kontekstualny: interpretuje słowa i wyrażenia w związku z otaczającym je tekstem, a także inne czynniki, takie jak lokalizacja użytkownika czy historia wyszukiwania.
  • Związek między pojęciami: wyszukiwanie semantyczne wykorzystuje wykresy wiedzy (duże sieci powiązanych elementów) oraz przetwarzanie języka naturalnego, aby zrozumieć, jak słowa i pojęcia są ze sobą powiązane.

W efekcie, gdy tworzysz narzędzia z wyszukiwaniem semantycznym, wyniki wyszukiwania zależą od ogólnego celu zapytania, a nie od słów kluczowych. Oznacza to, że narzędzie może określić odpowiednie dokumenty, nawet jeśli nie ma w nich dopasowania ścisłego do słowa kluczowego. Pozwala to też uniknąć wyników, w których dane słowo występuje w wyszukiwarce, ale ma inne znaczenie.

Obecnie możesz stosować 2 narzędzia wyszukiwania, które wykorzystują wyszukiwanie semantyczne: Vertex AI Search i Algolia AI Search.

Uzyskiwanie odpowiedzi z opublikowanych treści

Wiesz już, jak użyć inżynierii promptów, aby umożliwić LLM udzielanie odpowiedzi związanych z treściami, których nigdy nie widziała, przez dodanie kontekstu do promptu. Wiesz już, jak przeskalować to podejście z poszczególnych artykułów do całego korpusu treści przy użyciu metody Retrieval-Augmented Generation (RAG). Dowiedz się, jak wyszukiwarka semantyczna może jeszcze bardziej poprawić wyniki zapytań użytkowników dzięki wdrożeniu RAG w Twojej usłudze.

Jest to znany problem, że narzędzia generatywnej AI mogą „halucynować”, co czyni je w najlepszym razie czasami niewiarygodnymi, a w najgorszym – szkodliwymi dla firmy. Dzięki tym technikom zarówno użytkownicy, jak i deweloperzy mogą zwiększyć niezawodność i być może budować zaufanie do wyników tych aplikacji.