Fabrice AI: Aktuelle technische Umsetzung

Im letzten Beitrag, Fabrice AI: The Technical Journey, habe ich den Weg beschrieben, den wir bei der Entwicklung von Fabrice AI zurückgelegt haben, um einen Kreis zu schließen. Zunächst habe ich Chat GPT 3 und 3.5 verwendet. Enttäuscht von den Ergebnissen habe ich versucht, mit dem Langchain Framework mein eigenes KI-Modell darauf aufzubauen, bevor ich zu Chat GPT zurückkehrte, als sie anfingen, Vektordatenbanken zu verwenden und die Ergebnisse mit 4o massiv zu verbessern.

Hier ist der aktuelle Prozess für das Training von Fabrice AI:

  • Die Trainingsdaten (Blogbeiträge, Youtube-URLs, Podcast-URLs, PDF-URLs und Bild-URLs) werden in unserer WordPress-Datenbank gespeichert.
  • Wir extrahieren die Daten und strukturieren sie.
  • Wir stellen Open AI die strukturierten Daten für das Training über die Assistenten-API zur Verfügung.
  • Open AI erstellt dann eine Vektorspeicher-Datenbank und speichert sie.

Hier ist ein Beispiel für strukturierte Daten. Jeder Inhalt hat seine eigene JSON-Datei. Wir stellen sicher, dass das Limit von 32.000 Token nicht überschritten wird.

{

„id“: „1“,

„Datum“: “ „,

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

„Titel“: {

„gerendert“: „Was ist Fabrice AI?“

  },

„Kategorie“: „Über Fabrice“,

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

„andere_medien“: „“,

„Wissen_Art“: „Blog“,

„contentUpdated“: „Fabrice AI ist eine digitale Darstellung von Fabrice‘ Gedanken, die auf seinen Blog-Beiträgen und ausgewählten transkribierten Podcasts und Interviews mit ChatGPT basieren. Da viele der Transkriptionen unvollkommen transkribiert sind und der Blog nur eine begrenzte Darstellung der Person Fabrice ist, entschuldigen wir uns für Ungenauigkeiten und fehlende Informationen. Nichtsdestotrotz ist dies ein guter Ausgangspunkt, um Fabrice‘ Gedanken zu vielen Themen zu erfahren.“

}

Das ist die aktuelle technische Umsetzung:

  • Die Website für Verbraucher wird auf AWS Amplify gehostet.
  • Die Integration zwischen der öffentlichen Website und Open AI erfolgt über eine API-Schicht, die auf AWS als Python-API-Server gehostet wird.
  • Wir verwenden MongoDB als Protokoll, um alle von der Öffentlichkeit gestellten Fragen, die von Chat GPT gegebenen Antworten und die URLs der Quellen zu speichern.
  • Wir verwenden verschiedene Skripte, um die Daten aus dem Blog, YouTube usw. zu strukturieren und an Open AI für das Training zu übergeben.
  • Wir verwenden React-Speech Recognition, um Sprachanfragen in Text umzuwandeln.
  • Wir verwenden auch Google Analytics, um den Website-Verkehr zu verfolgen.

Es ist wichtig zu wissen, dass wir zwei Assistenten einsetzen:

  • Eine für die Beantwortung von Fragen.
  • Eine, um Metadaten-URLs zu erhalten, die Blog-URLs, die den ursprünglichen Inhalt haben, um die Quellen am Ende der Antworten anzuzeigen.

Was nun?

  1. Verbesserungen bei Sprache-zu-Text

