Fabrice AI: Implementasi Teknis Saat Ini

Dalam tulisan terakhir, Fabrice AI: Perjalanan Teknis, saya menjelaskan perjalanan yang kami lalui dalam membangun Fabrice AI secara menyeluruh. Saya mulai dengan menggunakan Chat GPT 3 dan 3.5. Kecewa dengan hasilnya, saya mencoba menggunakan Langchain Framework untuk membangun model AI saya sendiri di atasnya, sebelum kembali ke Chat GPT setelah mereka mulai menggunakan database vektor dan secara besar-besaran meningkatkan hasil dengan 4o.

Berikut ini adalah proses saat ini untuk melatih Fabrice AI:

  • Data pelatihan (posting blog, URL Youtube, URL podcast, URL PDF, dan URL gambar) disimpan dalam database WordPress kami.
  • Kami mengekstrak data dan menyusunnya.
  • Kami menyediakan data terstruktur ke Open AI untuk pelatihan menggunakan API Asisten.
  • Open AI kemudian membuat basis data penyimpanan vektor dan menyimpannya.

Berikut ini adalah contoh sepotong data terstruktur. Setiap bagian dari konten memiliki file JSON-nya sendiri. Kami memastikan untuk tidak melebihi batas 32.000 token.

{

“id”: “1”,

“tanggal”: ” “,

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

“judul”: {

“diberikan”: “Apa itu Fabrice AI?”

  },

“Kategori”: “Tentang Fabrice”,

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

“media_lainnya”: “”,

“jenis_pengetahuan”: “blog”,

“kontenDiperbarui”: “Fabrice AI adalah representasi digital dari pemikiran Fabrice berdasarkan posting blognya dan podcast serta wawancara yang ditranskripsikan menggunakan ChatGPT. Mengingat banyak transkripsi yang ditranskripsikan dengan tidak sempurna dan blog ini hanyalah representasi terbatas dari Fabrice sebagai individu, kami mohon maaf atas ketidakakuratan dan informasi yang hilang. Meskipun demikian, ini adalah titik awal yang baik untuk mendapatkan pemikiran Fabrice tentang banyak topik.”

}

Ini adalah implementasi teknis saat ini:

  • Situs web yang berhadapan dengan konsumen dihosting di AWS Amplify.
  • Integrasi antara situs publik dan Open AI dilakukan melalui lapisan API, yang dihosting di AWS sebagai server API Python.
  • Kami menggunakan MongoDB sebagai log untuk menyimpan semua pertanyaan yang diajukan oleh publik, jawaban yang diberikan oleh Chat GPT, dan URL dari sumber.
  • Kami menggunakan berbagai skrip untuk menyusun data dari blog, YouTube, dan lain-lain untuk diteruskan ke Open AI untuk pelatihan.
  • Kami menggunakan React-Speech Recognition untuk mengubah pertanyaan suara menjadi teks.
  • Kami juga menggunakan Google Analytics untuk melacak lalu lintas situs web.

Penting untuk dicatat bahwa kami menggunakan dua asisten:

  • Satu untuk menjawab pertanyaan.
  • Satu untuk mendapatkan URL metadata, URL blog yang memiliki konten asli untuk menampilkan sumber di bagian bawah jawaban.

Apa selanjutnya?

  1. Peningkatan Ucapan ke Teks

Model Whisper dari Open AI untuk ucapan ke teks lebih akurat daripada React. Open AI juga mendukung berbagai bahasa dan bagus dalam menangani ucapan, aksen, dan dialek bahasa campuran. Sebagai hasilnya, saya kemungkinan besar akan beralih ke sana dalam beberapa bulan mendatang. Namun demikian, ini lebih rumit untuk disiapkan, jadi mungkin akan memakan waktu cukup lama. Anda perlu menangani modelnya, mengelola ketergantungan (misalnya, Python, pustaka), dan memastikan Anda memiliki perangkat keras yang memadai untuk kinerja yang efisien. Selain itu, Whisper tidak dirancang untuk penggunaan langsung di browser. Ketika membuat aplikasi web, Anda perlu membuat layanan backend untuk menangani transkripsi yang menambah kerumitan.

  • Fabrice AI Avatar

Saya ingin membuat Avatar AI Fabrice yang terlihat dan terdengar seperti saya yang dapat diajak bercakap-cakap. Saya mengevaluasi D-iD tetapi ternyata terlalu mahal untuk tujuan saya. Eleven Labs hanya untuk suara. Synthesia sangat bagus tetapi saat ini tidak dapat membuat video secara real time. Pada akhirnya saya memutuskan untuk menggunakan HeyGen karena harga dan fungsionalitasnya yang lebih sesuai.

