Fabrice AI: Obecna implementacja techniczna

W ostatnim poście Fabrice AI: The Technical Journey wyjaśniłem drogę, jaką przeszliśmy, aby zbudować Fabrice AI, zataczając pełne koło. Zacząłem od korzystania z Chat GPT 3 i 3.5. Rozczarowany wynikami, próbowałem użyć Langchain Framework, aby zbudować na nim własny model sztucznej inteligencji, zanim wróciłem do Chat GPT, gdy zaczęli używać wektorowych baz danych i znacznie poprawili wyniki dzięki 4o.

Oto obecny proces szkolenia Fabrice AI:

  • Dane szkoleniowe (posty na blogu, adresy URL Youtube, adresy URL podcastów, adresy URL plików PDF i adresy URL obrazów) są przechowywane w naszej bazie danych WordPress.
  • Wyodrębniamy dane i nadajemy im strukturę.
  • Dostarczamy ustrukturyzowane dane do Open AI w celu szkolenia za pomocą interfejsu API Assistants.
  • Następnie Open AI tworzy wektorową bazę danych i przechowuje ją.

Oto przykład ustrukturyzowanych danych. Każda zawartość ma swój własny plik JSON. Dbamy o to, aby nie przekroczyć limitu 32 000 tokenów.

{

„id”: „1”,

„data”: ” „,

„link”: „https://fabricegrinda.com/”,

„title”: {

„renderowane”: „Czym jest Fabrice AI?”.

  },

„Kategoria”: „O Fabrice”,

„featured_media”: „https://fabricegrinda.com/wp-content/uploads/2023/12/About-me.png”,

„other_media”: „”,

„knowledge_type”: „blog”,

„contentUpdated”: „Fabrice AI to cyfrowa reprezentacja myśli Fabrice’a oparta na jego wpisach na blogu i wybranych transkrybowanych podcastach i wywiadach przy użyciu ChatGPT.Biorąc pod uwagę, że wiele transkrypcji jest niedoskonale przepisanych i że blog jest tylko ograniczoną reprezentacją Fabrice’a jako osoby, przepraszamy za nieścisłości i brakujące informacje. Niemniej jednak jest to dobry punkt wyjścia do zapoznania się z przemyśleniami Fabrice’a na wiele tematów”.

}

Jest to obecna implementacja techniczna:

  • Strona internetowa skierowana do konsumentów jest hostowana w AWS Amplify.
  • Integracja między witryną publiczną a Open AI odbywa się za pośrednictwem warstwy API, która jest hostowana w AWS jako serwer Python API.
  • Używamy MongoDB jako dziennika do przechowywania wszystkich pytań zadawanych publicznie, odpowiedzi udzielonych przez Chat GPT oraz adresów URL źródeł.
  • Używamy różnych skryptów do strukturyzowania danych z bloga, YouTube itp. w celu przekazania ich do Open AI w celu szkolenia.
  • Używamy React-Speech Recognition do konwersji zapytań głosowych na tekst.
  • Używamy również Google Analytics do śledzenia ruchu w witrynie.

Warto zauważyć, że korzystamy z dwóch asystentów:

  • Jeden do odpowiadania na pytania.
  • Jeden do pobierania adresów URL metadanych, adresów URL blogów, które mają oryginalną zawartość do wyświetlania źródeł na dole odpowiedzi.

Co dalej?

  1. Ulepszenia zamiany mowy na tekst

Model Whisper firmy Open AI do zamiany mowy na tekst jest dokładniejszy niż React. Obsługuje również wiele języków od razu po wyjęciu z pudełka i dobrze radzi sobie z mową w różnych językach, akcentami i dialektami. W rezultacie najprawdopodobniej przejdę na niego w nadchodzących miesiącach. Konfiguracja jest jednak bardziej złożona, więc może to trochę potrwać. Trzeba obsłużyć model, zarządzać zależnościami (np. Python, biblioteki) i upewnić się, że masz wystarczającą ilość sprzętu do wydajnej pracy. Ponadto Whisper nie jest przeznaczony do bezpośredniego użytku w przeglądarkach. Podczas tworzenia aplikacji internetowej należy utworzyć usługę zaplecza do obsługi transkrypcji, co zwiększa złożoność.

  • Awatar Fabrice AI

Chcę stworzyć awatara Fabrice AI, który wygląda i brzmi jak ja, z którym można prowadzić rozmowę. Oceniłem D-iD, ale okazało się, że jest zbyt drogie dla moich celów. Eleven Labs obsługuje tylko głos. Synthesia jest świetna, ale obecnie nie tworzy filmów w czasie rzeczywistym. Ostatecznie zdecydowałem się na HeyGen, biorąc pod uwagę bardziej odpowiednią cenę i funkcjonalność.