Das Whisper-Modell von Open AI für Sprache in Text ist genauer als React. Es unterstützt außerdem von Haus aus mehrere Sprachen und ist gut im Umgang mit gemischter Sprache, Akzenten und Dialekten. Daher werde ich in den kommenden Monaten höchstwahrscheinlich zu React wechseln. Allerdings ist die Einrichtung etwas komplexer, so dass es eine Weile dauern könnte. Sie müssen sich um das Modell kümmern, Abhängigkeiten verwalten (z. B. Python, Bibliotheken) und sicherstellen, dass Sie über ausreichend Hardware für eine effiziente Leistung verfügen. Außerdem ist Whisper nicht für die direkte Verwendung in Browsern konzipiert. Wenn Sie eine Webanwendung entwickeln, müssen Sie einen Backend-Dienst erstellen, um die Transkription zu verwalten, was die Komplexität erhöht.

  • Fabrice AI Avatar

Ich möchte einen KI-Avatar von Fabrice erstellen, der aussieht und sich anhört wie ich und mit dem man eine Unterhaltung führen kann. Ich habe D-iD getestet, fand es aber viel zu teuer für meine Zwecke. Eleven Labs ist nur für die Stimme. Synthesia ist großartig, kann aber derzeit keine Videos in Echtzeit erstellen. Letztendlich habe ich mich aufgrund des günstigeren Preises und der besseren Funktionalität für HeyGen entschieden.

Ich vermute, dass Open AI irgendwann seine eigene Lösung herausbringen wird, so dass diese Arbeit umsonst gewesen sein wird. Damit kann ich gut leben und werde auf die Open AI-Lösung umsteigen, wenn sie kommt. In diesem Stadium geht es bei dieser ganzen Übung darum, zu lernen, was mit KI möglich ist und wie viel Arbeit es erfordert, damit ich den Bereich besser verstehe.

  • Benutzerdefiniertes Dashboard

Im Moment muss ich eine MongoDB-Abfrage ausführen, um einen Auszug der Fragen und Antworten des Tages zu erhalten. Ich baue ein einfaches Dashboard, auf dem ich Extraktionen und einfache Statistiken über die Anzahl der Abfragen pro Sprache, die Anzahl der Sprache-zu-Text-Anfragen usw. abrufen kann.

  • Zusätzliche Datenquellen

Wir haben gerade das FJ Labs Portfolio zu Fabrice AI hochgeladen. Sie können jetzt fragen, ob ein Unternehmen Teil des Portfolios ist. Fabrice AI antwortet mit einer kurzen Beschreibung des Unternehmens und einem Link zu seiner Website.

Angesichts der vielen persönlichen Fragen, die Fabrice AI erhielt und auf die sie keine Antworten hatte, habe ich mir die Zeit genommen, jeden Sprecher in meinem Video zum 50 . Geburtstag manuell zu markieren, um ihm den nötigen Inhalt zu geben.

Fazit

Bei all der Arbeit, die ich in den letzten zwölf Monaten in Sachen KI geleistet habe, scheint es eine klare, allgemeingültige Schlussfolgerung zu geben: Je länger Sie warten, desto billiger, einfacher und besser wird es, und desto wahrscheinlicher ist es, dass Open AI es anbieten wird! Lassen Sie mich in der Zwischenzeit wissen, wenn Sie Fragen haben.

Fabrice AI: Die technische Reise

Wie ich bereits im letzten Beitrag erwähnt habe, erwies sich die Entwicklung der KI von Fabrice als weitaus komplexer als erwartet und zwang mich dazu, viele verschiedene Ansätze zu erforschen.

Die erste Annäherung: Llama Index – Vektorsuche

Mein erster Versuch, die Suchfähigkeiten von Fabrice AI zu verbessern, bestand darin, den Llama-Index für die Vektorsuche zu verwenden. Das Konzept war einfach: Ich nahm den Inhalt meines Blogs, wandelte ihn in Langchain-Dokumente um und diese dann in Llama-Dokumente. Diese Llama-Dokumente würden dann in einem Vektorindex gespeichert, so dass ich diesen Index nach relevanten Informationen abfragen könnte.