Saya menduga bahwa suatu saat Open AI akan merilis solusinya sendiri sehingga pekerjaan ini tidak akan sia-sia. Saya merasa nyaman dengan hal tersebut dan akan beralih ke solusi Open AI ketika dan jika solusi tersebut hadir. Pada tahap ini, inti dari seluruh latihan ini adalah untuk mempelajari apa yang mungkin dilakukan dengan AI dan berapa banyak pekerjaan yang diperlukan untuk membantu saya memahami ruang tersebut dengan lebih baik.

  • Dasbor Khusus

Saat ini, saya perlu menjalankan kueri MongoDB untuk mendapatkan ekstrak pertanyaan dan jawaban hari ini. Saya sedang membuat dasbor sederhana di mana saya bisa mendapatkan ekstraksi dan statistik sederhana tentang jumlah kueri per bahasa, jumlah permintaan ucapan-ke-teks, dll.

  • Sumber Data Tambahan

Kami baru saja mengunggah Portofolio FJ Labs ke Fabrice AI. Anda sekarang dapat bertanya apakah sebuah perusahaan merupakan bagian dari portofolio. Fabrice AI menjawab dengan deskripsi singkat tentang perusahaan dan tautan ke situs webnya.

Mengingat banyaknya pertanyaan pribadi yang diterima Fabrice AI yang tidak dapat dijawabnya, saya meluangkan waktu untuk secara manual menandai setiap pembicara dalam Video Ulang Tahun ke-50 saya untuk memberikan konten yang dibutuhkan.

Kesimpulan

Dengan semua pekerjaan yang telah saya lakukan selama dua belas bulan terakhir tentang semua hal yang berhubungan dengan AI, tampaknya ada kesimpulan universal yang jelas: semakin lama Anda menunggu, semakin murah, mudah, dan lebih baik, dan semakin besar kemungkinan Open AI akan menawarkannya! Sementara itu, beritahu saya jika Anda memiliki pertanyaan.

Fabrice AI: Perjalanan Teknis

Seperti yang saya sebutkan di artikel sebelumnya, mengembangkan Fabrice AI ternyata jauh lebih kompleks dari yang diharapkan, memaksa saya untuk mengeksplorasi berbagai pendekatan yang berbeda.

Pendekatan Awal: Indeks Llama – Pencarian Vektor

Upaya pertama saya dalam meningkatkan kemampuan pencarian Fabrice AI adalah dengan menggunakan Llama Index untuk pencarian vektor. Konsepnya sederhana: ambil konten dari blog saya, ubah menjadi dokumen Langchain, lalu ubah menjadi dokumen Llama. Dokumen Llama ini kemudian disimpan dalam indeks vektor, sehingga saya dapat menanyakan indeks ini untuk mendapatkan informasi yang relevan.

Namun, ketika saya mulai menguji sistem, terlihat jelas bahwa pendekatan ini tidak memberikan hasil seperti yang saya harapkan. Secara khusus, ketika saya bertanya kepada sistem dengan pertanyaan yang penuh konteks seperti “Apa kesalahan terbesar yang dilakukan oleh para pendiri marketplace?”, AI gagal memberikan jawaban yang berarti. Alih-alih mengambil konten bernuansa yang saya tahu tertanam dalam data, AI malah memberikan jawaban yang tidak relevan atau tidak lengkap.

Kegagalan awal ini membuat saya mempertimbangkan kembali pendekatan saya. Saya menyadari bahwa menyimpan konten dalam indeks vektor saja tidak cukup; mekanisme pencarian perlu memahami konteks dan nuansa pertanyaan yang diajukan. Kesadaran ini merupakan pelajaran pertama dari banyak pelajaran yang akan membentuk evolusi Fabrice AI.

Menyimpan Pengetahuan: Penyimpanan dan Pengambilan Dokumen MongoDB

Dengan mempertimbangkan keterbatasan pendekatan Indeks Llama, saya selanjutnya menjelajahi penyimpanan dokumen Llama di MongoDB. Skema fleksibel MongoDB dan struktur berorientasi dokumennya tampak seperti solusi yang menjanjikan untuk mengelola beragam jenis konten yang telah saya kumpulkan selama bertahun-tahun.

Rencananya adalah untuk menciptakan pengalaman pencarian yang lebih dinamis dan responsif. Namun, pendekatan ini dengan cepat mengalami masalah. Fungsionalitas pencarian, yang saya perkirakan akan lebih tangguh, ternyata tidak berfungsi seperti yang diharapkan. Kueri yang seharusnya menghasilkan dokumen yang relevan malah tidak menghasilkan hasil atau konten yang tidak relevan.