Podejrzewam, że w pewnym momencie Open AI wyda własne rozwiązanie, więc ta praca pójdzie na marne. Czuję się z tym komfortowo i przejdę na rozwiązanie Open AI, kiedy i jeśli się pojawi. Na tym etapie celem tego całego ćwiczenia jest nauczenie się, co jest możliwe dzięki sztucznej inteligencji i ile pracy wymaga, aby pomóc mi lepiej zrozumieć tę przestrzeń.

  • Niestandardowy pulpit nawigacyjny

Obecnie muszę uruchomić zapytanie MongoDB, aby uzyskać wyciąg z pytań i odpowiedzi z danego dnia. Buduję prosty pulpit nawigacyjny, w którym mogę uzyskać wyciągi i proste statystyki dotyczące liczby zapytań w poszczególnych językach, liczby żądań zamiany mowy na tekst itp.

  • Dodatkowe źródła danych

Właśnie przesłaliśmy portfolio FJ Labs do Fabrice AI. Możesz teraz zapytać, czy firma jest częścią portfolio. Fabrice AI odpowie krótkim opisem firmy i linkiem do jej strony internetowej.

Biorąc pod uwagę liczbę osobistych pytań, na które Fabrice AI nie znała odpowiedzi, poświęciłem czas na ręczne oznaczenie każdego mówcy w moim 50th Birthday Video, aby zapewnić mu potrzebną treść.

Wnioski

Biorąc pod uwagę całą pracę, jaką wykonałem w ciągu ostatnich dwunastu miesięcy nad wszystkimi rzeczami związanymi ze sztuczną inteligencją, wydaje się, że istnieje jasny, uniwersalny wniosek: im dłużej czekasz, tym tańsze, łatwiejsze i lepsze staje się to i tym bardziej prawdopodobne, że Open AI to zaoferuje! W międzyczasie daj mi znać, jeśli masz jakieś pytania.

Fabrice AI: Techniczna podróż

Jak wspomniałem w poprzednim poście, rozwój Fabrice AI okazał się o wiele bardziej złożony niż oczekiwano, zmuszając mnie do zbadania wielu różnych podejść.

Podejście początkowe: Llama Index – wyszukiwanie wektorowe

Moja pierwsza próba ulepszenia zdolności wyszukiwania Fabrice AI polegała na wykorzystaniu indeksu Llama do wyszukiwania wektorowego. Koncepcja była prosta: pobrać treści z mojego bloga, przekonwertować je na dokumenty Langchain, a następnie przekształcić je w dokumenty Llama. Te dokumenty Llama byłyby następnie przechowywane w indeksie wektorowym, umożliwiając mi wyszukiwanie w tym indeksie odpowiednich informacji.

Gdy jednak zacząłem testować system, okazało się, że takie podejście nie przynosi oczekiwanych rezultatów. W szczególności, gdy zadawałem systemowi pytania kontekstowe, takie jak „Jakie są największe błędy popełniane przez założycieli rynku?”, sztuczna inteligencja nie dostarczała znaczących odpowiedzi. Zamiast pobierać zniuansowane treści, o których wiedziałem, że są osadzone w danych, zwracała nieistotne lub niekompletne odpowiedzi.

Ta początkowa porażka skłoniła mnie do ponownego rozważenia mojego podejścia. Zdałem sobie sprawę, że samo przechowywanie treści w indeksie wektorowym nie wystarczy; mechanizm wyszukiwania musiał zrozumieć kontekst i niuanse zadawanych pytań. Ta świadomość była pierwszą z wielu lekcji, które ukształtowały ewolucję Fabrice AI.

Przechowywanie wiedzy: Przechowywanie i odzyskiwanie dokumentów MongoDB

Mając na uwadze ograniczenia podejścia Llama Index, następnie zbadałem przechowywanie dokumentów Llama w MongoDB. Elastyczny schemat MongoDB i struktura zorientowana na dokumenty wydawały się obiecującym rozwiązaniem do zarządzania różnymi rodzajami treści, które gromadziłem przez lata.

Plan zakładał stworzenie bardziej dynamicznego i responsywnego środowiska wyszukiwania. Jednak to podejście szybko napotkało problemy. Funkcja wyszukiwania, która miała być bardziej niezawodna, nie działała zgodnie z oczekiwaniami. Zapytania, które powinny zwracać odpowiednie dokumenty, zamiast tego nie dawały żadnych wyników lub zawierały nieistotne treści.