Als ich begann, das System zu testen, wurde jedoch deutlich, dass dieser Ansatz nicht die Ergebnisse lieferte, die ich mir erhofft hatte. Als ich das System mit kontextlastigen Fragen wie „Was sind die größten Fehler von Marktplatzgründern? Anstatt den differenzierten Inhalt abzurufen, von dem ich wusste, dass er in den Daten enthalten war, lieferte sie irrelevante oder unvollständige Antworten.

Dieser anfängliche Misserfolg veranlasste mich, meinen Ansatz zu überdenken. Ich erkannte, dass es nicht ausreichte, Inhalte einfach in einem Vektorindex zu speichern. Der Abrufmechanismus musste den Kontext und die Nuancen der gestellten Fragen verstehen. Diese Erkenntnis war die erste von vielen Lektionen, die die Entwicklung von Fabrice AI prägen sollten.

Wissen speichern: MongoDB – Speicherung und Abruf von Dokumenten

Mit den Einschränkungen des Llama-Index-Ansatzes im Hinterkopf, habe ich als nächstes die Speicherung der Llama-Dokumente in MongoDB untersucht. Das flexible Schema und die dokumentenorientierte Struktur von MongoDB schienen mir eine vielversprechende Lösung für die Verwaltung der verschiedenen Arten von Inhalten zu sein, die ich im Laufe der Jahre angesammelt hatte.

Der Plan war, ein dynamischeres und reaktionsschnelleres Sucherlebnis zu schaffen. Dieser Ansatz stieß jedoch schnell auf Probleme. Die Suchfunktion, von der ich erwartet hatte, dass sie robuster sein würde, funktionierte nicht wie erwartet. Abfragen, die relevante Dokumente hätten liefern sollen, ergaben keine Ergebnisse oder irrelevante Inhalte.

Dieser Rückschlag war frustrierend, aber er unterstrich auch eine wichtige Lektion: Die Speichermethode ist genauso wichtig wie die Abrufstrategie. Ich begann, andere Optionen in Betracht zu ziehen, z. B. die Verwendung von MongoDB Atlas für Vektorsuchen, die möglicherweise die Präzision und Skalierbarkeit bieten könnten, die ich benötigte. Bevor ich mich jedoch auf diese Alternative festlegte, wollte ich andere Ansätze untersuchen, um festzustellen, ob es vielleicht eine effektivere Lösung gibt.

Metadaten-Retriever und Vektorspeicher: Auf der Suche nach Spezifität

Eine der nächsten Möglichkeiten, die ich untersuchte, war die Verwendung eines Metadatenabrufs in Kombination mit einem Vektorspeicher. Die Idee hinter diesem Ansatz war, die riesige Menge an Informationen in der Fabrice-KI zu kategorisieren und dann Antworten auf der Grundlage dieser Kategorien abzurufen. Durch die Strukturierung der Daten mit Metadaten hoffte ich, die Fähigkeit der KI zu verbessern, spezifische, gezielte Antworten zu geben.

Doch auch diese Methode hatte ihre Grenzen. Obwohl sie oberflächlich betrachtet vielversprechend zu sein schien, hatte die KI Schwierigkeiten, auf alle Arten von Abfragen genaue Antworten zu geben. Als ich zum Beispiel fragte: „Ist der Autor optimistisch?“ Das System schaffte es nicht, die Frage im Zusammenhang mit dem relevanten Inhalt zu interpretieren. Anstatt eine aufschlussreiche Analyse auf der Grundlage der Metadaten zu liefern, gab es entweder vage Antworten oder gar keine.

Dieser Ansatz lehrte mich eine wertvolle Lektion über die Bedeutung des Kontexts in der KI. Es reicht nicht aus, Informationen einfach nur zu kategorisieren. Die KI muss auch verstehen, wie diese Kategorien zusammenwirken und sich überschneiden, um ein zusammenhängendes Verständnis des Inhalts zu erhalten. Ohne dieses tiefe Verständnis können selbst die ausgeklügeltsten Suchmethoden versagen.

Wissen strukturieren: Der SummaryTreeIndex

