Kecerdasan buatan

LlamaIndex: Tingkatkan Aplikasi LLM Anda dengan Data Kustom dengan Mudah

mm
LlamaIndex

Model bahasa besar (LLM) seperti seri GPT dari OpenAI telah dilatih pada berbagai data yang dapat diakses secara publik, menunjukkan kemampuan luar biasa dalam generasi teks, ringkasan, menjawab pertanyaan, dan perencanaan. Meskipun kemampuan mereka yang luas, pertanyaan yang sering diajukan adalah tentang integrasi model-model ini dengan data kustom, pribadi, atau milik perusahaan.

Perusahaan dan individu dibanjiri dengan data kustom, sering disimpan dalam berbagai aplikasi seperti Notion, Slack, dan Salesforce, atau disimpan dalam file pribadi. Untuk memanfaatkan LLM untuk data ini, beberapa metode telah diajukan dan dicoba.

Fine-tuning merupakan salah satu pendekatan, yang melibatkan penyesuaian bobot model untuk mengintegrasikan pengetahuan dari dataset tertentu. Namun, proses ini tidak tanpa tantangan. Ini memerlukan upaya besar dalam persiapan data, dipasangkan dengan prosedur optimasi yang sulit, memerlukan tingkat keahlian pembelajaran mesin tertentu. Selain itu, implikasi keuangan dapat signifikan, terutama ketika menangani dataset besar.

Pembelajaran dalam konteks telah muncul sebagai alternatif, yang memprioritaskan penciptaan input dan prompt untuk memberikan LLM dengan konteks yang diperlukan untuk menghasilkan output yang akurat. Pendekatan ini mengurangi kebutuhan untuk pelatihan model yang ekstensif, menawarkan cara yang lebih efisien dan mudah diakses untuk mengintegrasikan data pribadi.

Namun, kelemahan dari pendekatan ini adalah ketergantungannya pada keterampilan dan keahlian pengguna dalam rekayasa prompt. Selain itu, pembelajaran dalam konteks mungkin tidak selalu seakurat atau seandal fine-tuning, terutama ketika menangani data yang sangat spesifik atau teknis. Pemodelan pra-pelatihan pada berbagai teks internet tidak menjamin pemahaman tentang jargon atau konteks tertentu, yang dapat menyebabkan output yang tidak akurat atau tidak relevan. Ini terutama menjadi masalah ketika data pribadi berasal dari domain atau industri khusus.

Lagipula, jumlah konteks yang dapat disediakan dalam satu prompt terbatas, dan kinerja LLM mungkin menurun seiring dengan meningkatnya kompleksitas tugas. Ada juga tantangan privasi dan keamanan data, karena informasi yang disediakan dalam prompt bisa potensial sensitif atau rahasia.

Ketika komunitas menjelajahi teknik-teknik ini, alat seperti LlamaIndex kini mendapatkan perhatian.

Llama Index

Llama Index

Ini dimulai oleh Jerry Liu, seorang ilmuwan peneliti Uber sebelumnya. Sementara bereksperimen dengan GPT-3 musim gugur lalu, Liu menyadari keterbatasan model dalam menangani data pribadi, seperti file pribadi. Pengamatan ini memulai proyek open-source LlamaIndex.

Inisiatif ini telah menarik investor, mengamankan $8,5 juta dalam putaran pendanaan awal baru-baru ini.

LlamaIndex memfasilitasi peningkatan LLM dengan data kustom, menjembatani kesenjangan antara model pra-pelatihan dan kasus penggunaan data kustom. Melalui LlamaIndex, pengguna dapat memanfaatkan data mereka sendiri dengan LLM, membuka kemampuan generasi pengetahuan dan penalaran dengan wawasan pribadi.

Pengguna dapat menyediakan LLM dengan data mereka sendiri secara mulus, menciptakan lingkungan di mana generasi pengetahuan dan penalaran sangat dipersonalisasi dan mendalam. LlamaIndex mengatasi keterbatasan pembelajaran dalam konteks dengan menyediakan platform yang lebih ramah pengguna dan aman untuk interaksi data, memastikan bahwa bahkan mereka dengan keahlian pembelajaran mesin yang terbatas dapat memanfaatkan potensi penuh LLM dengan data pribadi mereka.

Konsep Tingkat Tinggi & Beberapa Wawasan

1. Retrieval Augmented Generation (RAG):

LlamaIndex RAG

LlamaIndex RAG

RAG adalah proses dua langkah yang dirancang untuk menghubungkan LLM dengan data kustom, sehingga meningkatkan kemampuan model untuk menghasilkan respons yang lebih akurat dan terinformasi. Proses ini terdiri dari:

  • Tahap Pengindeksan: Ini adalah fase persiapan di mana dasar untuk pembuatan basis pengetahuan disiapkan.
LlamaIndex INDEXES

LlamaIndex Indexing

  • Tahap Pencarian: Di sini, basis pengetahuan dicari untuk konteks yang relevan untuk membantu LLM dalam menjawab pertanyaan.