To niepowodzenie było frustrujące, ale podkreśliło również kluczową lekcję: metoda przechowywania jest tak samo ważna jak strategia wyszukiwania. Zacząłem rozważać inne opcje, takie jak wykorzystanie MongoDB Atlas do wyszukiwania wektorowego, które potencjalnie mogłoby zapewnić precyzję i skalowalność, których potrzebowałem. Jednak zanim zdecydowałem się na tę alternatywę, chciałem zbadać inne podejścia, aby ustalić, czy może istnieć bardziej skuteczne rozwiązanie.

Pobieranie metadanych i sklep z wektorami: Poszukiwanie specyfiki

Jedną z kolejnych dróg, które zbadałem, było użycie narzędzia do pobierania metadanych w połączeniu z magazynem wektorowym. Ideą tego podejścia było skategoryzowanie ogromnej ilości informacji w Fabrice AI, a następnie pobranie odpowiedzi na podstawie tych kategorii. Strukturyzując dane za pomocą metadanych, miałem nadzieję poprawić zdolność sztucznej inteligencji do udzielania konkretnych, ukierunkowanych odpowiedzi.

Metoda ta miała jednak również swoje ograniczenia. Choć z pozoru wydawała się obiecująca, sztuczna inteligencja z trudem udzielała dokładnych odpowiedzi na wszystkie rodzaje zapytań. Na przykład, gdy zapytałem: „Czy autor jest optymistą?”. System nie zinterpretował pytania w kontekście odpowiedniej treści. Zamiast zapewnić wnikliwą analizę opartą na metadanych, albo zwracał niejasne odpowiedzi, albo nie udzielał ich wcale.

To podejście nauczyło mnie cennej lekcji na temat znaczenia kontekstu w sztucznej inteligencji. Nie wystarczy po prostu kategoryzować informacje; sztuczna inteligencja musi również rozumieć, w jaki sposób te kategorie współdziałają i nakładają się na siebie, tworząc spójne zrozumienie treści. Bez tego dogłębnego zrozumienia nawet najbardziej wyrafinowane metody wyszukiwania mogą okazać się niewystarczające.

Strukturyzacja wiedzy: SummaryTreeIndex

Kontynuując udoskonalanie Fabrice AI, eksperymentowałem z tworzeniem SummaryTreeIndex. Podejście to miało na celu podsumowanie wszystkich dokumentów w formacie drzewa, umożliwiając sztucznej inteligencji poruszanie się po tych podsumowaniach i wyszukiwanie istotnych informacji w oparciu o strukturę treści.

Pomysł polegał na tym, że podsumowując dokumenty, sztuczna inteligencja mogła szybko zidentyfikować kluczowe punkty i odpowiedzieć na zapytania zwięzłymi, dokładnymi informacjami. Jednak metoda ta napotkała również poważne wyzwania. Sztuczna inteligencja miała trudności z udzielaniem znaczących odpowiedzi na złożone zapytania, takie jak „Jak podejmować ważne decyzje w życiu?”. Zamiast czerpać z bogatych, zniuansowanych treści przechowywanych w podsumowaniach, odpowiedzi AI były często płytkie lub niekompletne.

To doświadczenie uwypukliło trudność w równoważeniu szerokości i głębokości w sztucznej inteligencji. Podczas gdy podsumowania mogą zapewnić ogólny przegląd, często brakuje im szczegółowego kontekstu potrzebnego do udzielenia odpowiedzi na bardziej złożone pytania. Zdałem sobie sprawę, że każde skuteczne rozwiązanie będzie musiało integrować zarówno szczegółowe treści, jak i podsumowania wysokiego poziomu, pozwalając sztucznej inteligencji czerpać z obu w razie potrzeby.

Dlatego w wersji Fabrice AI, która jest obecnie dostępna, najpierw podaję podsumowanie odpowiedzi, zanim przejdę do bardziej szczegółowych informacji.

Poszerzanie horyzontów: Indeks wykresu wiedzy

Uznając ograniczenia poprzednich metod, zwróciłem się ku bardziej wyrafinowanemu podejściu: indeksowi grafu wiedzy. Podejście to polegało na konstruowaniu grafu wiedzy z nieustrukturyzowanego tekstu, umożliwiając sztucznej inteligencji angażowanie się w zapytania oparte na encjach. Celem było stworzenie bardziej dynamicznego i wzajemnie powiązanego zrozumienia treści, co pozwoliło sztucznej inteligencji Fabrice skuteczniej odpowiadać na złożone, kontekstowe pytania.