Als ich die KI von Fabrice weiter verfeinerte, experimentierte ich mit der Erstellung eines SummaryTreeIndex. Dieser Ansatz zielt darauf ab, alle Dokumente in einem Baumformat zusammenzufassen, so dass die KI durch diese Zusammenfassungen navigieren und relevante Informationen auf der Grundlage der Struktur des Inhalts abrufen kann.

Die Idee war, dass die KI durch die Zusammenfassung der Dokumente schnell die wichtigsten Punkte erkennen und auf Anfragen mit prägnanten, genauen Informationen antworten könnte. Doch auch diese Methode war mit erheblichen Herausforderungen verbunden. Die KI hatte Schwierigkeiten, aussagekräftige Antworten auf komplexe Fragen zu geben, z. B. „Wie trifft man wichtige Entscheidungen im Leben?“ Anstatt aus dem reichhaltigen, nuancierten Inhalt der Zusammenfassungen zu schöpfen, waren die Antworten der KI oft oberflächlich oder unvollständig.

Diese Erfahrung unterstreicht die Schwierigkeit, in der KI ein Gleichgewicht zwischen Breite und Tiefe zu finden. Während Zusammenfassungen einen Überblick auf hohem Niveau bieten können, fehlt ihnen oft der detaillierte Kontext, der für die Beantwortung komplexerer Fragen erforderlich ist. Mir wurde klar, dass eine effektive Lösung sowohl detaillierte Inhalte als auch Zusammenfassungen auf hoher Ebene integrieren muss, damit die KI bei Bedarf auf beides zurückgreifen kann.

Aus diesem Grund habe ich die KI in der aktuellen Version von Fabrice AI dazu veranlasst, zunächst eine Zusammenfassung der Antwort zu geben, bevor sie auf weitere Details eingeht.

Horizonte erweitern: Knowledge Graph Index

Da ich die Grenzen der bisherigen Methoden erkannte, wandte ich mich einem anspruchsvolleren Ansatz zu: dem Knowledge Graph Index. Bei diesem Ansatz wird aus unstrukturiertem Text ein Wissensgraph erstellt, der es der KI ermöglicht, entitätsbasierte Abfragen durchzuführen. Ziel war es, ein dynamischeres und vernetzteres Verständnis des Inhalts zu schaffen, so dass die KI von Fabrice komplexe, kontextlastige Fragen effektiver beantworten kann.

Trotz seiner vielversprechenden Eigenschaften hatte der Knowledge Graph Index auch mit erheblichen Hürden zu kämpfen. Die KI hatte Schwierigkeiten, genaue Ergebnisse zu liefern, insbesondere bei Abfragen, die ein tiefes Verständnis des Kontexts erfordern. Auf die Frage „Was sind faire Seed- und Series A-Bewertungen?“ konnte die KI zum Beispiel keine relevante Antwort geben, was die Schwierigkeit verdeutlicht, unstrukturierten Text in einen kohärenten Knowledge Graph zu integrieren.

Dieser Ansatz war zwar letztlich erfolglos, lieferte aber wichtige Erkenntnisse über die Herausforderungen bei der Verwendung von Wissensgraphen in der KI. Die Komplexität der Daten und die Notwendigkeit eines präzisen Kontexts bedeuteten, dass selbst ein gut konstruierter Wissensgraph Schwierigkeiten haben konnte, die gewünschten Ergebnisse zu liefern. Ein weiterer Nachteil des Knowledge Graph Index war seine langsame Geschwindigkeit. Die Antwortzeit, um verwandte Dokumente zu erhalten, war im Vergleich zu einem Vektorspeicherindex sehr hoch.

Neuauswertung der Daten: Zwillinge

Nach mehreren Rückschlägen beschloss ich, einen anderen Ansatz zu wählen, indem ich die KI von Google, Gemini, nutzte. Die Idee war, Datensätze aus JSON-CSV-Dateien zu erstellen und dann ein benutzerdefiniertes LLM-Modell mit diesen Daten zu trainieren. Ich hoffte, dass ich durch die Verwendung strukturierter Daten und eines robusten Trainingsmodells einige der Probleme überwinden könnte, die bei früheren Versuchen aufgetreten waren.

