Asystent głosowy + przeszukiwanie instrukcji

Opis problemu

Klient przyszedł do nas z następującym problemem:

  • Jesteśmy firmą telekomunikacyjną. Mamy setki stron instrukcji technicznych.
  • Nawet gdy mamy doświadczoną osobę to po przyjeździe na miejsce pracy i tak musi spędzać dużo czasu na wyszukiwaniu informacji w instrukcjach.
  • Sprzęt często się zmienia, a więc i instrukcje. Zanim zaczniemy nowy projekt to czas wdrożenia i przerobienia to często tygodnie.
  • Jeżeli mamy nową osobę jej wdrożenie zajmuje bardzo dużo czasu.

Nasze rozwiązanie

Oczywiście z rozwiązaniem przyszła technologia AI.

Udało nam się przekonwertować instrukcje w taki sposób, aby użytkownik zadający pytanie o jakiś aspekt dostał krótka odpowiedź wraz z podanym źródłem. Jako interfejs skorzystaliśmy z wiadomości głosowych nagrywanych w telegramie.

Wyzwania techniczne

Aby zrealizować powyższy scenariusz musieliśmy przejść przez kilka kroków:

Integracja telegrama + rozpoznanie mowy

  1. Stworzyć bota na platformie Telegram i połączyć go z naszą aplikacją backendową.
  2. Włączyć nasłuchiwanie wiadomości na określonym kanale.
  3. Przekształcić otrzymaną wiadomość dźwiękową na tekst za pomocą sztucznej inteligencji (AI)
  4. Za pomocą AI rozpoznać jaką czynność użytkownik chce wykonać - może ich być wiele.

Przygotowanie instrukcji do przeszukiwania za pomocą zwykłego języka

  1. Najpierw należało przekształcić instrukcje z pdf do pliku markdown
  2. Usunięcie szumu
  3. Podzielenie instrukcji na obiekty zawierające: tytuł paragrafu, content paragrafu, linki do zdjęć
  4. W przypadku gdy paragrafy były zbyt długie należało podzielić je na kilka części i nadać im tytuły
  5. Należało rozszerzyć tytuły o dodatkowy opis na podstawie paragrafu
  6. Tak przygotowane dane można było zwektoryzować czyli zamienić na postać liczbową
  7. Ostatnim krokiem było wrzucenie danych do bazy wektorowej

Czym jest baza wektorowa? Pozwala nam wyszukiwać słowa, zdania, które są do siebie podobne. Jak się to odbywa? Mierzymy odległości między elementami im coś jest bliżej siebie tym bardziej podobne jest.

Wielopoziomowe wyszukiwanie

  1. Wyszukujemy po tytułach + opisach tytułów. Bierzemy top 15 najbardziej odpowiadających wyników
  2. Wśród tych 15 wyników wyszukujemy po contencie. Bierzemy top 5 wynikow.
  3. Wśród tych 5 wyników odpytujemy GPT 4, który z nich jest najbardziej trafny.
  4. Po wybraniu 1 prosimy GPT o stworzenie na podstawie paragrafu zwiezlej odpowiedzi

Dlaczego wielopoziomowe wyszukiwanie? Ponieważ nie możemy wrzucić całości do GPT, bo:
a) ma ograniczenia długości treści
b) szybko gubi kontekst. Gpt szybko się rozprasza gdy wrzucimy zbyt dużo treści.

Dlaczego nie możemy od razu wyszukiwać po contencie? Bo będzie to drogie i nie efektywne. Należy stworzyć kilka poziomów przeszukiwania. Ostatecznie, gdy mamy wytypowane kilka paragrafów, możemy je wrzucić do Gpt i na ich podstawie wytypuje najlepszy. Następnie na podstawie jednego paragrafu ułoży odpowiedź.

Połączenie w całość

Mogąc odczytać pytanie użytkownika i mając przygotowane dane oraz system wyszukiwania możemy odpytać nasz system. Odpowiedz wraz z podanym źródłem przesyłamy w odpowiedzi na telegrama.

Zagrożenia

Projekty oparte o NLP i large language models mają tą cechę, że są nie deterministyczne. Gpt zapytany 5 razy o to samo udzieli innej odpowiedzi, podobnej, ale innej. Rzadko kiedy jest możliwe osiągnięcie 100% skuteczności rozwiązania.

Dlatego projekty takie nie powinny być używane w krytycznych miejscach biznesu. Jednak jak zwiększać skuteczność takich rozwiązań?

Badanie skuteczności

Należy zacząć od badania skuteczności. Przykładowo osoba dobrze zaznajomiona z instrukcją musi przygotować 50-100 pytań. Następnie należy odpytać program i sprawdzić w ilu przypadkach odpowiedział dobrze. Mając tak przygotowane możliwości badań skuteczności możemy przejść do kolejnego kroku.

Modyfikacje treści w celu polepszenia skuteczności

Wspominaliśmy wcześniej, że:

  • w przypadku zbyt długich paragrafów należy je podzielić na krótsze oraz nadać im tytuł
  • W przypadku tytułów należy dodać im opis na podstawie paragrafu

Te czynności możemy zrobić automatycznie i to robimy na początku. Jednak, aby zwiększać efektywność rozwiązania dobrze, aby osoba zaznajomiona z instrukcja nadzorowała manualnie procesy dzielenia paragrafów oraz opisów do tytułów. Im lepiej się to zrobi tym wyszukiwanie będzie lepsze. Po każdej takiej modyfikacji należy ponownie przeprowadzić testy i sprawdzić skuteczność. Tak więc cały proces jest również iteracyjno-eksperymentalny, tak jak to ma miejsce w klasycznych metodykach machine learningu.

Ostateczne sprawdzenie

Kolejnym zabezpieczeniem jest podanie źródła na podstawie którego, program stworzył odpowiedź. Warto, więc aby użytkownik przynajmniej przez jakiś czas sprawdzał odpowiedzi porównując ze źródłem. Ograniczy to potencjalne pomyłki.

Bazy wiedzy

Opisaliśmy możliwości na podstawie jednej instrukcji. Jednak technologie tą można użyć przy tworzeniu rozległych baz wiedzy. Przykładowo można stworzyć działy: instrukcje, klienci, projekty, kampanie marketingowe i wszystko przeszukiwać językiem naturalnym.

Skontaktuj się i zacznij podejmować skuteczniejsze decyzje na podstawie analizy danych