Pomimo swoich obietnic, indeks Knowledge Graph napotkał również znaczące przeszkody. Sztuczna inteligencja miała trudności z uzyskaniem dokładnych wyników, szczególnie w przypadku zapytań, które wymagały głębokiego zrozumienia kontekstu. Na przykład na pytanie „Jakie są uczciwe wyceny seedów i serii A?” sztuczna inteligencja ponownie nie udzieliła trafnej odpowiedzi, podkreślając trudność integracji nieustrukturyzowanego tekstu w spójny graf wiedzy.

Podejście to, choć ostatecznie nieudane, dostarczyło ważnych informacji na temat wyzwań związanych z wykorzystaniem grafów wiedzy w sztucznej inteligencji. Złożoność danych i potrzeba precyzyjnego kontekstu oznaczały, że nawet dobrze skonstruowany graf wiedzy mógł mieć trudności z dostarczeniem pożądanych wyników. Kolejną wadą Knowledge Graph Index była jego niska prędkość. Czas odpowiedzi w celu uzyskania powiązanych dokumentów był bardzo wysoki w porównaniu do indeksu wektorowego.

Ponowna ocena danych: Gemini

Po kilku niepowodzeniach zdecydowałem się na inne podejście, wykorzystując sztuczną inteligencję Google Gemini. Pomysł polegał na utworzeniu zestawów danych z plików JSON-CSV, a następnie wytrenowaniu niestandardowego modelu LLM przy użyciu tych danych. Miałem nadzieję, że dzięki wykorzystaniu ustrukturyzowanych danych i solidnego modelu szkoleniowego uda mi się pokonać niektóre z wyzwań, które nękały poprzednie próby.

Jednak to podejście również napotkało trudności. Proces szkolenia został zatrzymany z powodu nieprawidłowego formatowania danych, co uniemożliwiło skuteczne szkolenie modelu. To niepowodzenie podkreśliło znaczenie integralności danych w szkoleniu AI. Bez odpowiednio sformatowanych i ustrukturyzowanych danych nawet najbardziej zaawansowane modele mogą nie działać zgodnie z oczekiwaniami.

To doświadczenie skłoniło mnie do rozważenia możliwości wykorzystania BigQuery do przechowywania danych JSON, zapewniając bardziej skalowalną i niezawodną platformę do zarządzania dużymi zbiorami danych potrzebnymi do skutecznego szkolenia Fabrice AI.

Łączenie mocnych stron: Dokumenty Langchain z Pinecone

Pomimo dotychczasowych wyzwań, byłem zdeterminowany, aby znaleźć rozwiązanie, które pozwoliłoby Fabrice AI skutecznie przechowywać i pobierać wiedzę. Ta determinacja doprowadziła mnie do eksperymentowania z dokumentami Langchain i Pinecone. Podejście polegało na utworzeniu magazynu wektorowego Pinecone przy użyciu dokumentów Langchain i osadzeń OpenAI, a następnie pobraniu najbardziej podobnych dokumentów na podstawie zapytania.

Metoda ta okazała się obiecująca, zwłaszcza gdy zapytanie zawierało tytuł dokumentu. Na przykład, gdy zapytano: „Jaki jest klucz do szczęścia?”, sztuczna inteligencja była w stanie dokładnie pobrać i podsumować odpowiednią treść. Nadal jednak istniały ograniczenia, zwłaszcza gdy zapytanie nie zawierało konkretnych słów kluczowych lub tytułów.

Podejście to pokazało potencjał łączenia różnych technologii w celu zwiększenia wydajności sztucznej inteligencji. Integrując dokumenty Langchain z magazynem wektorowym Pinecone, byłem w stanie poprawić trafność i dokładność odpowiedzi sztucznej inteligencji, choć z pewnymi ograniczeniami.

Osiągnięcie spójności: GPT Builder OpenAI

Po zbadaniu różnych metod i technologii, zwróciłem się do Open AI GPT Builder, aby skonsolidować i udoskonalić wiedzę przechowywaną w Fabrice AI. Przesyłając całą zawartość do bazy wiedzy GPT, chciałem stworzyć bardziej spójną i niezawodną platformę do wyszukiwania i interakcji z moją wiedzą.