Allerdings stieß auch dieser Ansatz auf Schwierigkeiten. Der Trainingsprozess wurde aufgrund einer falschen Datenformatierung unterbrochen, wodurch das Modell nicht effektiv trainiert werden konnte. Dieser Rückschlag unterstreicht die Bedeutung der Datenintegrität beim KI-Training. Ohne korrekt formatierte und strukturierte Daten können selbst die fortschrittlichsten Modelle nicht die erwartete Leistung erbringen.

Diese Erfahrung brachte mich auf die Idee, BigQuery zum Speichern von JSON-Daten zu verwenden, um eine skalierbarere und zuverlässigere Plattform für die Verwaltung der großen Datensätze zu schaffen, die für ein effektives Training von Fabrice AI erforderlich sind.

Stärken vereinen: Langchain-Dokumente mit Pinecone

Trotz der bisherigen Herausforderungen war ich fest entschlossen, eine Lösung zu finden, die es Fabrice AI ermöglichen würde, Wissen effektiv zu speichern und abzurufen. Diese Entschlossenheit brachte mich dazu, mit Langchain-Dokumenten und Pinecone zu experimentieren. Der Ansatz bestand darin, einen Pinecone-Vektorspeicher mit Langchain-Dokumenten und OpenAI-Einbettungen zu erstellen und dann die ähnlichsten Dokumente auf der Grundlage der Abfrage abzurufen.

Diese Methode erwies sich als vielversprechend, insbesondere wenn die Abfrage den Titel des Dokuments enthielt. Auf die Frage „Was ist der Schlüssel zum Glück?“ konnte die KI beispielsweise den relevanten Inhalt genau abrufen und zusammenfassen. Allerdings gab es immer noch Einschränkungen, insbesondere wenn die Abfrage keine spezifischen Schlüsselwörter oder Titel enthielt.

Dieser Ansatz zeigte das Potenzial der Kombination verschiedener Technologien zur Verbesserung der KI-Leistung. Durch die Integration von Langchain-Dokumenten mit dem Vektorspeicher von Pinecone konnte ich die Relevanz und Genauigkeit der KI-Antworten verbessern, wenn auch mit einigen Einschränkungen.

Konsistenz erreichen: GPT Builder OpenAI

Nachdem ich verschiedene Methoden und Technologien untersucht hatte, wandte ich mich an den GPT Builder von Open AI, um das in Fabrice AI gespeicherte Wissen zu konsolidieren und zu verfeinern. Durch das Hochladen aller Inhalte in eine GPT-Wissensdatenbank wollte ich eine konsistentere und zuverlässigere Plattform für den Abruf und die Interaktion mit meinem Wissen schaffen.

Dieser Ansatz erwies sich als einer der erfolgreichsten, da die KI bei einer Reihe von Abfragen bessere Ergebnisse liefern konnte. Der Schlüssel zu diesem Erfolg war die Integration des gesamten Wissens in ein einziges, zusammenhängendes System, das es der KI ermöglichte, bei der Beantwortung von Fragen auf die gesamte Breite des Inhalts zurückzugreifen.

Wie in meinem vorherigen Beitrag erwähnt, konnte ich es nicht auf meiner Website zum Laufen bringen, und es war nur für bezahlte Abonnenten von Chat GPT verfügbar, was ich als zu einschränkend empfand. Auch wenn es besser war, gefiel mir die Qualität der Antworten immer noch nicht und ich fühlte mich nicht wohl dabei, es für die Öffentlichkeit freizugeben.

Letzte Verfeinerung: GPT-Assistenten mit Modell 4o