Kemunduran ini membuat saya frustrasi, tetapi juga menggarisbawahi pelajaran penting: metode penyimpanan sama pentingnya dengan strategi pencarian. Saya mulai mempertimbangkan opsi lain, seperti memanfaatkan MongoDB Atlas untuk pencarian vektor, yang berpotensi memberikan ketepatan dan skalabilitas yang saya butuhkan. Namun, sebelum menggunakan alternatif ini, saya ingin mengeksplorasi pendekatan lain untuk menentukan apakah ada solusi yang lebih efektif.

Retriever Metadata dan Penyimpan Vektor: Mencari Kekhususan

Salah satu jalan berikutnya yang saya jelajahi adalah penggunaan retriever metadata yang dikombinasikan dengan penyimpanan vektor. Ide di balik pendekatan ini adalah untuk mengkategorikan beragam informasi di dalam Fabrice AI dan kemudian mengambil jawaban berdasarkan kategori ini. Dengan menyusun data dengan metadata, saya berharap dapat meningkatkan kemampuan AI untuk memberikan jawaban yang spesifik dan tepat sasaran.

Namun, metode ini juga memiliki keterbatasan. Meskipun tampak menjanjikan di permukaan, AI kesulitan untuk memberikan tanggapan yang akurat untuk semua jenis pertanyaan. Misalnya, ketika saya bertanya, “Apakah penulis optimis?” Sistem gagal menafsirkan pertanyaan tersebut dalam konteks konten yang relevan. Alih-alih memberikan analisis yang mendalam berdasarkan metadata, sistem hanya memberikan jawaban yang tidak jelas atau bahkan tidak ada sama sekali.

Pendekatan ini mengajarkan saya pelajaran berharga tentang pentingnya konteks dalam AI. Tidaklah cukup hanya dengan mengkategorikan informasi; AI juga harus memahami bagaimana kategori-kategori ini berinteraksi dan saling tumpang tindih untuk membentuk pemahaman yang kohesif tentang konten. Tanpa pemahaman yang mendalam ini, metode pencarian yang paling canggih sekalipun bisa gagal.

Menyusun Pengetahuan: Indeks RangkumanPohon (SummaryTreeIndex)

Ketika saya terus menyempurnakan AI Fabrice, saya bereksperimen dengan membuat SummaryTreeIndex. Pendekatan ini bertujuan untuk meringkas semua dokumen ke dalam format pohon, yang memungkinkan AI menavigasi ringkasan ini dan mengambil informasi yang relevan berdasarkan struktur konten.

Idenya adalah dengan meringkas dokumen, AI dapat dengan cepat mengidentifikasi poin-poin penting dan menjawab pertanyaan dengan informasi yang ringkas dan akurat. Namun, metode ini juga menghadapi tantangan yang signifikan. AI kesulitan untuk memberikan jawaban yang berarti untuk pertanyaan yang rumit, seperti “Bagaimana cara membuat keputusan penting dalam hidup?” Alih-alih mengambil dari konten yang kaya dan bernuansa yang tersimpan di dalam rangkuman, respons AI sering kali dangkal atau tidak lengkap.

Pengalaman ini menggarisbawahi sulitnya menyeimbangkan keluasan dan kedalaman dalam AI. Meskipun ringkasan dapat memberikan gambaran umum tingkat tinggi, namun sering kali ringkasan tidak memiliki konteks terperinci yang diperlukan untuk menjawab pertanyaan yang lebih kompleks. Saya menyadari bahwa solusi yang efektif perlu mengintegrasikan konten yang terperinci dan ringkasan tingkat tinggi, yang memungkinkan AI untuk memanfaatkan keduanya sesuai kebutuhan.

Inilah sebabnya mengapa dalam versi AI Fabrice yang saat ini ditayangkan, saya meminta AI memberikan ringkasan jawabannya terlebih dahulu, sebelum membahas lebih detail.

Memperluas Cakrawala: Indeks Grafik Pengetahuan

Menyadari keterbatasan metode sebelumnya, saya beralih ke pendekatan yang lebih canggih: Knowledge Graph Index. Pendekatan ini melibatkan pembuatan grafik pengetahuan dari teks yang tidak terstruktur, sehingga memungkinkan AI untuk terlibat dalam kueri berbasis entitas. Tujuannya adalah untuk menciptakan pemahaman yang lebih dinamis dan saling berhubungan tentang konten, yang memungkinkan AI Fabrice menjawab pertanyaan yang kompleks dan penuh konteks dengan lebih efektif.