Podejście to okazało się jednym z najbardziej udanych, a sztuczna inteligencja była w stanie zapewnić lepsze wyniki w przypadku wielu zapytań. Kluczem do tego sukcesu była integracja całej wiedzy w jeden spójny system, umożliwiający sztucznej inteligencji korzystanie z pełnego zakresu treści podczas odpowiadania na pytania.

Jak wspomniałem w moim poprzednim poście, nie mogłem go uruchomić na mojej stronie internetowej i był dostępny tylko dla płatnych subskrybentów Chat GPT, co uważałem za zbyt ograniczające. Ponadto, choć było lepiej, nadal nie podobała mi się jakość odpowiedzi i nie czułem się komfortowo, udostępniając je publicznie.

Ostateczne udoskonalenie: Asystenci GPT korzystający z modelu 4o

Ostatnim elementem układanki w rozwoju Fabrice AI było wprowadzenie asystentów GPT przy użyciu Modelu 4o. Podejście to stanowiło kulminację wszystkiego, czego nauczyłem się podczas całego projektu. Wykorzystując wektorową bazę danych i udoskonalając podpowiedzi, starałem się osiągnąć najwyższy możliwy poziom dokładności i zrozumienia kontekstu w odpowiedziach AI.

Metoda ta polegała na przesłaniu całej zgromadzonej przeze mnie wiedzy do wektorowej bazy danych, która została następnie wykorzystana jako podstawa interakcji sztucznej inteligencji. Wektorowa baza danych pozwoliła sztucznej inteligencji na przeprowadzanie bardziej zaawansowanych wyszukiwań, pobierając informacje w oparciu o semantyczne znaczenie zapytań, zamiast polegać wyłącznie na dopasowywaniu słów kluczowych. Oznaczało to znaczny postęp w stosunku do poprzednich podejść, umożliwiając sztucznej inteligencji lepsze zrozumienie i reagowanie na złożone, zniuansowane pytania.

Jedną z kluczowych innowacji tego podejścia było staranne dopracowanie podpowiedzi. Poprzez skrupulatne tworzenie i testowanie różnych podpowiedzi, byłem w stanie poprowadzić sztuczną inteligencję w kierunku dostarczania bardziej dokładnych i trafnych odpowiedzi. Wiązało się to nie tylko z poprawianiem brzmienia podpowiedzi, ale także eksperymentowaniem z różnymi sposobami konstruowania zapytań w celu uzyskania najlepszych możliwych odpowiedzi.

Wyniki były imponujące. Sztuczna inteligencja była teraz w stanie obsłużyć szeroki zakres zapytań z dużą dokładnością, nawet gdy pytania były otwarte lub wymagały głębokiego zrozumienia kontekstu. Na przykład, na pytanie „Jak podejmować najważniejsze decyzje w życiu?” Sztuczna inteligencja udzieliła wyczerpującej i wnikliwej odpowiedzi, opierając się na różnych źródłach i perspektywach, aby zapewnić wszechstronną odpowiedź.

Sukces ten był kulminacją setek godzin pracy i niezliczonych eksperymentów. Pokazał on, że dzięki odpowiedniej kombinacji technologii i udoskonaleń, możliwe jest stworzenie sztucznej inteligencji, która nie tylko może skutecznie przechowywać i wyszukiwać informacje, ale także angażować się w nie w znaczący sposób. Rozwój GPT Assistants przy użyciu Modelu 4o wyznaczył punkt, w którym Fabrice AI naprawdę się rozwinęła, osiągając poziom wyrafinowania i dokładności, który wyobrażałem sobie od samego początku. Interfejs API GPT Assistants został następnie zintegrowany z moim blogiem, aby umożliwić użytkownikom końcowym interakcję z Fabrice AI w sposób, w jaki widzisz go teraz na blogu.

Refleksja nad podróżą

Proces rozwoju Fabrice AI uwypuklił złożoność pracy ze sztuczną inteligencją, szczególnie jeśli chodzi o zrozumienie i kontekstualizację informacji. Nauczyło mnie to, że w rozwoju sztucznej inteligencji nie ma drogi na skróty – każdy krok, każda iteracja i każdy eksperyment jest niezbędną częścią podróży w kierunku stworzenia czegoś naprawdę skutecznego.

Patrząc w przyszłość, jestem podekscytowany dalszym udoskonalaniem i rozszerzaniem Fabrice AI. Jak wspomniałem w ostatnim poście, przejrzę zadane pytania, aby uzupełnić bazę wiedzy tam, gdzie są luki. Mam również nadzieję, że w końcu wydam interaktywną wersję, która wygląda i brzmi jak ja, z którą można porozmawiać.

>