Das letzte Puzzlestück bei der Entwicklung von Fabrice AI war die Einführung der GPT-Assistenten mit dem Modell 4o. Dieser Ansatz war die Krönung all dessen, was ich während des Projekts gelernt hatte. Durch die Verwendung einer Vektordatenbank und die Verfeinerung der Eingabeaufforderungen wollte ich ein Höchstmaß an Genauigkeit und kontextbezogenem Verständnis bei den Antworten der KI erreichen.

Bei dieser Methode wurde das gesamte Wissen, das ich angesammelt hatte, in eine Vektordatenbank hochgeladen, die dann als Grundlage für die Interaktionen der KI diente. Die Vektordatenbank ermöglichte es der KI, anspruchsvollere Suchvorgänge durchzuführen und Informationen auf der Grundlage der semantischen Bedeutung von Anfragen abzurufen, anstatt sich nur auf den Abgleich von Schlüsselwörtern zu verlassen. Dies war ein bedeutender Fortschritt gegenüber früheren Ansätzen und ermöglichte es der KI, komplexe, nuancierte Fragen besser zu verstehen und zu beantworten.

Eine der wichtigsten Innovationen dieses Ansatzes war die sorgfältige Verfeinerung der Eingabeaufforderungen. Durch die sorgfältige Ausarbeitung und das Testen verschiedener Eingabeaufforderungen konnte ich die KI dazu bringen, genauere und relevantere Antworten zu geben. Dazu musste nicht nur der Wortlaut der Aufforderungen angepasst werden, sondern es wurde auch mit verschiedenen Möglichkeiten der Strukturierung der Fragen experimentiert, um die bestmöglichen Antworten zu erhalten.

Die Ergebnisse waren beeindruckend. Die KI war nun in der Lage, eine breite Palette von Anfragen mit hoher Genauigkeit zu bearbeiten, selbst wenn die Fragen offen waren oder ein tiefes Verständnis des Kontextes erforderten. Zum Beispiel auf die Frage: „Wie treffen Sie die wichtigsten Entscheidungen in Ihrem Leben? Die KI lieferte eine umfassende und aufschlussreiche Antwort, die auf eine Vielzahl von Quellen und Perspektiven zurückgriff, um eine abgerundete Antwort zu liefern.

Dieser Erfolg war der Höhepunkt von Hunderten von Arbeitsstunden und unzähligen Experimenten. Er zeigte, dass es mit der richtigen Kombination aus Technologie und Raffinesse möglich war, eine KI zu entwickeln, die Informationen nicht nur effektiv speichern und abrufen, sondern auch auf sinnvolle Weise mit ihnen umgehen kann. Die Entwicklung der GPT-Assistenten unter Verwendung des Modells 4o markierte den Punkt, an dem die KI von Fabrice wirklich zu ihrem Recht kam und den Grad an Raffinesse und Genauigkeit erreichte, den ich mir von Anfang an vorgestellt hatte. Die GPT-Assistenten-API wurde dann in meinen Blog integriert, damit die Endnutzer mit Fabrice AI so interagieren können, wie Sie es jetzt auf dem Blog sehen.

Über die Reise nachdenken

Der Prozess der Entwicklung von Fabrice AI hat mir die Komplexität der Arbeit mit KI vor Augen geführt, insbesondere wenn es um das Verständnis und die Kontextualisierung von Informationen geht. Ich habe gelernt, dass es bei der KI-Entwicklung keine Abkürzungen gibt – jeder Schritt, jede Iteration und jedes Experiment ist ein notwendiger Teil der Reise, um etwas wirklich Effektives zu schaffen.

Mit Blick auf die Zukunft freue ich mich darauf, Fabrice AI weiter zu verfeinern und zu erweitern. Wie im letzten Beitrag erwähnt, werde ich die gestellten Fragen überprüfen, um die Wissensbasis dort zu vervollständigen, wo es Lücken gibt. Außerdem hoffe ich, dass ich irgendwann eine interaktive Version herausbringen kann, die aussieht und klingt wie ich und mit der Sie sprechen können.

>