16 poin oleh xguru 2024-09-21 | Belum ada komentar. | Bagikan ke WhatsApp
  • Agar model AI berguna dalam konteks tertentu, model tersebut perlu mengakses pengetahuan latar belakang
  • Developer umumnya menggunakan Retrieval-Augmented Generation (RAG) untuk meningkatkan pengetahuan model AI
  • Solusi RAG tradisional sering gagal mengambil informasi yang relevan karena konteks dihilangkan saat informasi dienkode
  • Contextual Retrieval adalah metode yang sangat meningkatkan tahap pengambilan pada RAG, dengan menggunakan dua subteknologi: Contextual Embeddings dan Contextual BM25
  • Metode ini dapat mengurangi tingkat kegagalan pencarian sebesar 49%, dan bila digabungkan dengan reranking dapat menguranginya hingga 67%
  • Developer dapat dengan mudah menerapkan solusi Contextual Retrieval mereka sendiri bersama Claude

Catatan tentang penggunaan prompt panjang

  • Jika basis pengetahuan kurang dari 200.000 token, seluruh basis pengetahuan dapat disertakan dalam prompt yang diberikan ke model
  • Anthropic baru-baru ini merilis prompt caching untuk Claude, sehingga pendekatan ini menjadi jauh lebih cepat dan hemat biaya
  • Saat Knowledge Base menjadi lebih besar, dibutuhkan solusi yang lebih skalabel, dan pada saat itulah Contextual Retrieval diperlukan

Dasar-dasar RAG: skala ke basis pengetahuan besar

  • Untuk basis pengetahuan yang lebih besar dan tidak muat dalam context window, solusi umum yang digunakan adalah RAG
  • RAG memecah basis pengetahuan menjadi chunk teks yang lebih kecil, mengubahnya menjadi vector embedding, lalu menyimpannya dalam basis data vektor agar bisa dicari melalui kemiripan semantik
  • Model embedding sangat baik dalam menangkap relasi semantik, tetapi bisa melewatkan kecocokan persis yang penting
  • BM25 adalah fungsi pemeringkatan yang menggunakan lexical matching untuk menemukan kecocokan kata atau frasa yang persis, dan sangat efektif khususnya untuk kueri yang mengandung pengenal unik atau istilah teknis
  • Solusi RAG dapat mengambil chunk yang paling relevan dengan lebih akurat dengan menggabungkan embedding dan BM25 melalui langkah-langkah berikut:
    • Memecah basis pengetahuan ("corpus" dokumen) menjadi chunk teks yang lebih kecil, biasanya beberapa ratus token atau kurang
    • Membuat encoding TF-IDF dan embedding semantik untuk chunk tersebut
    • Menggunakan BM25 untuk menemukan chunk teratas berdasarkan kecocokan persis
    • Menggunakan embedding untuk menemukan chunk teratas berdasarkan kemiripan semantik
    • Menggabungkan hasil dari (3) dan (4) serta menghapus duplikasi dengan teknik rank fusion
    • Menambahkan K chunk teratas ke dalam prompt untuk menghasilkan respons

Memperkenalkan Contextual Retrieval

  • Dalam RAG tradisional, dokumen dipecah menjadi chunk yang lebih kecil sehingga setiap chunk individual bisa kekurangan konteks yang memadai
  • Contextual Retrieval mengatasi masalah ini dengan menambahkan konteks penjelas spesifik untuk tiap chunk di bagian depan chunk tersebut
  • Claude mendukung implementasi Contextual Retrieval dengan prompt yang menginstruksikan agar konteks singkat per chunk dibuat menggunakan konteks dari keseluruhan dokumen
  • Contextual Retrieval tersedia dengan biaya rendah bersama Claude berkat prompt caching

Peningkatan performa

  • Contextual Embeddings mengurangi tingkat kegagalan pengambilan 20 chunk teratas sebesar 35% (5,7% → 3,7%)
  • Menggabungkan Contextual Embeddings dan Contextual BM25 menurunkan tingkat kegagalan sebesar 49% (5,7% → 2,9%)

Hal yang perlu dipertimbangkan saat implementasi

  • Pertimbangkan cara membagi dokumen menjadi chunk
  • Contextual Retrieval meningkatkan performa pada semua model embedding, tetapi beberapa model dapat memperoleh manfaat lebih besar
  • Prompt umum bekerja dengan baik, tetapi hasil yang lebih baik bisa diperoleh dengan prompt yang disesuaikan untuk domain atau use case tertentu
  • Menambahkan lebih banyak chunk ke context window meningkatkan kemungkinan mencakup informasi yang relevan
  • Selalu jalankan evaluasi untuk memastikan bahwa penyampaian chunk yang telah dikontekstualisasikan serta pembedaan antara konteks dan chunk benar-benar meningkatkan pembuatan respons

Peningkatan performa tambahan dengan reranking

  • Reranking adalah teknik penyaringan yang umum digunakan untuk memastikan hanya chunk yang paling relevan yang diteruskan ke model
  • Lakukan pengambilan awal untuk mengambil chunk teratas yang berpotensi relevan
  • Kirim N chunk teratas dan kueri pengguna ke model reranking
  • Gunakan model reranking untuk memberi skor pada setiap chunk berdasarkan relevansi dan kepentingannya terhadap prompt, lalu pilih K chunk teratas
  • Kirim K chunk teratas ke model sebagai konteks untuk menghasilkan hasil akhir
  • Contextual Embedding dan Contextual BM25 yang telah direranking mengurangi tingkat kegagalan pengambilan 20 chunk teratas sebesar 67% (5,7% → 1,9%)
  • Pertimbangan biaya dan latensi
    • Reranking dapat memengaruhi latensi dan biaya, terutama saat harus mereranking banyak chunk
    • Ada trade-off antara mereranking lebih banyak chunk untuk performa yang lebih baik dan mereranking lebih sedikit untuk latensi serta biaya yang lebih rendah

Kesimpulan

  • Banyak pengujian dilakukan pada berbagai jenis dataset untuk membandingkan beragam kombinasi teknik yang dijelaskan di atas (model embedding, penggunaan BM25, penggunaan pencarian kontekstual, penggunaan reranking, dan total jumlah hasil K teratas yang diambil)
  • Hasilnya adalah sebagai berikut:
    • Embedding + BM25 lebih baik daripada embedding saja
    • Di antara embedding yang diuji, Voyage dan Gemini adalah yang terbaik
    • Mengirim 20 chunk teratas ke model lebih efektif daripada hanya mengirim 10 atau 5 chunk teratas
    • Menambahkan konteks ke chunk secara signifikan meningkatkan akurasi pengambilan
    • Reranking lebih baik daripada tidak melakukan reranking
    • Semua manfaat ini bersifat kumulatif: untuk memaksimalkan peningkatan performa, dapat digabungkan contextual BM25, contextual embedding (dari Voyage atau Gemini) yang melalui tahap reranking, dan menambahkan 20 chunk ke dalam prompt
  • Semua developer yang bekerja dengan Knowledge Base disarankan untuk bereksperimen dengan pendekatan ini menggunakan cookbook yang disediakan dan mencapai tingkat performa baru

Belum ada komentar.

Belum ada komentar.