Terlepas dari janji-janjinya, Knowledge Graph Index juga menghadapi rintangan yang signifikan. AI kesulitan untuk menghasilkan hasil yang akurat, terutama untuk pertanyaan yang membutuhkan pemahaman mendalam tentang konteksnya. Misalnya, ketika ditanya, “Berapa valuasi Seed & Seri A yang adil?” AI sekali lagi gagal memberikan jawaban yang relevan, menyoroti kesulitan dalam mengintegrasikan teks yang tidak terstruktur ke dalam grafik pengetahuan yang koheren.

Pendekatan ini, meskipun pada akhirnya tidak berhasil, memberikan wawasan penting tentang tantangan penggunaan grafik pengetahuan dalam AI. Kompleksitas data dan kebutuhan akan konteks yang tepat berarti bahwa grafik pengetahuan yang dibangun dengan baik pun bisa kesulitan untuk memberikan hasil yang diinginkan. Satu lagi kekurangan dari Knowledge Graph Index adalah kecepatannya yang lambat. Waktu respons untuk mendapatkan dokumen terkait sangat tinggi dibandingkan dengan indeks penyimpanan vektor.

Mengevaluasi kembali Data: Gemini

Setelah beberapa kali mengalami kegagalan, saya memutuskan untuk mengambil pendekatan yang berbeda dengan memanfaatkan AI Google, Gemini. Idenya adalah untuk membuat kumpulan data dari file JSON-CSV dan kemudian melatih model khusus LLM menggunakan data ini. Saya berharap dengan menggunakan data terstruktur dan model pelatihan yang kuat, saya dapat mengatasi beberapa tantangan yang mengganggu upaya sebelumnya.

Namun, pendekatan ini juga mengalami kesulitan. Proses pelatihan terhenti karena format data yang salah, yang mencegah model dilatih secara efektif. Kemunduran ini menggarisbawahi pentingnya integritas data dalam pelatihan AI. Tanpa data yang diformat dan terstruktur dengan benar, bahkan model yang paling canggih sekalipun dapat gagal bekerja seperti yang diharapkan.

Pengalaman ini membuat saya mempertimbangkan potensi penggunaan BigQuery untuk menyimpan data JSON, menyediakan platform yang lebih terukur dan dapat diandalkan untuk mengelola kumpulan data besar yang diperlukan untuk melatih Fabrice AI secara efektif.

Menggabungkan Kekuatan: Dokumen Langchain dengan Pinecone

Terlepas dari tantangan yang dihadapi sejauh ini, saya bertekad untuk menemukan solusi yang memungkinkan Fabrice AI untuk menyimpan dan mengambil pengetahuan secara efektif. Tekad ini membuat saya bereksperimen dengan dokumen Langchain dan Pinecone. Pendekatan yang dilakukan adalah dengan membuat penyimpanan vektor Pinecone menggunakan dokumen Langchain dan penyematan OpenAI, kemudian mengambil dokumen yang paling mirip berdasarkan kueri.

Metode ini menunjukkan hasil yang menjanjikan, terutama ketika kueri menyertakan judul dokumen. Misalnya, ketika ditanya, “Apa kunci kebahagiaan?”, AI dapat mengambil dan meringkas konten yang relevan secara akurat. Namun, masih ada keterbatasan, terutama ketika kueri tidak memiliki kata kunci atau judul yang spesifik.

Pendekatan ini menunjukkan potensi penggabungan teknologi yang berbeda untuk meningkatkan kinerja AI. Dengan mengintegrasikan dokumen Langchain dengan penyimpanan vektor Pinecone, saya dapat meningkatkan relevansi dan keakuratan respons AI, meskipun dengan beberapa keterbatasan.

Mencapai Konsistensi: Pembangun GPT OpenAI

Setelah menjelajahi berbagai metode dan teknologi, saya beralih ke Open AI’s GPT Builder untuk mengkonsolidasikan dan menyempurnakan pengetahuan yang tersimpan di dalam Fabrice AI. Dengan mengunggah semua konten ke dalam basis pengetahuan GPT, saya bertujuan untuk menciptakan platform yang lebih konsisten dan andal untuk mengambil dan berinteraksi dengan pengetahuan saya.

