Kecerdasan Buatan
LlamaIndex: Tingkatkan Aplikasi LLM Anda dengan Data Khusus dengan Mudah
Model bahasa besar (LLM) seperti seri GPT OpenAI telah dilatih pada beragam data yang dapat diakses publik, menunjukkan kemampuan luar biasa dalam pembuatan teks, peringkasan, menjawab pertanyaan, dan perencanaan. Terlepas dari keserbagunaannya, pertanyaan yang sering diajukan berkisar pada integrasi sempurna model-model ini dengan data khusus, pribadi, atau kepemilikan.
Bisnis dan individu dibanjiri dengan data unik dan khusus, sering kali disimpan di berbagai aplikasi seperti Notion, Slack, dan Salesforce, atau disimpan dalam file pribadi. Untuk memanfaatkan LLM untuk data spesifik ini, beberapa metodologi telah diusulkan dan diujicobakan.
Mencari setelan mewakili salah satu pendekatan tersebut, yang terdiri dari penyesuaian bobot model untuk menggabungkan pengetahuan dari kumpulan data tertentu. Namun, proses ini bukannya tanpa tantangan. Hal ini memerlukan upaya besar dalam persiapan data, ditambah dengan prosedur pengoptimalan yang sulit, sehingga memerlukan keahlian pembelajaran mesin pada tingkat tertentu. Selain itu, implikasi finansialnya bisa sangat signifikan, terutama ketika menangani kumpulan data yang besar.
Pembelajaran dalam konteks telah muncul sebagai alternatif, memprioritaskan penyusunan masukan dan petunjuk untuk memberikan LLM konteks yang diperlukan untuk menghasilkan keluaran yang akurat. Pendekatan ini mengurangi kebutuhan akan pelatihan ulang model yang ekstensif, menawarkan cara yang lebih efisien dan mudah diakses untuk mengintegrasikan data pribadi.
Namun kelemahannya adalah ketergantungannya pada keterampilan dan keahlian pengguna di dalamnya rekayasa cepat. Selain itu, pembelajaran dalam konteks mungkin tidak selalu tepat atau dapat diandalkan seperti penyesuaian, terutama ketika berhadapan dengan data yang sangat terspesialisasi atau teknis. Pra-pelatihan model mengenai berbagai teks internet tidak menjamin pemahaman tentang jargon atau konteks tertentu, sehingga dapat menghasilkan keluaran yang tidak akurat atau tidak relevan. Hal ini menjadi masalah terutama jika data pribadi berasal dari domain atau industri khusus.
Selain itu, jumlah konteks yang dapat diberikan dalam satu perintah terbatas, dan kinerja LLM dapat menurun seiring dengan meningkatnya kompleksitas tugas. Ada juga tantangan privasi dan keamanan data, karena informasi yang diberikan dalam perintah tersebut berpotensi bersifat sensitif atau rahasia.
Saat komunitas mengeksplorasi teknik-teknik ini, alat-alat seperti Indeks Llama kini mendapat perhatian.
Itu dimulai oleh Jerry Liu, mantan ilmuwan riset Uber. Saat bereksperimen dengan GPT-3 pada musim gugur lalu, Liu memperhatikan keterbatasan model dalam menangani data pribadi, seperti file pribadi. Pengamatan ini menjadi awal dimulainya proyek sumber terbuka LlamaIndex.
Inisiatif ini telah menarik investor dan mengamankan $ 8.5 juta dalam putaran pendanaan awal baru-baru ini.
LlamaIndex memfasilitasi penambahan LLM dengan data khusus, menjembatani kesenjangan antara model terlatih dan kasus penggunaan data khusus. Melalui LlamaIndex, pengguna dapat memanfaatkan data mereka sendiri dengan LLM, membuka pengetahuan dan penalaran dengan wawasan yang dipersonalisasi.
Pengguna dapat dengan mudah memberikan data mereka sendiri kepada LLM, membina lingkungan di mana perolehan pengetahuan dan penalaran sangat dipersonalisasi dan berwawasan luas. LlamaIndex mengatasi keterbatasan pembelajaran dalam konteks dengan menyediakan platform yang lebih ramah pengguna dan aman untuk interaksi data, memastikan bahwa bahkan mereka yang memiliki keahlian pembelajaran mesin terbatas dapat memanfaatkan potensi penuh LLM dengan data pribadi mereka.
Konsep Tingkat Tinggi & beberapa Wawasan
1. Pengambilan Augmented Generation (RAG):
RAG adalah proses dua kali lipat yang dirancang untuk menggabungkan LLM dengan data khusus, sehingga meningkatkan kapasitas model untuk memberikan respons yang lebih tepat dan terinformasi. Prosesnya terdiri dari:
- Tahap Pengindeksan: Ini adalah fase persiapan dimana landasan penciptaan basis pengetahuan diletakkan.
- Tahap Kueri: Di sini, basis pengetahuan dijelajahi untuk mencari konteks yang relevan untuk membantu LLM dalam menjawab pertanyaan.
Perjalanan Pengindeksan dengan LlamaIndex:
- Konektor Data: Bayangkan konektor data sebagai paspor data Anda ke LlamaIndex. Mereka membantu mengimpor data dari berbagai sumber dan format, merangkumnya menjadi representasi 'Dokumen' yang sederhana. Konektor data dapat ditemukan dalam LlamaHub, repositori sumber terbuka yang berisi pemuat data. Loader ini dibuat untuk kemudahan integrasi, memungkinkan pengalaman plug-and-play dengan aplikasi LlamaIndex apa pun.
- Dokumen / Node: Dokumen seperti koper umum yang dapat menampung beragam tipe data—baik itu PDF, keluaran API, atau entri database. Di sisi lain, Node adalah cuplikan atau “potongan” dari Dokumen, yang diperkaya dengan metadata dan hubungan dengan node lain, memastikan landasan yang kuat untuk pengambilan data yang tepat di kemudian hari.
- Indeks Data: Pasca penyerapan data, LlamaIndex membantu mengindeks data ini ke dalam format yang dapat diambil. Di balik layar, ia membedah dokumen mentah menjadi representasi perantara, menghitung penyematan vektor, dan menyimpulkan metadata. Di antara indeks, 'VectorStoreIndex' sering kali menjadi pilihan utama.
Jenis Indeks di LlamaIndex: Kunci Data Terorganisir
LlamaIndex menawarkan berbagai jenis indeks, masing-masing untuk kebutuhan dan kasus penggunaan yang berbeda. Inti dari indeks-indeks ini terdapat “simpul” seperti yang dibahas di atas. Mari kita coba memahami indeks LlamaIndex beserta mekanisme dan penerapannya.
1. Daftar Indeks:
- Mekanisme: Indeks Daftar menyelaraskan node secara berurutan seperti daftar. Setelah data masukan dikelompokkan ke dalam node, data tersebut disusun secara linier, siap untuk dikueri baik secara berurutan atau melalui kata kunci atau penyematan.
- Keuntungan: Jenis indeks ini bersinar ketika diperlukan untuk kueri berurutan. LlamaIndex memastikan pemanfaatan seluruh data masukan Anda, bahkan jika data tersebut melampaui batas token LLM, dengan menanyakan teks secara cerdas dari setiap node dan menyaring jawaban saat menavigasi ke bawah daftar.
2. Indeks Penyimpanan Vektor:
- Mekanisme: Di sini, node diubah menjadi penyematan vektor, disimpan secara lokal atau dalam database vektor khusus milvus. Saat ditanya, ia mengambil top_k node yang paling mirip, menyalurkannya ke penyintesis respons.
- Keuntungan: Jika alur kerja Anda bergantung pada perbandingan teks untuk kesamaan semantik melalui pencarian vektor, indeks ini dapat digunakan.
3. Indeks Pohon:
- Mekanisme: Dalam Indeks Pohon, data masukan berevolusi menjadi struktur pohon, dibangun dari bawah ke atas dari simpul daun (potongan data asli). Node induk muncul sebagai ringkasan dari node daun, dibuat menggunakan GPT. Selama kueri, indeks pohon dapat berpindah dari simpul akar ke simpul daun atau membuat respons langsung dari simpul daun yang dipilih.
- Keuntungan: Dengan Indeks Pohon, membuat kueri potongan teks panjang menjadi lebih efisien, dan mengekstraksi informasi dari berbagai segmen teks menjadi lebih sederhana.
4. Indeks Kata Kunci:
- Mekanisme: Peta kata kunci ke node membentuk inti Indeks Kata Kunci. Saat ditanyakan, kata kunci diambil dari kueri, dan hanya node yang dipetakan yang dijadikan sorotan.
- Keuntungan: Bila Anda memiliki pertanyaan pengguna yang jelas, Indeks Kata Kunci dapat digunakan. Misalnya, memilah-milah dokumen layanan kesehatan menjadi lebih efisien ketika hanya fokus pada dokumen yang berkaitan dengan COVID-19.
Menginstal LlamaIndex
Menginstal LlamaIndex adalah proses yang mudah. Anda dapat memilih untuk menginstalnya langsung dari Pip atau dari sumbernya. (Pastikan python diinstal di sistem Anda atau Anda dapat menggunakan Google Colab)
1. Instalasi dari Pip:
- Jalankan perintah berikut:
pip install llama-index
- Note: Selama instalasi, LlamaIndex dapat mengunduh dan menyimpan file lokal untuk paket tertentu seperti NLTK dan HuggingFace. Untuk menentukan direktori bagi file-file ini, gunakan variabel lingkungan “LLAMA_INDEX_CACHE_DIR”.
2. Instalasi dari Sumber:
- Pertama, kloning repositori LlamaIndex dari GitHub:
git clone https://github.com/jerryjliu/llama_index.git
- Setelah dikloning, navigasikan ke direktori proyek.
- Anda memerlukan Puisi untuk mengelola dependensi paket.
- Sekarang, buat lingkungan virtual menggunakan Puisi:
poetry shell
- Terakhir, instal persyaratan paket inti dengan:
poetry install
Menyiapkan Lingkungan Anda untuk LlamaIndex
1. Pengaturan OpenAI:
- Secara default, LlamaIndex menggunakan OpenAI
gpt-3.5-turbo
untuk pembuatan teks dantext-embedding-ada-002
untuk pengambilan dan penyematan. - Untuk menggunakan pengaturan ini, Anda harus memiliki
OPENAI_API_KEY
. Dapatkan satu dengan mendaftar di situs web OpenAI dan membuat token API baru. - Anda memiliki fleksibilitas untuk menyesuaikan Model Bahasa Besar (LLM) yang mendasarinya sesuai kebutuhan proyek Anda. Bergantung pada penyedia LLM Anda, Anda mungkin memerlukan kunci dan token lingkungan tambahan.
2. Pengaturan Lingkungan Lokal:
- Jika Anda memilih untuk tidak menggunakan OpenAI, LlamaIndex secara otomatis beralih ke model lokal –
LlamaCPP
danllama2-chat-13B
untuk pembuatan teks, danBAAI/bge-small-en
untuk pengambilan dan penyematan. - Untuk menggunakan
LlamaCPP
, ikuti panduan instalasi yang disediakan. Pastikan untuk menginstalllama-cpp-python
paket, idealnya dikompilasi untuk mendukung GPU Anda. Pengaturan ini akan menggunakan sekitar 11.5 GB memori di seluruh CPU dan GPU. - Untuk penyematan lokal, jalankan
pip install sentence-transformers
. Pengaturan lokal ini akan menggunakan sekitar 500MB memori.
Dengan pengaturan ini, Anda dapat menyesuaikan lingkungan Anda untuk memanfaatkan kekuatan OpenAI atau menjalankan model secara lokal, selaras dengan kebutuhan dan sumber daya proyek Anda.
Kasus Penggunaan sederhana: Membuat Kueri Halaman Web dengan LlamaIndex dan OpenAI
Berikut ini skrip Python sederhana untuk menunjukkan bagaimana Anda dapat menanyakan halaman web untuk mendapatkan wawasan spesifik:
!pip install llama-index html2text
import os from llama_index import VectorStoreIndex, SimpleWebPageReader # Enter your OpenAI key below: os.environ["OPENAI_API_KEY"] = "" # URL you want to load into your vector store here: url = "http://www.paulgraham.com/fr.html" # Load the URL into documents (multiple documents possible) documents = SimpleWebPageReader(html_to_text=True).load_data([url]) # Create vector store from documents index = VectorStoreIndex.from_documents(documents) # Create query engine so we can ask it questions: query_engine = index.as_query_engine() # Ask as many questions as you want against the loaded data: response = query_engine.query("What are the 3 best advise by Paul to raise money?") print(response)
The three best pieces of advice by Paul to raise money are: 1. Start with a low number when initially raising money. This allows for flexibility and increases the chances of raising more funds in the long run. 2. Aim to be profitable if possible. Having a plan to reach profitability without relying on additional funding makes the startup more attractive to investors. 3. Don't optimize for valuation. While valuation is important, it is not the most crucial factor in fundraising. Focus on getting the necessary funds and finding good investors instead.
Dengan skrip ini, Anda telah membuat alat yang ampuh untuk mengekstrak informasi spesifik dari halaman web hanya dengan mengajukan pertanyaan. Ini hanyalah sekilas tentang apa yang dapat dicapai dengan LlamaIndex dan OpenAI saat menanyakan data web.
LlamaIndex vs Langchain: Memilih Berdasarkan Tujuan Anda
Pilihan Anda antara LlamaIndex dan rantai langka akan tergantung pada tujuan proyek Anda. Jika Anda ingin mengembangkan alat pencarian cerdas, LlamaIndex adalah pilihan yang tepat, unggul sebagai mekanisme penyimpanan cerdas untuk pengambilan data. Di sisi lain, jika Anda ingin membuat sistem seperti ChatGPT dengan kemampuan plugin, Langchain adalah pilihan Anda. Ini tidak hanya memfasilitasi beberapa contoh ChatGPT dan LlamaIndex tetapi juga memperluas fungsionalitas dengan memungkinkan pembangunan agen multi-tugas. Misalnya, dengan Langchain, Anda dapat membuat agen yang mampu mengeksekusi kode Python sambil melakukan pencarian Google secara bersamaan. Singkatnya, meskipun LlamaIndex unggul dalam penanganan data, Langchain mengatur berbagai alat untuk memberikan solusi holistik.