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ć.