LlamaIndex QUERY STAGE

LlamaIndex Query Stage

Perjalanan Pengindeksan dengan LlamaIndex:

  • Koneksi Data: Bayangkan koneksi data sebagai “paspor” data Anda ke LlamaIndex. Mereka membantu mengimpor data dari berbagai sumber dan format, mengemasnya menjadi representasi “Dokumen” yang sederhana. Koneksi data dapat ditemukan dalam LlamaHub, sebuah repositori open-source yang diisi dengan pengisi data. Pengisi data ini dirancang untuk integrasi yang mudah, memungkinkan pengalaman “pasang dan mainkan” dengan aplikasi LlamaIndex mana pun.
Llama hub

LlamaIndex hub (https://llamahub.ai/)

  • Dokumen / Node: Sebuah Dokumen seperti sebuah tas yang dapat memuat berbagai jenis data—baik itu PDF, output API, atau entri database. Di sisi lain, sebuah Node adalah potongan atau “bagian” dari sebuah Dokumen, diperkaya dengan metadata dan hubungan dengan node lain, memastikan fondasi yang kuat untuk pengambilan data yang presisi nantinya.
  • Indeks Data: Setelah pengimporan data, LlamaIndex membantu mengindeks data ini ke dalam format yang dapat diambil. Di balik layar, ini memotong dokumen mentah menjadi representasi antara, menghitung embedding vektor, dan menyimpulkan metadata. Di antara indeks, ‘VectorStoreIndex’ sering menjadi pilihan yang paling umum.

Jenis Indeks dalam LlamaIndex: Kunci untuk Data Terorganisir

LlamaIndex menawarkan berbagai jenis indeks, masing-masing untuk kebutuhan dan kasus penggunaan yang berbeda. Di inti dari indeks-indeks ini terletak “node” seperti yang telah dibahas sebelumnya. Mari kita coba memahami indeks LlamaIndex dengan mekanisme dan aplikasinya.

1. Indeks Daftar:

  • Mekanisme: Indeks Daftar menyusun node secara berurutan seperti sebuah daftar. Setelah memotong data input menjadi node, mereka disusun dalam cara linear, siap untuk diquery secara berurutan atau melalui kata kunci atau embedding.
  • Kelebihan: Jenis indeks ini bersinar ketika kebutuhan adalah untuk pengqueryan berurutan. LlamaIndex memastikan pemanfaatan data input Anda secara penuh, bahkan jika melebihi batas token LLM, dengan cerdas mengquery teks dari setiap node dan memperbarui jawaban saat menavigasi turun daftar.

2. Indeks Toko Vektor:

  • Mekanisme: Di sini, node bertransformasi menjadi embedding vektor, disimpan baik secara lokal atau dalam database vektor khusus seperti Milvus. Ketika diquery, ini mengambil node yang paling mirip, mengalirkannya ke sintesis respons.
  • Kelebihan: 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 input berkembang menjadi struktur pohon, dibangun dari bawah ke atas dari node daun (potongan data asli). Node induk muncul sebagai ringkasan dari node daun, dibuat menggunakan GPT. Selama pengqueryan, indeks pohon dapat menavigasi dari node akar ke node daun atau mengonstruksi respons langsung dari node daun yang dipilih.
  • Kelebihan: Dengan Indeks Pohon, pengqueryan potongan teks panjang menjadi lebih efisien, dan pengambilan informasi dari berbagai segmen teks disederhanakan.

4. Indeks Kata Kunci:

  • Mekanisme: Sebuah peta kata kunci ke node membentuk inti dari Indeks Kata Kunci. Ketika diquery, kata kunci dipilih dari query, dan hanya node yang dipetakan yang dibawa ke sorotan.
  • Kelebihan: Ketika Anda memiliki query pengguna yang jelas, Indeks Kata Kunci dapat digunakan. Misalnya, menyaring dokumen kesehatan menjadi lebih efisien ketika hanya fokus pada dokumen yang relevan dengan COVID-19.

Menginstal LlamaIndex

Menginstal LlamaIndex adalah proses yang sederhana. Anda dapat memilih untuk menginstalnya langsung dari Pip atau dari sumber. (Pastikan memiliki python terinstal di sistem Anda atau Anda dapat menggunakan Google Colab)

1. Instalasi dari Pip:

  • Eksekusi perintah berikut:
    pip install llama-index
  • Catatan: Selama instalasi, LlamaIndex mungkin mengunduh dan menyimpan file lokal untuk paket tertentu seperti NLTK dan HuggingFace. Untuk menentukan direktori untuk 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
  • Sekali dikloning, navigasikan ke direktori proyek.
  • Anda memerlukan Poetry untuk mengelola ketergantungan paket.
  • Sekarang, buat lingkungan virtual menggunakan Poetry:
    poetry shell
  • Akhirnya, instal paket inti dengan:
    poetry install

Mengatur Lingkungan Anda untuk LlamaIndex

1. Pengaturan OpenAI:

  • Dengan default, LlamaIndex menggunakan OpenAI gpt-3.5-turbo untuk generasi teks dan text-embedding-ada-002 untuk pengambilan dan embedding.
  • Untuk menggunakan pengaturan ini, Anda memerlukan 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) dasar sesuai dengan kebutuhan proyek Anda. Tergantung pada penyedia LLM Anda, Anda mungkin memerlukan kunci dan token lingkungan tambahan.