Pendekatan ini terbukti menjadi salah satu yang paling sukses, dengan AI yang mampu memberikan hasil yang lebih baik di berbagai pertanyaan. Kunci keberhasilan ini adalah integrasi semua pengetahuan ke dalam satu sistem yang kohesif, yang memungkinkan AI untuk memanfaatkan seluruh konten saat menjawab pertanyaan.

Seperti yang disebutkan dalam posting saya sebelumnya, saya tidak dapat menjalankannya di situs web saya, dan hanya tersedia untuk pelanggan berbayar Chat GPT yang saya rasa terlalu membatasi. Selain itu, meskipun lebih baik, saya masih tidak menyukai kualitas jawabannya dan tidak nyaman untuk merilisnya ke publik.

Penyempurnaan Akhir: Asisten GPT Menggunakan Model 4o

Bagian terakhir dari teka-teki dalam mengembangkan Fabrice AI adalah pengenalan Asisten GPT menggunakan Model 4o. Pendekatan ini merupakan puncak dari semua yang telah saya pelajari selama proyek berlangsung. Dengan memanfaatkan basis data vektor dan menyempurnakan petunjuknya, saya bertujuan untuk mencapai tingkat akurasi dan pemahaman kontekstual setinggi mungkin dalam respons AI.

Metode ini melibatkan pengunggahan semua pengetahuan yang telah saya kumpulkan ke dalam basis data vektor, yang kemudian digunakan sebagai fondasi untuk interaksi AI. Basis data vektor memungkinkan AI untuk melakukan pencarian yang lebih canggih, mengambil informasi berdasarkan makna semantik dari pertanyaan daripada hanya mengandalkan pencocokan kata kunci. Hal ini menandai kemajuan yang signifikan dibandingkan pendekatan sebelumnya, memungkinkan AI untuk lebih memahami dan merespons pertanyaan yang kompleks dan bernuansa.

Salah satu inovasi utama dari pendekatan ini adalah penyempurnaan petunjuk yang cermat. Dengan membuat dan menguji berbagai pertanyaan yang berbeda secara cermat, saya dapat memandu AI untuk memberikan jawaban yang lebih akurat dan relevan. Hal ini tidak hanya melibatkan penyesuaian kata-kata dari pertanyaan, tetapi juga bereksperimen dengan berbagai cara untuk menyusun pertanyaan untuk mendapatkan respons terbaik.

Hasilnya sangat mengesankan. AI sekarang mampu menangani berbagai macam pertanyaan dengan akurasi yang tinggi, bahkan ketika pertanyaan-pertanyaan tersebut bersifat terbuka atau membutuhkan pemahaman yang mendalam tentang konteks. Misalnya, ketika ditanya, “Bagaimana cara membuat keputusan paling penting dalam hidup Anda?” AI memberikan jawaban yang komprehensif dan berwawasan luas, dengan memanfaatkan berbagai sumber dan perspektif untuk memberikan respons yang menyeluruh.

Keberhasilan ini merupakan puncak dari ratusan jam kerja dan eksperimen yang tak terhitung jumlahnya. Hal ini menunjukkan bahwa, dengan kombinasi teknologi dan penyempurnaan yang tepat, adalah mungkin untuk menciptakan AI yang tidak hanya dapat menyimpan dan mengambil informasi secara efektif, tetapi juga berinteraksi dengan informasi tersebut dengan cara yang bermakna. Pengembangan Asisten GPT menggunakan Model 4o menandai titik di mana Fabrice AI benar-benar menjadi miliknya sendiri, mencapai tingkat kecanggihan dan akurasi yang saya bayangkan sejak awal. API GPT Assistants kemudian diintegrasikan ke dalam blog saya untuk memungkinkan pengguna akhir berinteraksi dengan Fabrice AI seperti yang Anda lihat di blog saat ini.

Merefleksikan Perjalanan

Proses pengembangan Fabrice AI menyoroti kompleksitas bekerja dengan AI, terutama dalam hal memahami dan mengontekstualisasikan informasi. Hal ini mengajarkan saya bahwa tidak ada jalan pintas dalam pengembangan AI-setiap langkah, setiap pengulangan, dan setiap percobaan adalah bagian penting dari perjalanan menuju penciptaan sesuatu yang benar-benar efektif.

Ke depannya, saya bersemangat untuk terus menyempurnakan dan mengembangkan Fabrice AI. Seperti yang telah disebutkan di postingan sebelumnya, saya akan meninjau kembali pertanyaan-pertanyaan yang diajukan untuk melengkapi basis pengetahuan yang masih kurang. Saya juga berharap pada akhirnya dapat merilis versi interaktif yang terlihat dan terdengar seperti saya yang dapat Anda ajak bicara.

>