LlamaIndex adalah kerangka kerja orkestrasi data sumber terbuka untuk membangun aplikasi model bahasa besar (LLM). LlamaIndex tersedia dalam Python dan TypeScript dan memanfaatkan kombinasi alat dan kemampuan yang menyederhanakan proses augmentasi konteks untuk contoh penggunaan AI generatif (gen AI) melalui pipeline Retrieval-Augmented (RAG) .
LlamaIndex memungkinkan pengguna untuk mengkurasi dan mengatur data pribadi atau data khusus mereka melalui integrasi data dan augmentasi konteks.
Augmentasi konteks adalah ketika data diberikan ke jendela konteks LLM, pada dasarnya menambah LLM dengan data pribadi atau eksternal.
LLM sumber terbuka yang banyak digunakan dilatih sebelumnya pada data publik dalam jumlah besar. LLM skala besar ini membantu memecahkan banyak masalah dunia nyata. Namun, mereka membutuhkan banyak waktu dan sumber daya untuk melatih contoh penggunaan tertentu. Selain itu, data internal model hanya diperbarui selama waktu yang dilatih sebelumnya. Bergantung pada modelnya, penambahan konteks diperlukan agar model dapat mencerminkan kesadaran real-time tentang peristiwa terkini.
Model dasar mendapatkan popularitas karena mereka adalah model AI yang fleksibel dan dapat digunakan kembali yang dapat diterapkan ke hampir semua domain atau tugas. Model dasar yang mirip dengan seri IBM Granite™ dilatih pada data yang dikurasi, namun apakah model tersebut dilatih pada kumpulan data yang besar atau model dasar yang telah dilatih sebelumnya, model tersebut kemungkinan perlu dilatih pada sumber eksternal data khusus domain. Proses ini difasilitasi oleh kerangka kerja yang menghubungkan LLM ke data pribadi untuk menyesuaikannya dengan contoh penggunaan atau tujuan keseluruhan aplikasi. Bagian dari tumpukan aplikasi yang memfasilitasi menghubungkan LLM ke sumber data khusus adalah kerangka kerja data seperti LlamaIndex.
Data berasal dari banyak sumber dalam banyak format; bergantung pada kerangka kerja data untuk menyerap, mengubah, dan mengatur data agar dapat digunakan oleh LLM. Data sering kali terisolasi dan tidak terstruktur. Untuk memperoleh dan menyusunnya, kerangka kerja data seperti LlamaIndex, harus menjalankan data melalui proses yang biasa disebut jalur penyerapan.
Setelah data diserap dan diubah ke dalam format yang dapat digunakan LLM, langkah selanjutnya adalah mengubah informasi ke dalam struktur data untuk pengindeksan. Prosedur umum adalah mengubah data tidak terstruktur menjadi penyematan vektor. Proses ini disebut "membuat penyematan" dalam pemrosesan bahasa alami (NLP), tetapi disebut sebagai "pengindeksan" dalam terminologi data.1 Pengindeksan diperlukan karena memungkinkan LLM untuk meminta dan mengambil data yang dicerna oleh indeks vektor. Data dapat diindeks sesuai dengan strategi kueri yang dipilih.
Integrasi data memfasilitasi augmentasi konteks dengan mengintegrasikan data pribadi ke dalam jendela konteks atau "basis pengetahuan" LLM. Panjang jendela konteks model Granite 3B dan 8B IBM baru-baru ini diperpanjang hingga 128.000 token.2 Jendela konteks yang lebih besar memungkinkan model menyimpan lebih banyak teks dalam memori kerjanya, yang meningkatkan kemampuannya untuk melacak detail penting di seluruh percakapan yang diperpanjang, panjang dan berbasis kode. Kemampuan ini memungkinkan chatbot LLM untuk menghasilkan respons yang koheren baik dalam jangka pendek maupun dalam konteks yang lebih luas.
Namun, bahkan dengan jendela konteks yang diperluas, model yang disesuaikan dengan baik dapat menimbulkan biaya yang cukup besar dalam pelatihan dan inferensi. Penyempurnaan model dengan data yang spesifik atau privat membutuhkan transformasi data dan sistem yang mendorong metode pengambilan data yang efisien untuk permintaan LLM. Metodologi RAG dipandang sebagai pilihan yang menjanjikan untuk memfasilitasi pemodelan bahasa konteks panjang.3
RAG adalah salah satu metode yang paling dikenal dan digunakan untuk augmentasi konteks. RAG memungkinkan LLM untuk memanfaatkan basis pengetahuan khusus, sehingga meningkatkan kemampuan LLM untuk memberikan jawaban yang lebih tepat atas pertanyaan.4 Proses augmentasi pengambilan yang khas dilakukan dengan tiga langkah:
Kerangka kerja data seperti LlamaIndex merampingkan proses pemasukan dan pengambilan data dengan menyediakan panggilan API yang komprehensif untuk setiap langkah dalam pola RAG. Proses ini didukung oleh konsep mesin kueri yang memungkinkan pengguna untuk mengajukan pertanyaan atas data mereka. Mengajukan pertanyaan atas data eksternal dan mendorong LLM dengan pengetahuan kontekstual memungkinkan untuk membuat aplikasi LLM yang spesifik untuk domain tertentu.
LlamaIndex menggunakan RAG untuk menambah dan menghubungkan data eksternal ke datapool yang sudah dapat diakses oleh LLM. Aplikasi termasuk mesin kueri, chatbot, dan agen menggunakan teknik RAG untuk menyelesaikan tugas.5
Alur kerja LlamaIndex dapat dipecah menjadi beberapa langkah:
Tujuan dari alur kerja ini adalah untuk membantu menyerap, menyusun, dan memungkinkan LLM mengakses data pribadi atau spesifik domain. Memiliki akses ke data yang lebih relevan memungkinkan LLM merespons prompt dengan lebih akurat, baik untuk membangun chatbot atau mesin kueri.
Penyerapan data atau “pemuatan” adalah langkah pertama untuk menghubungkan sumber data eksternal ke LLM. LlamaIndex mengacu pada penyerapan data sebagai pemuatan data untuk digunakan aplikasi. Sebagian besar data pribadi atau data khusus dapat disimpan dalam format seperti antarmuka pemrograman aplikasi (API), PDF, gambar, database bahasa kueri terstruktur (SQL), dan masih banyak lagi. LlamaIndex dapat memuat lebih dari 160 format data yang berbeda termasuk kumpulan data terstruktur, semiterstruktur, dan tidak terstruktur.
Konektor data, juga dikenal sebagai "pemuat" data, mengambil dan menyerap data dari sumber aslinya. Data yang dikumpulkan diubah menjadi kumpulan data dan metadata. Koleksi ini disebut "Dokumen" di LlamaIndex. Konektor data, atau "Pembaca" di LlamaIndex, menyerap dan memuat berbagai format data. LlamaIndex memiliki fitur pembaca terintegrasi yang mengubah semua file di setiap direktori menjadi dokumen, termasuk Markdown, PDF, Dokumen Word, presentasi PowerPoint, gambar, file audio, dan video.6 Untuk memperhitungkan format data lain yang tidak termasuk dalam fungsionalitas bawaan, konektor data tersedia melalui LlamaHub, sebuah registri pemuat data sumber terbuka. Langkah dalam alur kerja ini membangun basis pengetahuan untuk membentuk indeks atas data sehingga dapat dikueri dan digunakan oleh LLM.
Setelah data dicerna, kerangka kerja data perlu mengubah dan mengatur data ke dalam struktur yang dapat diambil oleh LLM. Indeks data menyusun data menjadi representasi yang dapat digunakan LLM. LlamaIndex menawarkan beberapa jenis indeks berbeda yang melengkapi strategi kueri aplikasi, termasuk: indeks penyimpanan vektor, indeks ringkasan dan indeks grafik pengetahuan.
Setelah data dimuat dan diindeks, data dapat disimpan. LlamaIndex mendukung banyak penyimpanan vektor yang bervariasi dalam arsitektur, kompleksitas, dan biaya. Secara default, LlamaIndex menyimpan semua data yang diindeks hanya dalam memori.
Indeks penyimpanan vektor umumnya digunakan dalam aplikasi LLM mengikuti pola RAG karena unggul dalam menangani kueri bahasa alami. Akurasi pengambilan dari kueri bahasa alami bergantung pada pencarian semantik, atau pencarian berdasarkan makna daripada pencocokan kata kunci.7 Pencarian semantik diaktifkan dengan mengubah data input menjadi penyematan vektor. Penyematan vektor adalah representasi numerik dari semantik data yang dapat diproses oleh LLM. Hubungan matematis antara penyematan vektor memungkinkan LLM untuk mengambil data berdasarkan arti dari istilah kueri untuk respons yang lebih kaya konteks.
`VectorStoreIndex` mengambil kumpulan data atau objek `Document` dan membaginya menjadi `Node` yang merupakan unit data atomik yang mewakili “sebagian” data sumber (`Document`). Setelah kumpulan data dipecah menjadi beberapa bagian, penempatan vektor dari tiap bagian data dibuat. Data terintegrasi sekarang berada dalam format yang memungkinkan LLM menjalankan kueri. Indeks vektor ini dapat disimpan untuk menghindari pengindeksan ulang. Cara paling sederhana untuk menyimpan data adalah dengan menyimpannya ke dalam disk, tetapi LlamaIndex terintegrasi dengan beberapa basis data vektor dan model penyematan.8
Untuk mencari penyematan, kueri pengguna pertama-tama diubah menjadi penyematan vektor. Selanjutnya, proses matematika digunakan untuk memberi peringkat semua penyematan berdasarkan kesamaan semantik mereka dengan kueri.
Indeks penyimpanan vektor menggunakan pengambilan semantik top-k untuk mengembalikan sematan yang paling mirip sebagai potongan teks yang sesuai. LlamaIndex dirancang untuk memfasilitasi pembuatan dan pengelolaan indeks berskala besar untuk pencarian informasi yang efisien.
Langkah terakhir dalam alur kerja adalah implementasi mesin kueri untuk menangani panggilan prompt ke LLM. Kueri terdiri dari tiga tahap yang berbeda, pengambilan, pasca pemrosesan dan sintesis respons. Pengambilan adalah ketika dokumen yang paling relevan diambil dan dikembalikan dari indeks vektor. Pasca pemrosesan adalah ketika potongan embedding atau `Node` yang diambil secara opsional dipasang kembali dengan melakukan pemeringkatan ulang, transformasi atau penyaringan. Sintesis respons adalah ketika data dan prompt yang paling relevan digabungkan dan dikirim ke LLM untuk mengembalikan respons.
Mesin kueri memungkinkan pengguna untuk mengajukan pertanyaan atas data mereka, menerima kueri bahasa alami dan memberikan respons yang kaya konteks.9 Mesin kueri terdiri dari satu atau banyak indeks dan pengambil. Banyak mesin kueri dapat digunakan secara bersamaan untuk kumpulan data dengan beberapa tipe indeks. LlamaIndex menawarkan beberapa mesin kueri berbeda untuk data terstruktur dan semiterstruktur, misalnya mesin kueri JSON untuk mengkueri dokumen JSON.
Agen data adalah agen AI berbasis LLM yang mampu melakukan berbagai tugas pada data, termasuk fungsi membaca dan menulis.10 Agen data LlamaIndex adalah karya pengetahuan yang didukung LLM yang dapat melakukan hal berikut:
Agen AI dapat berinteraksi dengan lingkungan eksternal mereka melalui serangkaian API dan alat. LlamaIndex memiliki dukungan untuk agen Fungsi OpenAI (dibangun di atas OpenAI Function API) dan agen ReAct. Komponen inti dari agen data adalah "lingkaran penalaran" atau paradigma penalaran agen dan "abstraksi alat" yang merupakan alat itu sendiri.
Agen menggunakan loop penalaran,atau paradigma, untuk memecahkan masalah multilangkah. Di LlamaIndex, baik OpenAI Function maupun agen ReAct mengikuti pola yang sama untuk menentukan alat mana yang akan digunakan, serta urutan dan parameter untuk memanggil setiap alat. Pola penalaran disebut ReAct atau penalaran dan tindakan. Proses ini dapat berupa proses pemilihan alat satu langkah yang sederhana atau proses yang lebih kompleks di mana beberapa alat dipilih pada setiap langkah.
Abstraksi alat menguraikan bagaimana alat diakses dan digunakan oleh agen. LlamaIndex menawarkan alat dan ToolSpecs, sebuah kelas Python yang merepresentasikan spesifikasi API lengkap yang dapat digunakan oleh agen untuk berinteraksi. Abstraksi alat dasar mendefinisikan antarmuka umum yang dapat mengambil serangkaian argumen dan mengembalikan kontainer hasil alat generik yang dapat menangkap respons apa pun. LlamaIndex menyediakan abstraksi alat yang membungkus mesin kueri data yang ada dan abstraksi untuk fungsi-fungsi yang dapat digunakan oleh kelas spesifikasi alat.
Spesifikasi alat memungkinkan pengguna untuk menentukan layanan lengkap daripada alat individual yang menangani tugas tertentu. Misalnya, spesifikasi alat Gmail memungkinkan agen untuk membaca dan menyusun email.11 tahun Berikut adalah contoh bagaimana hal itu akan didefinisikan secara kasar:
class GmailToolSpec(BaseToolSpec):Setiap fungsi diubah menjadi alat, menggunakan abstraksi `FunctionTool`.
LlamaIndex memanfaatkan Repositori Alat LlamaHub, yang terdiri dari 15+ Spesifikasi Alat yang dapat digunakan agen untuk berinteraksi. Daftar ini terdiri dari layanan yang dimaksudkan untuk meningkatkan dan memperkaya kemampuan agen untuk melakukan berbagai tindakan. Berikut ini beberapa spesifikasi yang disertakan dalam repositori:
LlamaIndex menawarkan alat utilitas yang dapat menambah kemampuan Alat yang ada termasuk:
LlamaIndex bekerja dengan model dasar sumber terbuka seperti seri IBM Granite™, Llama2, dan OpenAI, dan kerangka kerja LLM lainnya termasuk LangChain dan Ollama. LLM dapat digunakan dengan berbagai cara sebagai modul yang berdiri sendiri atau disambungkan ke modul inti LlamaIndex lainnya.12 LLM juga dapat digunakan untuk mendorong agen AI agar bertindak sebagai pekerja pengetahuan yang mengikuti alur kerja otonom.
LlamaIndex telah memperluas fungsinya untuk menyertakan penggunaan agen AI yang digerakkan oleh LLM untuk bertindak sebagai pekerja pengetahuan. Agen AI LlamaIndex mengikuti pola perilaku ReAct (penalaran dan tindakan). Agen ReAct mengikuti paradigma penalaran yang menginstruksikan agen untuk merencanakan dan menalar sambil secara berulang kali meningkatkan respons. Jenis agen AI ini dapat diartikan sebagai bentuk dorongan rantai pemikiran. Agen dapat menggunakan alat untuk berintegrasi dengan LLM lain. Misalnya, pengumpulan alat penghubung data dan agen LlamaHub.
LlamaIndex menawarkan beberapa contoh penggunaan dalam dokumen mereka dengan tautan ke tutorial.13
Jelajahi pustaka model dasar IBM di portfolio watsonx untuk menskalakan AI generatif untuk bisnis Anda dengan percaya diri.
Gunakan AI di bisnis Anda keahlian AI terdepan di industri dan portofolio solusi dari IBM.
Rancang ulang alur kerja dan operasi yang penting dengan menambahkan AI untuk memaksimalkan pengalaman, pengambilan keputusan secara real-time, dan nilai bisnis.
1 Elena Lowery, “Use Watsonx.Ai with LlamaIndex to Build Rag Applications,” Use Watsonx.ai with LlamaIndex to build RAG applications, 28 Mei, 2024, https://community.ibm.com/community/user/watsonx/blogs/elena-lowery/2024/05/28/use-watsonxai-with-llamaindex-to-build-rag-applica.
2 Matt Stallone et al., “Scaling Granite Code Models to 128K Context,” arXiv.org, 18 Juli 2024, https://arxiv.org/abs/2407.13739.
3 Matt Stallone et al., “Scaling Granite Code Models to 128K Context.”
4 Kim Martineau, “What Is Retrieval-Augmented Generation (Rag)?,” IBM Research, 1 Mei 2024, https://research.ibm.com/blog/retrieval-augmented-generation-RAG.
5 “High-Level Concepts,” LlamaIndex, https://docs.llamaindex.ai/en/stable/getting_started/concepts/.
6 “Loading Data (Ingestion),” LlamaIndex, https://docs.llamaindex.ai/en/stable/understanding/loading/loading/.
7 Elena Lowery, “Use Watsonx.Ai with LlamaIndex to Build Rag Applications.”
8 Elena Lowery, “Use Watsonx.Ai with LlamaIndex to Build Rag Applications.”
9 “Query Engine,” LlamaIndex, https://docs.llamaindex.ai/en/latest/module_guides/deploying/query_engine/.
10 Jerry Liu, “Data Agents,” Medium, July 13, 2023, https://medium.com/llamaindex-blog/data-agents-eed797d7972f.
11 “Google,” LlamaIndex, https://docs.llamaindex.ai/en/stable/api_reference/tools/google/.
12 “Using LLMs,” LlamaIndex, https://docs.llamaindex.ai/en/latest/module_guides/models/llms/.
13 “Use Cases,” LlamaIndex, https://docs.llamaindex.ai/en/latest/use_cases/.
14 “Question-Answering (RAG),” LlamaIndex, https://docs.llamaindex.ai/en/stable/use_cases/q_and_a/.
15 “Agents,” LlamaIndex, https://docs.llamaindex.ai/en/stable/use_cases/agents/.