2. Pengaturan Lingkungan Lokal:

  • Jika Anda lebih suka tidak menggunakan OpenAI, LlamaIndex secara otomatis beralih ke model lokal – LlamaCPP dan llama2-chat-13B untuk generasi teks, dan BAAI/bge-small-en untuk pengambilan dan embedding.
  • Untuk menggunakan LlamaCPP, ikuti panduan instalasi yang disediakan. Pastikan untuk menginstal paket llama-cpp-python, idealnya dikompilasi untuk mendukung GPU Anda. Pengaturan ini akan menggunakan sekitar 11,5GB memori di seluruh CPU dan GPU.
  • Untuk embedding lokal, eksekusi 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, sesuai dengan kebutuhan dan sumber daya proyek Anda.

Kasus Penggunaan Sederhana: Mengquery Halaman Web dengan LlamaIndex dan OpenAI

Berikut adalah skrip Python sederhana untuk menunjukkan bagaimana Anda dapat mengquery halaman web untuk wawasan tertentu:

!pip install llama-index html2text


<p>import os
from llama_index import VectorStoreIndex, SimpleWebPageReader</p>

<p># Masukkan kunci OpenAI Anda di bawah:
os.environ[&quot;OPENAI_API_KEY&quot;] = &quot;&quot;</p>

<p># URL yang ingin Anda muat ke toko vektor:
url = &quot;http://www.paulgraham.com/fr.html&quot;</p>

<p># Muat URL ke dokumen (bisa beberapa dokumen)
documents = SimpleWebPageReader(html_to_text=True).load_data([url])</p>

<p># Buat toko vektor dari dokumen
index = VectorStoreIndex.from_documents(documents)</p>

<p># Buat mesin query sehingga kita dapat mengajukan pertanyaan:
query_engine = index.as_query_engine()</p>

<p># Ajukan pertanyaan sebanyak yang Anda inginkan terhadap data yang dimuat:
response = query_engine.query(&quot;Apa tiga saran terbaik dari Paul untuk mengumpulkan dana?&quot;)
print(response)
Tiga saran terbaik dari Paul untuk mengumpulkan dana adalah:
1. Mulai dengan angka yang rendah saat pertama kali mengumpulkan dana. Ini memungkinkan fleksibilitas dan meningkatkan kemungkinan mengumpulkan lebih banyak dana dalam jangka panjang.
2. Tuju untuk mencapai profit jika memungkinkan. Memiliki rencana untuk mencapai profit tanpa bergantung pada pendanaan tambahan membuat startup lebih menarik bagi investor.
3. Jangan optimalkan untuk valuasi. Meskipun valuasi penting, itu bukan faktor paling kritis dalam penggalangan dana. Fokus pada mendapatkan dana yang diperlukan dan menemukan investor yang baik sebagai gantinya.
Google Colab Llama Index Notebook

Google Colab Llama Index Notebook

Dengan skrip ini, Anda telah menciptakan alat yang kuat untuk mengekstrak informasi spesifik dari halaman web dengan hanya mengajukan pertanyaan. Ini hanyalah sekilas apa yang dapat dicapai dengan LlamaIndex dan OpenAI ketika mengquery data web.

LlamaIndex vs Langchain: Memilih Berdasarkan Tujuan Anda

Pilihan Anda antara LlamaIndex dan Langchain akan tergantung pada tujuan proyek Anda. Jika Anda ingin mengembangkan alat pencarian cerdas, LlamaIndex adalah pilihan yang solid, 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 instance ChatGPT dan LlamaIndex, tetapi juga memperluas fungsionalitas dengan memungkinkan konstruksi agen multi-tugas. Misalnya, dengan Langchain, Anda dapat membuat agen yang dapat menjalankan kode Python sambil melakukan pencarian Google secara bersamaan. Singkatnya, sementara LlamaIndex unggul dalam penanganan data, Langchain mengatur beberapa alat untuk menyajikan solusi holistik.

LlamaIndex Logo Artwork created using Midjourney

LlamaIndex Logo Artwork created using Midjourney

Saya telah menghabiskan lima tahun terakhir dengan membenamkan diri dalam dunia Machine Learning dan Deep Learning yang menarik. Minat dan keahlian saya telah memimpin saya untuk berkontribusi pada lebih dari 50 proyek rekayasa perangkat lunak yang beragam, dengan fokus khusus pada AI/ML. Rasa ingin tahu saya yang terus-menerus juga telah menarik saya ke arah Natural Language Processing, sebuah bidang yang saya ingin jelajahi lebih lanjut.