Posting ini ditulis bersama Stanislav Yeshchenko dari Q4 Inc.
Perusahaan beralih ke Retrieval Augmented Generation (RAG) sebagai pendekatan utama dalam membangun chatbot Tanya Jawab. Kami terus melihat tantangan-tantangan yang muncul akibat dari beragamnya kumpulan data yang tersedia. Kumpulan data ini sering kali merupakan campuran data numerik dan teks, terkadang terstruktur, tidak terstruktur, atau semi terstruktur.
Q4 Inc. diperlukan untuk mengatasi beberapa tantangan ini dalam salah satu dari banyak kasus penggunaan AI yang dibangun di AWS. Dalam postingan ini, kami membahas kasus penggunaan bot Tanya Jawab yang telah diterapkan pada Q4, tantangan yang ditimbulkan oleh kumpulan data numerik dan terstruktur, dan bagaimana Q4 menyimpulkan bahwa penggunaan SQL mungkin merupakan solusi yang tepat. Terakhir, kita melihat lebih dekat bagaimana tim Q4 menggunakannya Batuan Dasar Amazon dan SQLDatabaseChain untuk mengimplementasikan solusi berbasis RAG dengan pembuatan SQL.
Gunakan ikhtisar kasus
Q4 Inc., yang berkantor pusat di Toronto, dengan kantor di New York dan London, adalah platform akses pasar modal terkemuka yang mengubah cara penerbit, investor, dan penjual terhubung, berkomunikasi, dan terlibat satu sama lain secara efisien. Platform Q4 memfasilitasi interaksi di seluruh pasar modal melalui produk situs web IR, solusi acara virtual, analisis keterlibatan, hubungan investor, Manajemen Hubungan Pelanggan (CRM), analisis pemegang saham dan pasar, pengawasan, dan alat-alat ESG.
Dalam lanskap keuangan yang serba cepat dan berbasis data saat ini, Investor Relations Officer (IRO) memainkan peran penting dalam membina komunikasi antara perusahaan dan pemegang saham, analis, dan investornya. Sebagai bagian dari tugas sehari-hari mereka, IRO menganalisis beragam kumpulan data, termasuk CRM, catatan kepemilikan, dan data pasar saham. Kumpulan data ini digunakan untuk menghasilkan laporan keuangan, menetapkan tujuan hubungan investor, dan mengelola komunikasi dengan investor yang ada dan calon investor.
Untuk memenuhi meningkatnya permintaan akan pengambilan data yang efisien dan dinamis, Q4 bertujuan untuk menciptakan alat Tanya Jawab chatbot yang akan memberikan metode intuitif dan mudah bagi IRO untuk mengakses informasi penting yang mereka perlukan dalam format yang mudah digunakan.
Tujuan akhirnya adalah menciptakan chatbot yang dapat mengintegrasikan data yang tersedia untuk umum dengan lancar, bersama dengan data Q4 khusus pelanggan, dengan tetap menjaga tingkat keamanan dan privasi data tertinggi. Sedangkan untuk performa, tujuannya adalah mempertahankan waktu respons kueri dalam hitungan detik untuk memastikan pengalaman positif bagi pengguna akhir.
Pasar keuangan adalah industri yang diatur dengan risiko tinggi. Memberikan informasi yang salah atau ketinggalan jaman dapat berdampak pada kepercayaan investor dan pemegang saham, selain kemungkinan risiko privasi data lainnya. Memahami industri dan persyaratannya, Q4 menetapkan privasi data dan akurasi respons sebagai prinsip panduan dalam mengevaluasi solusi apa pun sebelum dapat dipasarkan.
Sebagai pembuktian konsep, Q4 memutuskan untuk menggunakan kumpulan data kepemilikan finansial. Dataset tersebut terdiri dari titik data deret waktu yang mewakili jumlah aset yang dimiliki; riwayat transaksi antara lembaga penanaman modal, perorangan, dan perusahaan publik; dan masih banyak lagi elemen lainnya.
Karena Q4 ingin memastikan bahwa proyek tersebut dapat memenuhi semua persyaratan fungsional dan non-fungsional yang telah kita diskusikan, proyek tersebut juga harus tetap layak secara komersial. Hal ini dihormati sepanjang proses penentuan pendekatan, arsitektur, pilihan teknologi, dan elemen spesifik solusi.
Eksperimen dan tantangan
Sudah jelas sejak awal bahwa untuk memahami pertanyaan bahasa manusia dan menghasilkan jawaban yang akurat, Q4 perlu menggunakan model bahasa besar (LLM).
Berikut beberapa eksperimen yang dilakukan tim, beserta tantangan yang teridentifikasi dan pembelajaran yang dapat diambil:
- Pra-pelatihan โ Q4 memahami kompleksitas dan tantangan yang muncul saat pra-pelatihan LLM menggunakan kumpulan datanya sendiri. Dengan cepat menjadi jelas bahwa pendekatan ini membutuhkan banyak sumber daya dan banyak langkah-langkah yang tidak sepele, seperti pra-pemrosesan data, pelatihan, dan evaluasi. Selain upaya yang diperlukan, biayanya juga mahal. Mengingat sifat kumpulan data deret waktu, Q4 juga menyadari bahwa mereka harus terus melakukan pra-pelatihan tambahan seiring dengan masuknya data baru. Hal ini memerlukan tim lintas disiplin khusus yang memiliki keahlian di bidang ilmu data, pembelajaran mesin, dan domain. pengetahuan.
- Mencari setelan โ Menyempurnakan model pondasi terlatih (FM) yang melibatkan penggunaan beberapa contoh berlabel. Pendekatan ini menunjukkan beberapa keberhasilan awal, tetapi dalam banyak kasus, halusinasi model merupakan sebuah tantangan. Model tersebut kesulitan memahami isyarat kontekstual yang berbeda-beda dan memberikan hasil yang salah.
- RAG dengan pencarian semantik โ RAG konvensional dengan pencarian semantik adalah langkah terakhir sebelum beralih ke pembuatan SQL. Tim bereksperimen dengan menggunakan penelusuran, penelusuran semantik, dan penyematan untuk mengekstrak konteks. Selama percobaan penyematan, kumpulan data diubah menjadi penyematan, disimpan dalam database vektor, lalu dicocokkan dengan penyematan pertanyaan untuk mengekstrak konteks. Konteks yang diambil dalam salah satu dari tiga percobaan kemudian digunakan untuk menambah perintah asli sebagai masukan ke LLM. Pendekatan ini bekerja dengan baik untuk konten berbasis teks, yang datanya terdiri dari bahasa alami dengan kata, kalimat, dan paragraf. Mengingat sifat kumpulan data Q4, yang sebagian besar berupa data keuangan yang terdiri dari angka, transaksi keuangan, harga saham, dan tanggal, hasil pada ketiga kasus tersebut kurang optimal. Bahkan saat menggunakan penyematan, penyematan yang dihasilkan dari angka mengalami kesulitan dalam menentukan peringkat kesamaan, dan dalam banyak kasus menyebabkan pengambilan informasi yang salah.
Kesimpulan Q4: Menghasilkan SQL adalah jalan ke depan
Mempertimbangkan tantangan yang dihadapi saat menggunakan metodologi RAG konvensional, tim mulai mempertimbangkan pembuatan SQL. Idenya adalah menggunakan LLM untuk pertama-tama menghasilkan pernyataan SQL dari pertanyaan pengguna, yang disajikan ke LLM dalam bahasa alami. Kueri yang dihasilkan kemudian dijalankan terhadap database untuk mengambil konteks yang relevan. Konteksnya akhirnya digunakan untuk menambah perintah masukan untuk langkah peringkasan.
Hipotesis Q4 adalah untuk mendapatkan ingatan yang lebih tinggi pada langkah pengambilan, khususnya untuk kumpulan data numerik, mereka perlu membuat SQL dari pertanyaan pengguna terlebih dahulu. Hal ini diyakini tidak hanya meningkatkan akurasi, namun juga menjaga konteks dalam domain bisnis untuk pertanyaan tertentu. Untuk pembuatan kueri, dan untuk menghasilkan SQL yang akurat, Q4 perlu membuat LLM sepenuhnya menyadari konteks struktur kumpulan datanya. Ini berarti prompt perlu menyertakan skema database, beberapa contoh baris data, dan penjelasan bidang yang dapat dibaca manusia untuk bidang yang tidak mudah dipahami.
Berdasarkan pengujian awal, metode ini menunjukkan hasil yang luar biasa. LLM yang dilengkapi dengan semua informasi yang diperlukan mampu menghasilkan SQL yang benar, yang kemudian dijalankan terhadap database untuk mengambil konteks yang benar. Setelah bereksperimen dengan ide tersebut, Q4 memutuskan bahwa pembuatan SQL adalah cara ke depan untuk mengatasi tantangan ekstraksi konteks untuk kumpulan data spesifik mereka.
Mari kita mulai dengan mendeskripsikan pendekatan solusi secara keseluruhan, memecahnya menjadi komponen-komponennya, dan kemudian menyatukannya.
Ikhtisar solusi
LLM adalah model besar dengan miliaran parameter yang telah dilatih sebelumnya menggunakan data dalam jumlah sangat besar dari berbagai sumber. Karena luasnya kumpulan data pelatihan, LLM diharapkan memiliki pengetahuan umum di berbagai domain. LLM juga dikenal karena kemampuan penalarannya, yang bervariasi dari satu model ke model lainnya. Perilaku umum ini dapat dioptimalkan untuk domain atau industri tertentu dengan lebih mengoptimalkan model dasar menggunakan data pra-pelatihan khusus domain tambahan atau dengan menyempurnakan menggunakan data berlabel. Mengingat konteks, metadata, dan instruksi yang tepat, LLM tujuan umum yang dipilih dengan baik dapat menghasilkan SQL berkualitas baik selama LLM tersebut memiliki akses ke konteks spesifik domain yang tepat.
Dalam kasus penggunaan Q4, kita mulai dengan menerjemahkan pertanyaan pelanggan ke dalam SQL. Kami melakukan ini dengan menggabungkan pertanyaan pengguna, skema database, beberapa contoh baris database, dan instruksi terperinci sebagai perintah ke LLM untuk menghasilkan SQL. Setelah kita memiliki SQL, kita dapat menjalankan langkah validasi jika dirasa perlu. Jika kami puas dengan kualitas SQL, kami menjalankan kueri terhadap database untuk mengambil konteks relevan yang kami perlukan untuk langkah berikut. Sekarang setelah kita memiliki konteks yang relevan, kita dapat mengirimkan pertanyaan awal pengguna, konteks yang diambil, dan serangkaian instruksi kembali ke LLM untuk menghasilkan respons ringkasan akhir. Tujuan dari langkah terakhir adalah agar LLM merangkum hasil dan memberikan jawaban yang kontekstual dan akurat yang kemudian dapat diteruskan ke pengguna.
Pilihan LLM yang digunakan pada setiap tahapan proses sangat berdampak pada akurasi, biaya, dan kinerja. Memilih platform atau teknologi yang memberi Anda fleksibilitas untuk beralih antar LLM dalam kasus penggunaan yang sama (beberapa perjalanan LLM untuk tugas berbeda), atau di seluruh kasus penggunaan berbeda, dapat bermanfaat dalam mengoptimalkan kualitas keluaran, latensi, dan biaya . Kami membahas pilihan LLM nanti di posting ini.
Bahan penyusun solusi
Sekarang setelah kita menyoroti pendekatan ini pada tingkat tinggi, mari selami lebih dalam, dimulai dengan elemen penyusun solusi.
Batuan Dasar Amazon
Amazon Bedrock adalah layanan terkelola sepenuhnya yang menawarkan pilihan FM berkinerja tinggi dari perusahaan terkemuka, termasuk AI21 Labs, Anthropic, Cohere, Meta, Stability AI, dan Amazon. Amazon Bedrock juga menawarkan serangkaian alat yang diperlukan untuk membangun aplikasi AI generatif, menyederhanakan proses pengembangan, dan menjaga privasi dan keamanan. Selain itu, dengan Amazon Bedrock Anda dapat memilih dari berbagai opsi FM, dan Anda dapat menyempurnakan model lebih lanjut secara pribadi menggunakan data Anda sendiri untuk menyelaraskan respons model dengan persyaratan kasus penggunaan Anda. Amazon Bedrock sepenuhnya tanpa server tanpa infrastruktur dasar untuk mengelola perluasan akses ke model yang tersedia melalui satu API. Terakhir, Amazon Bedrock mendukung beberapa persyaratan keamanan dan privasi, termasuk kelayakan HIPAA dan kepatuhan GDPR.
Dalam solusi Q4, kami menggunakan Amazon Bedrock sebagai blok penyusun model multi-fondasi tanpa server, berbasis API. Karena kami bermaksud melakukan beberapa perjalanan ke LLM dalam kasus penggunaan yang sama, berdasarkan jenis tugas, kami dapat memilih model yang paling optimal untuk tugas tertentu, baik pembuatan SQL, validasi, atau ringkasan.
LangChain
LangChain adalah kerangka kerja integrasi dan orkestrasi sumber terbuka dengan serangkaian modul siap pakai (I/O, pengambilan, rantai, dan agen) yang dapat Anda gunakan untuk mengintegrasikan dan mengatur tugas antara FM, sumber data, dan alat. Kerangka kerja ini memfasilitasi pembuatan aplikasi AI generatif yang memerlukan pengaturan beberapa langkah untuk menghasilkan keluaran yang diinginkan, tanpa harus menulis kode dari awal. LangChain mendukung Amazon Bedrock sebagai API model multi-fondasi.
Khusus untuk kasus penggunaan Q4, kami menggunakan LangChain untuk mengoordinasikan dan mengatur tugas dalam alur kerja kami, termasuk menghubungkan ke sumber data dan LLM. Pendekatan ini telah menyederhanakan kode kita karena kita dapat menggunakan modul LangChain yang ada.
SQLDatabaseChain
SQLDatabaseChain adalah rantai LangChain yang dapat diimpor dari langchain_experimental. SLDatabaseChain memudahkan pembuatan, implementasi, dan menjalankan kueri SQL, menggunakan konversi dan implementasi teks-ke-SQL yang efektif.
Dalam kasus penggunaan kami, kami menggunakan SQLDatabaseChain dalam pembuatan SQL, menyederhanakan dan mengatur interaksi antara database dan LLM.
Dataset
Kumpulan data terstruktur kami dapat berada di database SQL, data lake, atau gudang data selama kami memiliki dukungan untuk SQL. Dalam solusi kami, kami dapat menggunakan tipe dataset apa pun dengan dukungan SQL; ini harus diabstraksi dari solusi dan tidak boleh mengubah solusi dengan cara apa pun.
Detail implementasi
Kini setelah kita mengeksplorasi pendekatan solusi, komponen solusi, pilihan teknologi, dan alat, kita dapat menyatukannya. Diagram berikut menyoroti solusi ujung ke ujung.
Mari kita telusuri detail implementasi dan alur prosesnya.
Hasilkan kueri SQL
Untuk menyederhanakan coding, kami menggunakan framework yang sudah ada. Kami menggunakan LangChain sebagai kerangka orkestrasi. Kami memulai dengan tahap masukan, di mana kami menerima pertanyaan pengguna dalam bahasa alami.
Pada tahap pertama ini, kami mengambil masukan ini dan menghasilkan SQL setara yang dapat kami jalankan terhadap database untuk ekstraksi konteks. Untuk menghasilkan SQL, kami menggunakan SQLDatabaseChain, yang mengandalkan Amazon Bedrock untuk akses ke LLM yang kami inginkan. Dengan Amazon Bedrock, dengan menggunakan satu API, kami mendapatkan akses ke sejumlah LLM yang mendasarinya dan dapat memilih LLM yang tepat untuk setiap perjalanan LLM yang kami lakukan. Kami pertama-tama membuat koneksi ke database dan mengambil skema tabel yang diperlukan bersama dengan beberapa baris contoh dari tabel yang ingin kami gunakan.
Dalam pengujian kami, kami menemukan 2โ5 baris data tabel sudah cukup untuk memberikan informasi yang cukup kepada model tanpa menambahkan terlalu banyak overhead yang tidak diperlukan. Tiga baris sudah cukup untuk memberikan konteks, tanpa membebani model dengan terlalu banyak masukan. Dalam kasus penggunaan kami, kami memulai dengan Anthropic Claude V2. Model ini dikenal karena penalarannya yang maju dan mengartikulasikan respons kontekstual bila diberikan konteks dan instruksi yang tepat. Sebagai bagian dari instruksi, kami dapat menyertakan rincian klarifikasi lebih lanjut ke LLM. Misalnya, kita bisa mendeskripsikan kolom itu Comp_NAME
singkatan dari nama perusahaan. Kita sekarang dapat membuat prompt dengan menggabungkan pertanyaan pengguna apa adanya, skema database, tiga baris sampel dari tabel yang ingin kita gunakan, dan serangkaian instruksi untuk menghasilkan SQL yang diperlukan dalam format SQL bersih tanpa komentar atau tambahan.
Semua elemen masukan yang digabungkan dianggap sebagai perintah masukan model. Perintah masukan yang dirancang dengan baik dan disesuaikan dengan sintaks pilihan model sangat berdampak pada kualitas dan kinerja keluaran. Pemilihan model yang akan digunakan untuk tugas tertentu juga penting, tidak hanya karena berdampak pada kualitas keluaran, namun juga karena berdampak pada biaya dan kinerja.
Kami membahas pemilihan model dan rekayasa cepat serta pengoptimalan nanti di postingan ini, namun perlu dicatat bahwa untuk tahap pembuatan kueri, kami melihat bahwa Claude Instant mampu menghasilkan hasil yang sebanding, terutama ketika pertanyaan pengguna diutarakan dengan baik dan tidak secanggih itu. Namun, Claude V2 memberikan hasil yang lebih baik bahkan dengan input pengguna yang lebih kompleks dan tidak langsung. Kami mempelajarinya meskipun dalam beberapa kasus Claude Instan mungkin memberikan akurasi yang memadai pada latensi dan harga yang lebih baik, kasus kami untuk pembuatan kueri lebih cocok untuk Claude V2.
Verifikasi kueri SQL
Langkah kami selanjutnya adalah memverifikasi bahwa LLM telah berhasil menghasilkan sintaks kueri yang benar dan kueri tersebut masuk akal secara kontekstual dengan mempertimbangkan skema database dan baris contoh yang disediakan. Untuk langkah verifikasi ini, kita bisa kembali ke validasi kueri asli dalam SQLDatabaseChain, atau kita bisa menjalankan perjalanan kedua ke LLM termasuk kueri yang dihasilkan bersama dengan instruksi validasi.
Jika kita menggunakan LLM untuk langkah validasi, kita dapat menggunakan LLM yang sama seperti sebelumnya (Claude V2) atau LLM yang lebih kecil dan lebih berperforma untuk tugas yang lebih sederhana, seperti Claude Instant. Karena kami menggunakan Amazon Bedrock, penyesuaian ini seharusnya sangat sederhana. Dengan menggunakan API yang sama, kita dapat mengubah nama model dalam panggilan API kita, yang akan menangani perubahan tersebut. Penting untuk dicatat bahwa dalam banyak kasus, LLM yang lebih kecil dapat memberikan efisiensi yang lebih baik baik dari segi biaya maupun latensi dan harus dipertimbangkanโselama Anda mendapatkan akurasi yang diinginkan. Dalam kasus kami, pengujian membuktikan bahwa kueri yang dihasilkan akurat secara konsisten dan dengan sintaksis yang tepat. Mengetahui hal tersebut, kami dapat melewati langkah validasi ini dan menghemat latensi dan biaya.
Jalankan kueri SQL
Sekarang kita memiliki kueri SQL terverifikasi, kita dapat menjalankan kueri SQL terhadap database dan mengambil konteks yang relevan. Ini harus menjadi langkah yang mudah.
Kami mengambil konteks yang dihasilkan, memberikannya ke LLM pilihan kami dengan pertanyaan pengguna awal dan beberapa instruksi, dan meminta model untuk menghasilkan ringkasan kontekstual dan artikulasi. Kami kemudian menyajikan ringkasan yang dihasilkan kepada pengguna sebagai jawaban atas pertanyaan awal, semuanya selaras dengan konteks yang diambil dari kumpulan data kami.
Untuk LLM yang terlibat dalam langkah peringkasan, kita dapat menggunakan Titan Text Express atau Claude Instant. Keduanya akan menyajikan pilihan yang baik untuk tugas peringkasan.
Integrasi aplikasi
Kemampuan chatbot Tanya Jawab adalah salah satu layanan AI Q4. Untuk memastikan modularitas dan skalabilitas, Q4 membangun layanan AI sebagai layanan mikro yang dapat diakses oleh aplikasi Q4 melalui API. Pendekatan berbasis API ini memungkinkan integrasi yang lancar dengan ekosistem Platform Q4 dan memfasilitasi pemaparan kemampuan layanan AI ke rangkaian aplikasi platform yang lengkap.
Tujuan utama layanan AI adalah memberikan kemampuan langsung untuk mengambil data dari sumber data publik atau kepemilikan menggunakan bahasa alami sebagai masukan. Selain itu, layanan AI menyediakan lapisan abstraksi tambahan untuk memastikan bahwa persyaratan fungsional dan non-fungsional, seperti privasi dan keamanan data terpenuhi. Diagram berikut menunjukkan konsep integrasi.
Tantangan implementasi
Selain tantangan yang disebabkan oleh sifat kumpulan data numerik terstruktur yang telah kita bahas sebelumnya, Kuartal 4 dihadapkan pada sejumlah tantangan implementasi lain yang perlu diatasi.
Seleksi dan kinerja LLM
Memilih LLM yang tepat untuk tugas tersebut sangat penting karena berdampak langsung pada kualitas keluaran serta kinerja (latensi bolak-balik). Berikut adalah beberapa faktor yang berperan dalam proses seleksi LLM:
- Jenis LLM โ Cara FM dirancang dan data awal model yang telah dilatih sebelumnya menentukan jenis tugas yang dapat dilakukan dengan baik oleh LLM dan seberapa baik hal tersebut. Misalnya, LLM teks akan bagus dalam pembuatan dan peringkasan teks, sedangkan model teks-ke-gambar atau gambar-ke-teks akan lebih diarahkan pada analisis gambar dan tugas pembuatan.
- ukuran LLM โ Ukuran FM diukur dengan jumlah parameter model yang dimiliki model tertentu, biasanya dalam miliaran untuk LLM modern. Biasanya, semakin besar modelnya, semakin mahal biaya pelatihan awalnya atau kemudian penyempurnaannya. Di sisi lain, secara umum, untuk arsitektur model yang sama, semakin besar modelnya, semakin cerdas model tersebut dalam menjalankan jenis tugas yang diarahkan.
- kinerja LLM โ Biasanya, semakin besar modelnya, semakin banyak waktu yang dibutuhkan untuk menghasilkan output, dengan asumsi Anda menggunakan parameter komputasi dan I/O yang sama (ukuran prompt dan output). Selain itu, untuk ukuran model yang sama, performa sangat dipengaruhi oleh seberapa optimal prompt Anda, ukuran token I/O, serta kejelasan dan sintaksis prompt. Perintah yang dirancang dengan baik, bersama dengan ukuran token I/O yang dioptimalkan, dapat meningkatkan waktu respons model.
Oleh karena itu, saat mengoptimalkan tugas Anda, pertimbangkan praktik terbaik berikut:
- Pilih model yang sesuai untuk tugas yang ada
- Pilih ukuran model terkecil yang dapat menghasilkan akurasi yang Anda cari
- Optimalkan struktur prompt Anda dan berikan instruksi sespesifik mungkin dengan cara yang mudah dipahami oleh model
- Gunakan perintah masukan terkecil yang dapat memberikan instruksi dan konteks yang cukup untuk menghasilkan tingkat akurasi yang Anda cari
- Batasi ukuran keluaran ke ukuran terkecil yang dapat berarti bagi Anda dan memenuhi kebutuhan keluaran Anda
Dengan mempertimbangkan pemilihan model dan faktor pengoptimalan kinerja, kami berupaya mengoptimalkan kasus penggunaan pembuatan SQL. Setelah beberapa pengujian, kami menyadari bahwa, asalkan kami memiliki konteks dan instruksi yang tepat, Claude Instant, dengan data cepat yang sama, akan menghasilkan kualitas SQL yang sebanding dengan Claude V2 dengan kinerja dan harga yang jauh lebih baik. Hal ini berlaku jika masukan pengguna bersifat lebih langsung dan sederhana. Untuk input yang lebih canggih, Claude V2 diperlukan untuk menghasilkan akurasi yang diinginkan.
Menerapkan logika yang sama pada tugas peringkasan membuat kami menyimpulkan bahwa menggunakan Claude Instant atau Titan Text Express akan menghasilkan akurasi yang diperlukan pada titik performa yang jauh lebih baik dibandingkan jika kami menggunakan model yang lebih besar seperti Claude V2. Titan Text Expressed juga menawarkan kinerja harga yang lebih baik, seperti yang telah kita bahas sebelumnya.
Tantangan orkestrasi
Kami menyadari bahwa ada banyak hal yang harus diatur sebelum kami bisa mendapatkan respons keluaran yang berarti untuk pertanyaan pengguna. Seperti yang ditunjukkan dalam ikhtisar solusi, prosesnya melibatkan beberapa perjalanan database dan beberapa perjalanan LLM yang saling terkait. Jika kami ingin membangun dari awal, kami harus melakukan investasi besar pada pekerjaan berat yang tidak terdiferensiasi hanya untuk menyiapkan kode dasarnya. Kami dengan cepat beralih menggunakan LangChain sebagai kerangka orkestrasi, memanfaatkan kekuatan komunitas open source, dan menggunakan kembali modul yang ada tanpa menciptakan kembali roda.
Tantangan SQL
Kami juga menyadari bahwa menghasilkan SQL tidak sesederhana mekanisme ekstraksi konteks seperti pencarian semantik atau menggunakan embeddings. Pertama-tama kita harus mendapatkan skema database dan beberapa baris contoh untuk disertakan dalam prompt kita ke LLM. Ada juga tahap validasi SQL, di mana kita perlu berinteraksi dengan database dan LLM. SQLDatabaseChain adalah pilihan alat yang jelas. Karena ini adalah bagian dari LangChain, adaptasinya mudah, dan sekarang kami dapat mengelola pembuatan SQL dan verifikasi yang dibantu dengan rantai, sehingga meminimalkan jumlah pekerjaan yang perlu kami lakukan.
Tantangan kinerja
Dengan penggunaan Claude V2, dan setelah rekayasa cepat yang tepat (yang akan kita bahas di bagian selanjutnya), kami dapat menghasilkan SQL berkualitas tinggi. Mempertimbangkan kualitas SQL yang dihasilkan, kami mulai melihat seberapa besar nilai yang sebenarnya ditambahkan pada tahap validasi. Setelah menganalisis hasilnya lebih lanjut, menjadi jelas bahwa kualitas SQL yang dihasilkan akurat secara konsisten sehingga membuat biaya/manfaat penambahan tahap validasi SQL menjadi tidak menguntungkan. Kami akhirnya menghilangkan tahap validasi SQL tanpa berdampak negatif pada kualitas keluaran kami dan mengurangi waktu bolak-balik validasi SQL.
Selain mengoptimalkan LLM yang lebih hemat biaya dan kinerja untuk langkah peringkasan, kami dapat menggunakan Titan Text Express untuk mendapatkan kinerja dan efisiensi biaya yang lebih baik.
Pengoptimalan kinerja lebih lanjut melibatkan penyempurnaan proses pembuatan kueri menggunakan teknik rekayasa cepat yang efisien. Daripada menyediakan token dalam jumlah banyak, fokusnya adalah menyediakan token masukan dalam jumlah paling sedikit, dengan sintaksis yang tepat sehingga model dilatih untuk memahaminya, dan dengan rangkaian instruksi yang minimal namun optimal. Kami membahas hal ini lebih lanjut di bagian selanjutnyaโini adalah topik penting yang dapat diterapkan tidak hanya di sini tetapi juga dalam kasus penggunaan lainnya.
Rekayasa dan optimasi yang cepat
Anda dapat menyesuaikan Claude di Amazon Bedrock untuk berbagai kasus penggunaan bisnis jika teknik rekayasa cepat yang tepat digunakan. Claude terutama bertindak sebagai asisten percakapan yang menggunakan format manusia/asisten. Claude dilatih mengisi teks untuk peran asisten. Mengingat instruksi dan penyelesaian cepat yang diinginkan, kita dapat mengoptimalkan perintah kita untuk Claude menggunakan beberapa teknik.
Kita mulai dengan template prompt yang diformat dengan benar yang memberikan penyelesaian yang valid, lalu kita dapat lebih mengoptimalkan respons dengan bereksperimen dengan prompt dengan berbagai rangkaian masukan yang mewakili data dunia nyata. Disarankan untuk mendapatkan banyak masukan saat mengembangkan templat cepat. Anda juga dapat menggunakan kumpulan data pengembangan cepat dan data pengujian yang terpisah.
Cara lain untuk mengoptimalkan respons Claude adalah dengan bereksperimen dan mengulangi dengan menambahkan aturan, instruksi, dan optimasi yang berguna. Dari pengoptimalan ini, Anda dapat melihat berbagai jenis penyelesaian dengan, misalnya, memberi tahu Claude untuk menyebutkan โSaya tidak tahuโ untuk mencegah halusinasi, berpikir langkah demi langkah, menggunakan rangkaian cepat, memberikan ruang untuk โberpikirโ saat menghasilkan respons , dan memeriksa ulang pemahaman dan keakuratannya.
Mari gunakan tugas pembuatan kueri dan diskusikan beberapa teknik yang kita gunakan untuk mengoptimalkan prompt kita. Ada beberapa elemen inti yang bermanfaat bagi upaya pembuatan kueri kami:
- Menggunakan sintaksis manusia/asisten yang tepat
- Memanfaatkan tag XML (Claude menghormati dan memahami tag XML)
- Menambahkan instruksi yang jelas pada model untuk mencegah halusinasi
Contoh umum berikut menunjukkan bagaimana kita menggunakan sintaksis manusia/asisten, menerapkan tag XML, dan menambahkan instruksi untuk membatasi output ke SQL dan menginstruksikan model untuk mengatakan "maaf, saya tidak dapat membantu" jika tidak dapat menghasilkan SQL yang relevan . Tag XML digunakan untuk membingkai instruksi, petunjuk tambahan, skema database, penjelasan tabel tambahan, dan baris contoh.
Solusi kerja terakhir
Setelah kami mengatasi semua tantangan yang diidentifikasi selama pembuktian konsep, kami telah memenuhi semua persyaratan solusi. Q4 puas dengan kualitas SQL yang dihasilkan oleh LLM. Hal ini berlaku untuk tugas sederhana yang hanya memerlukan klausa WHERE untuk memfilter data, dan juga untuk tugas yang lebih kompleks yang memerlukan agregasi berbasis konteks dengan GROUP BY dan fungsi matematika. Latensi end-to-end dari keseluruhan solusi berada dalam batas yang dapat diterima untuk kasus penggunaanโsatu digit detik. Ini semua berkat pilihan LLM yang optimal di setiap tahap, rekayasa cepat yang tepat, menghilangkan langkah verifikasi SQL, dan penggunaan LLM yang efisien untuk langkah peringkasan (Titan Text Express atau Claude Instant).
Perlu dicatat bahwa menggunakan Amazon Bedrock sebagai layanan yang terkelola sepenuhnya dan kemampuan untuk memiliki akses ke rangkaian LLM melalui API yang sama memungkinkan eksperimen dan peralihan mulus antar LLM dengan mengubah nama model dalam panggilan API. Dengan tingkat fleksibilitas ini, Q4 dapat memilih LLM dengan performa paling tinggi untuk setiap panggilan LLM berdasarkan sifat tugasnya, baik pembuatan kueri, verifikasi, atau ringkasan.
Kesimpulan
Tidak ada satu solusi yang cocok untuk semua kasus penggunaan. Dalam pendekatan RAG, kualitas keluaran sangat bergantung pada penyediaan konteks yang tepat. Mengekstrak konteks yang tepat adalah kuncinya, dan setiap kumpulan data memiliki karakteristik uniknya sendiri-sendiri.
Dalam postingan ini, kami menunjukkan bahwa untuk kumpulan data numerik dan terstruktur, menggunakan SQL untuk mengekstrak konteks yang digunakan untuk augmentasi dapat memberikan hasil yang lebih baik. Kami juga menunjukkan bahwa kerangka kerja seperti LangChain dapat meminimalkan upaya pengkodean. Selain itu, kami membahas kebutuhan untuk dapat beralih antar LLM dalam kasus penggunaan yang sama untuk mencapai akurasi, kinerja, dan biaya yang paling optimal. Terakhir, kami menyoroti bagaimana Amazon Bedrock, tanpa server dan dengan beragam LLM, memberikan fleksibilitas yang diperlukan untuk membangun aplikasi yang aman, berperforma tinggi, dan hemat biaya dengan beban berat paling sedikit.
Mulailah perjalanan Anda dalam membangun aplikasi generatif yang mendukung AI dengan mengidentifikasi kasus penggunaan yang bernilai bagi bisnis Anda. Pembuatan SQL, seperti yang dipelajari oleh tim Q4, dapat menjadi pengubah permainan dalam membangun aplikasi cerdas yang terintegrasi dengan penyimpanan data Anda, sehingga membuka potensi pendapatan.
Tentang penulis
Penjinak Soliman adalah Arsitek Solusi Senior di AWS. Dia membantu pelanggan Vendor Perangkat Lunak Independen (ISV) berinovasi, membangun, dan menskalakan di AWS. Dia memiliki lebih dari dua dekade pengalaman industri dalam bidang konsultasi, pelatihan, dan layanan profesional. Dia adalah penemu multi paten dengan tiga paten yang diberikan dan pengalamannya mencakup berbagai domain teknologi termasuk telekomunikasi, jaringan, integrasi aplikasi, AI/ML, dan penerapan cloud. Dia berspesialisasi dalam Jaringan AWS dan memiliki minat yang besar terhadap pembelajaran mesin, AI, dan AI Generatif.
Mani Khanuja adalah Pimpinan Teknologi โ Spesialis AI Generatif, penulis buku โ Pembelajaran Mesin Terapan dan Komputasi Kinerja Tinggi di AWS, dan anggota Dewan Direksi Wanita di Dewan Yayasan Pendidikan Manufaktur. Dia memimpin proyek pembelajaran mesin (ML) di berbagai domain seperti visi komputer, pemrosesan bahasa alami, dan AI generatif. Dia membantu pelanggan membangun, melatih, dan menerapkan model pembelajaran mesin besar dalam skala besar. Dia berbicara dalam konferensi internal dan eksternal seperti re:Invent, Women in Manufacturing West, webinar YouTube, dan GHC 23. Di waktu luangnya, dia suka berjalan-jalan di sepanjang pantai.
Stanislav Yeshchenko adalah Arsitek Perangkat Lunak di Q4 Inc.. Ia memiliki lebih dari satu dekade pengalaman industri dalam pengembangan perangkat lunak dan arsitektur sistem. Latar belakangnya yang beragam dan mencakup peran seperti Pimpinan Teknis dan Senior Full Stack Developer, memperkuat kontribusinya dalam memajukan inovasi Platform Q4. Stanislav berdedikasi untuk mendorong inovasi teknis dan membentuk solusi strategis di lapangan.
- Konten Bertenaga SEO & Distribusi PR. Dapatkan Amplifikasi Hari Ini.
- PlatoData.Jaringan Vertikal Generatif Ai. Berdayakan Diri Anda. Akses Di Sini.
- PlatoAiStream. Intelijen Web3. Pengetahuan Diperkuat. Akses Di Sini.
- PlatoESG. Karbon, teknologi bersih, energi, Lingkungan Hidup, Tenaga surya, Penanganan limbah. Akses Di Sini.
- PlatoHealth. Kecerdasan Uji Coba Biotek dan Klinis. Akses Di Sini.
- Sumber: https://aws.amazon.com/blogs/machine-learning/how-q4-inc-used-amazon-bedrock-rag-and-sqldatabasechain-to-address-numerical-and-structured-dataset-challenges-building-their-qa-chatbot/
- :memiliki
- :adalah
- :bukan
- :Di mana
- $NAIK
- 100
- 118
- 125
- 15%
- 23
- 7
- a
- kemampuan
- kemampuan
- Sanggup
- abstraksi
- kelimpahan
- diterima
- mengakses
- dapat diakses
- Akun
- ketepatan
- tepat
- Mencapai
- di seluruh
- tindakan
- sebenarnya
- menyesuaikan
- menambahkan
- menambahkan
- tambahan
- Tambahan
- Selain itu
- tambahan
- alamat
- dialamatkan
- Pengaturan
- maju
- maju
- Keuntungan
- Setelah
- terhadap
- agen
- agregat
- AI
- Layanan AI
- saya menggunakan kasus
- AI / ML
- ditujukan
- meluruskan
- selaras
- Semua
- mengizinkan
- diizinkan
- sepanjang
- juga
- Meskipun
- am
- Amazon
- Amazon Web Services
- jumlah
- jumlah
- an
- analisis
- Analis
- analisis
- menganalisa
- menganalisis
- dan
- Lain
- menjawab
- jawaban
- Antropik
- Apa pun
- apa saja
- api
- Lebah
- berlaku
- Aplikasi
- aplikasi
- terapan
- pendekatan
- arsitektur
- ADALAH
- AS
- meminta
- Aktiva
- Asisten
- dibantu
- bermacam-macam
- At
- menambah
- ditambah
- penulis
- tersedia
- sadar
- AWS
- kembali
- latar belakang
- berdasarkan
- dasar
- BE
- Pantai
- menjadi
- karena
- menjadi
- sebelum
- Awal
- laku
- makhluk
- diyakini
- bermanfaat
- TERBAIK
- Praktik Terbaik
- Lebih baik
- antara
- miliaran
- Memblokir
- Blok
- papan
- direksi
- Book
- Bot
- kedua
- luasnya
- Istirahat
- luas
- membangun
- Bangunan
- membangun
- dibangun di
- bisnis
- tapi
- by
- panggilan
- datang
- CAN
- Bisa Dapatkan
- kemampuan
- kemampuan
- modal
- Pasar modal
- yang
- kasus
- kasus
- rantai
- rantai
- menantang
- tantangan
- tantangan membangun
- perubahan
- Changer
- mengubah
- karakteristik
- ChatBot
- chatbots
- pilihan
- Pilih
- memilih
- kejelasan
- membersihkan
- jelas
- lebih dekat
- awan
- kode
- Pengkodean
- Kolom
- bergabung
- menggabungkan
- bagaimana
- komentar
- secara komersial
- menyampaikan
- Komunikasi
- masyarakat
- Perusahaan
- perusahaan
- sebanding
- penyelesaian
- kompleks
- kompleksitas
- pemenuhan
- komponen
- memahami
- menghitung
- komputer
- Visi Komputer
- komputasi
- konsep
- menyimpulkan
- Disimpulkan
- kesimpulan
- dilakukan
- konferensi
- Terhubung
- Menghubungkan
- koneksi
- Mempertimbangkan
- dianggap
- mengingat
- secara konsisten
- Terdiri dari
- terdiri
- membangun
- konsultasi
- Konten
- konteks
- kontekstual
- terus
- terus menerus
- kontribusi
- konvensional
- percakapan
- konversi
- dikonversi
- koordinasi
- Core
- benar
- Biaya
- bisa
- membuat
- kritis
- CRM
- sangat penting
- pelanggan
- pelanggan
- harian
- data
- Danau Data
- titik data
- privasi data
- Privasi dan Keamanan Data
- ilmu data
- Data-driven
- Basis Data
- kumpulan data
- Tanggal
- dasawarsa
- dekade
- memutuskan
- Memutuskan
- dedicated
- dianggap
- didefinisikan
- Permintaan
- menunjukkan
- menunjukkan
- tergantung
- menyebarkan
- penyebaran
- menggambarkan
- menggambarkan
- diinginkan
- terperinci
- rincian
- ditentukan
- Pengembang
- berkembang
- Pengembangan
- berbeda
- langsung
- langsung
- Direksi
- membahas
- dibahas
- menyelam
- beberapa
- do
- domain
- domain
- Dont
- pemeriksaan ganda
- turun
- penggerak
- dua
- selama
- dinamis
- setiap
- Terdahulu
- Mudah
- ekosistem
- Pendidikan
- Efektif
- efisiensi
- efisien
- efisien
- usaha
- upaya
- antara
- elemen
- kelayakan
- menghilangkan
- muncul
- dipekerjakan
- memungkinkan
- akhir
- ujung ke ujung
- berakhir
- mengikutsertakan
- interaksi
- Teknik
- cukup
- memastikan
- lengkap
- Setara
- ESG
- terutama
- menetapkan
- mengevaluasi
- evaluasi
- Bahkan
- peristiwa
- Setiap
- contoh
- contoh
- ada
- mengharapkan
- diharapkan
- mahal
- pengalaman
- eksperimen
- eksperimen
- ahli
- keahlian
- Dieksplorasi
- ekspres
- menyatakan
- memperpanjang
- luar
- ekstrak
- ekstraksi
- dihadapi
- memfasilitasi
- faktor
- serba cepat
- baik
- layak
- beberapa
- bidang
- Fields
- mengisi
- menyaring
- terakhir
- Akhirnya
- keuangan
- data keuangan
- Pertama
- keluwesan
- aliran
- Fokus
- mengikuti
- berikut
- Untuk
- format
- Depan
- membina
- ditemukan
- Prinsip Dasar
- FRAME
- Kerangka
- kerangka
- Gratis
- dari
- penuh
- Tumpukan Penuh
- sepenuhnya
- fungsionil
- fungsi
- lebih lanjut
- permainan
- game-changer
- GDPR
- Kepatuhan GDPR
- diarahkan
- Umum
- menghasilkan
- dihasilkan
- menghasilkan
- menghasilkan
- generasi
- generatif
- AI generatif
- mendapatkan
- mendapatkan
- Memberikan
- diberikan
- memberikan
- Pemberian
- Go
- tujuan
- Anda
- baik
- diberikan
- besar
- Kelompok
- Pertumbuhan
- memiliki
- tangan
- senang
- Memiliki
- memiliki
- he
- berkantor pusat
- berat
- angkat berat
- membantu
- membantu
- dia
- di sini
- High
- berkinerja tinggi
- berkualitas tinggi
- lebih tinggi
- paling tinggi
- Disorot
- highlight
- sangat
- petunjuk
- -nya
- sejarah
- kap
- Seterpercayaapakah Olymp Trade? Kesimpulan
- Namun
- HTTPS
- manusia
- bisa dibaca manusia
- i
- ide
- diidentifikasi
- mengidentifikasi
- if
- gambar
- Dampak
- dampak
- berdampak
- dampak
- melaksanakan
- implementasi
- implementasi
- diimplementasikan
- implikasi
- penting
- memperbaiki
- in
- Di lain
- Inc
- memasukkan
- Termasuk
- Meningkatkan
- inkremental
- independen
- individu
- industri
- informasi
- Infrastruktur
- mulanya
- mulanya
- berinovasi
- Innovation
- memasukkan
- input
- saat
- lembaga
- instruksi
- mengintegrasikan
- integrasi
- berniat
- berinteraksi
- interaksi
- intern
- terjalin
- ke
- intuitif
- investasi
- investor
- Investor
- terlibat
- penerbit
- isv
- IT
- NYA
- perjalanan
- jpg
- hanya
- Menjaga
- kunci
- Mengetahui
- pengetahuan
- dikenal
- Labs
- danau
- pemandangan
- bahasa
- besar
- lebih besar
- Terakhir
- akhirnya
- Latensi
- kemudian
- lapisan
- memimpin
- terkemuka
- Memimpin
- belajar
- pengetahuan
- paling sedikit
- Dipimpin
- Pelajaran
- Pelajaran
- Tingkat
- pengangkatan
- 'like'
- 'like
- LLM
- logika
- London
- Panjang
- melihat
- mencari
- Lot
- mesin
- Mesin belajar
- terbuat
- Utama
- terutama
- Arus utama
- memelihara
- mempertahankan
- membuat
- MEMBUAT
- mengelola
- berhasil
- pengelolaan
- pabrik
- banyak
- Pasar
- Analisis Pasar
- Data pasar
- pasar
- cocok
- matematis
- Mungkin..
- berarti
- berarti
- mekanisme
- Pelajari
- anggota
- bertemu
- meta
- Metadata
- metode
- Metodologi
- microservices
- minimal
- meminimalkan
- mencampur
- ML
- model
- model
- modern
- Modul
- lebih
- paling
- kebanyakan
- bergerak
- banyak
- multi-
- beberapa
- nama
- asli
- Alam
- Pengolahan Bahasa alami
- Alam
- perlu
- Perlu
- dibutuhkan
- negatif
- jaringan
- New
- NY
- berikutnya
- tidak
- mencatat
- mencatat
- sekarang
- jumlah
- nomor
- tujuan
- Jelas
- of
- lepas
- ditawarkan
- Penawaran
- petugas
- kantor
- sering
- on
- ONE
- hanya
- Buka
- open source
- optimal
- optimasi
- Optimize
- dioptimalkan
- mengoptimalkan
- Opsi
- or
- mengatur
- teknik mengatur musik
- urutan
- asli
- Lainnya
- kami
- keluaran
- lebih
- secara keseluruhan
- ikhtisar
- luar biasa
- sendiri
- dimiliki
- kepemilikan
- parameter
- bagian
- tertentu
- Lulus
- gairah
- paten
- Paten
- path
- Melakukan
- prestasi
- melakukan
- memilih
- potongan-potongan
- Platform
- plato
- Kecerdasan Data Plato
- Data Plato
- Bermain
- Titik
- poin
- positif
- mungkin
- Pos
- potensi
- kekuasaan
- kekuatan
- praktek
- disukai
- menyajikan
- disajikan
- mencegah
- harga pompa cor beton mini
- prinsip-prinsip
- pribadi
- Keamanan dan Privasi
- proses
- pengolahan
- menghasilkan
- Diproduksi
- Produk
- profesional
- mendalam
- proyek
- memprojeksikan
- meminta
- bukti
- bukti konsep
- tepat
- hak milik
- terbukti
- memberikan
- disediakan
- menyediakan
- menyediakan
- publik
- perusahaan publik
- di depan umum
- tujuan
- menempatkan
- Q & A
- kualitas
- query
- pertanyaan
- segera
- tanda kutip
- Peringkat
- agak
- RE
- siap
- dunia nyata
- menyadari
- menerima
- direkomendasikan
- arsip
- referensi
- beregulasi
- hubungan
- hubungan
- relevan
- laporan
- wakil
- mewakili
- merupakan
- membutuhkan
- wajib
- Persyaratan
- sumber
- dihormati
- hormat
- tanggapan
- tanggapan
- membatasi
- Hasil
- pendapatan
- kembali
- meninjau
- benar
- risiko
- Peran
- peran
- Kamar
- bulat
- aturan
- Run
- berjalan
- sama
- puas
- puas dengan
- Save
- mengatakan
- Skalabilitas
- Skala
- Ilmu
- menggaruk
- mulus
- mulus
- Pencarian
- Kedua
- detik
- Bagian
- aman
- keamanan
- melihat
- seleksi
- Penjual
- mengirim
- senior
- rasa
- terpisah
- Seri
- Tanpa Server
- layanan
- Layanan
- set
- set
- beberapa
- membentuk
- pemegang saham
- Pemegang Saham
- dia
- harus
- menunjukkan
- ditunjukkan
- Pertunjukkan
- penting
- Sederhana
- lebih sederhana
- disederhanakan
- menyederhanakan
- menyederhanakan
- tunggal
- Ukuran
- ukuran
- lebih kecil
- pintar
- cerdas
- Perangkat lunak
- pengembangan perangkat lunak
- larutan
- Solusi
- beberapa
- mutakhir
- sumber
- sumber
- ketegangan
- rentang
- Bicara
- spesialis
- spesialisasi
- tertentu
- Secara khusus
- Stabilitas
- tumpukan
- Tahap
- taruhannya
- berdiri
- berdiri
- awal
- mulai
- Mulai
- Pernyataan
- tinggal
- Langkah
- Tangga
- saham
- pasar saham
- tersimpan
- toko
- mudah
- Strategis
- struktur
- tersusun
- Kemudian
- sukses
- berhasil
- seperti itu
- cukup
- cocok
- rangkaian
- meringkaskan
- RINGKASAN
- mendukung
- Mendukung
- pengawasan
- Beralih
- sintaksis
- sistem
- tabel
- disesuaikan
- Mengambil
- diambil
- Dibutuhkan
- pengambilan
- tugas
- tugas
- tim
- tech
- Teknis
- teknik
- Teknologi
- telekomunikasi
- jitu
- Template
- uji
- pengujian
- tes
- teks
- dari
- Terima kasih
- bahwa
- Grafik
- Ibukota
- mereka
- kemudian
- Sana.
- Ini
- mereka
- Pikir
- ini
- tiga
- Melalui
- di seluruh
- waktu
- Seri waktu
- kali
- titan
- untuk
- hari ini
- bersama
- token
- Token
- terlalu
- alat
- alat
- tema
- toronto
- terhadap
- Pelatihan VE
- terlatih
- Pelatihan
- .
- Transaksi
- mengubah
- perjalanan
- benar
- Kepercayaan
- MENGHIDUPKAN
- dua
- mengetik
- jenis
- khas
- tidak mampu
- bawah
- pokok
- memahami
- pemahaman
- mengerti
- dipahami
- unik
- unlocking
- tidak perlu
- us
- menggunakan
- gunakan case
- bekas
- Pengguna
- user-friendly
- menggunakan
- memanfaatkan
- sah
- pengesahan
- nilai
- variasi
- berbagai
- penjaja
- Verifikasi
- diverifikasi
- memeriksa
- sangat
- giat
- View
- maya
- penglihatan
- berjalan
- ingin
- adalah
- Cara..
- we
- jaringan
- layanan web
- Webinars
- Situs Web
- BAIK
- pergi
- adalah
- Barat
- Apa
- Roda
- ketika
- sedangkan
- yang
- sementara
- akan
- dengan
- dalam
- tanpa
- Wanita
- kata
- Kerja
- bekerja
- alur kerja
- kerja
- bernilai
- akan
- menulis
- tulis kode
- XML
- namun
- York
- Kamu
- Anda
- Youtube
- zephyrnet.dll