3 poin oleh GN⁺ 2024-09-22 | 1 komentar | Bagikan ke WhatsApp

Pengenalan Contextual Retrieval

  • Agar model AI berguna dalam konteks tertentu, model tersebut memerlukan pengetahuan latar belakang
  • Chatbot dukungan pelanggan memerlukan pengetahuan tentang bisnis tertentu, dan bot analisis hukum memerlukan pengetahuan yang sangat luas tentang kasus-kasus sebelumnya
  • Pengembang biasanya menggunakan Retrieval-Augmented Generation (RAG) untuk meningkatkan pengetahuan model AI
  • Solusi RAG tradisional sering gagal menemukan informasi yang relevan karena konteks dihapus saat informasi dikodekan

Metode Contextual Retrieval

  • Contextual Retrieval adalah metode yang secara signifikan meningkatkan tahap pencarian dalam RAG
  • Metode ini menggunakan dua subteknik, yaitu Contextual Embeddings dan Contextual BM25
  • Metode ini mengurangi jumlah kegagalan pencarian sebesar 49%, dan bila dikombinasikan dengan reranking dapat menguranginya hingga 67%
  • Dengan menggunakan Claude, solusi Contextual Retrieval dapat diterapkan dengan mudah

Cukup menggunakan prompt yang lebih panjang

  • Jika basis pengetahuan berukuran 200.000 token atau kurang, memberikan seluruh basis pengetahuan kepada model bisa menjadi pendekatan yang lebih baik
  • Dengan fitur prompt caching Claude, pendekatan ini lebih cepat dan lebih hemat biaya
  • Jika basis pengetahuan semakin besar, dibutuhkan solusi yang lebih skalabel

Konsep dasar RAG

  • RAG digunakan untuk menangani basis pengetahuan yang besar
  • Basis pengetahuan dibagi menjadi potongan-potongan teks kecil, lalu model embedding digunakan untuk mengodekan maknanya
  • Data disimpan di basis data vektor untuk dicari berdasarkan kemiripan semantik
  • BM25 efektif untuk menemukan kecocokan kata atau frasa yang persis

Keterbatasan RAG tradisional

  • Dalam proses membagi dokumen menjadi potongan-potongan kecil, konteks dapat rusak
  • Misalnya, untuk pertanyaan yang mencari informasi keuangan perusahaan tertentu, potongan yang dikembalikan bisa saja tidak memiliki konteks yang memadai

Implementasi Contextual Retrieval

  • Indeks embedding dan BM25 dibuat dengan menambahkan konteks deskriptif ke setiap potongan
  • Claude digunakan untuk membuat konteks singkat bagi setiap potongan
  • Biaya dapat ditekan dengan menggunakan prompt caching

Peningkatan performa

  • Contextual Embeddings mengurangi tingkat kegagalan pencarian sebesar 35%
  • Menggabungkan Contextual Embeddings dan Contextual BM25 mengurangi tingkat kegagalan pencarian sebesar 49%

Pertimbangan implementasi

  • Perlu mempertimbangkan cara membagi dokumen menjadi potongan, pemilihan model embedding, serta prompt kontekstualisasi kustom
  • Menyertakan lebih banyak potongan meningkatkan kemungkinan informasi yang relevan ikut terbawa

Peningkatan performa melalui reranking

  • Reranking meningkatkan kualitas respons dengan hanya meneruskan potongan yang paling relevan ke model
  • Contextual Embedding dan Contextual BM25 yang telah direranking mengurangi tingkat kegagalan pencarian sebesar 67%

Kesimpulan

  • Menggabungkan Embeddings dan BM25 dapat menghasilkan hasil yang lebih baik
  • Embedding Voyage dan Gemini adalah yang paling efektif
  • Meneruskan 20 potongan teratas ke model adalah yang paling efektif
  • Menambahkan konteks secara signifikan meningkatkan akurasi pencarian
  • Reranking semakin meningkatkan performa

Ringkasan GN⁺

  • Contextual Retrieval adalah metode yang dapat secara signifikan meningkatkan akurasi pencarian model AI
  • Metode ini sangat berguna terutama saat menangani basis pengetahuan yang besar
  • Dengan menggunakan fitur prompt caching Claude, metode ini dapat diimplementasikan secara hemat biaya
  • Proyek lain dengan fungsi serupa mencakup GPT-3 dari OpenAI dan BERT dari Google

1 komentar

 
GN⁺ 2024-09-22
Komentar Hacker News
  • Komentar pertama

    • Berbagi pengalaman membangun RAG enterprise untuk lembaga pemerintah
    • Hasil uji A/B menggunakan metrik RAGAS:
      • Pencarian hibrida (semantik + vektor) dan reranking berbasis LLM tidak menunjukkan perubahan besar pada pertanyaan evaluasi sintetis
      • HyDE secara serius menurunkan kualitas jawaban dan pencarian pada pertanyaan evaluasi sintetis
    • Pencarian hibrida selalu berguna, tetapi tidak ada satu metode yang selalu menang
    • Pencarian semantik Azure AI Search cukup efektif bila dipadukan dengan kemiripan vektor
    • Perlu menguji berbagai metode
    • Hal-hal yang akan dicoba berikutnya:
      • RAPTOR
      • SelfRAG
      • Agentic RAG
      • Pemurnian kueri (ekspansi dan subkueri)
      • GraphRAG
    • Pelajaran yang didapat:
      • Harus selalu menggunakan baseline dan eksperimen untuk mencoba membantah hipotesis nol
      • Gunakan tiga jenis pertanyaan/jawaban evaluasi: ditulis oleh pakar, pertanyaan pengguna nyata, pertanyaan sintetis
  • Komentar kedua

    • Menyukai pendekatan yang memanfaatkan prompt caching
    • Berkat caching, biaya prompt turun menjadi 1/10
    • Penghematan biaya dari caching memungkinkan berbagai trik
    • Berbagi catatan tentang contextual search dan prompt caching
  • Komentar ketiga

    • Pendekatan memperluas chunk dasar dengan menggunakan LLM untuk meningkatkan hasil RAG adalah hal yang umum
    • Ekspansi kueri dengan HyDE tidak selalu menghasilkan perbaikan
    • Hal baru dari Anthropic adalah pengenalan prompt caching
    • Prompt caching menghemat biaya dengan menyediakan dokumen panjang sebagai konteks
    • Sangat puas dengan API Cohere
  • Komentar keempat

    • Menggunakan cara membagi dokumen menjadi chunk berdasarkan heading h1, h2, h3, lalu menambahkan header di awal chunk
    • Contoh:
      • Chunk lama: "Dosis umum untuk orang dewasa adalah 1~2 tablet atau kapsul 200mg, 3 kali sehari"
      • Chunk baru: "# Demam ## Pengobatan --- Dosis umum untuk orang dewasa adalah 1~2 tablet atau kapsul 200mg, 3 kali sehari"
    • Cara ini bekerja dengan baik bahkan tanpa LLM
  • Komentar kelima

    • Mengambil posisi menentang teknik ini
    • Embedding vektor bisa terlalu berfokus pada blok teks sebelum baris kosong pertama
    • Pencarian IDF sedikit mengatasinya, tetapi tidak cukup
    • Dengan menggunakan "semantic boost", embedding bisa digeser ke judul, ringkasan, dan sebagainya dalam dokumen
    • Berbagi penjelasan tentang "semantic boost" dari API Trieve
  • Komentar keenam

    • Menggunakan strategi "linked list" agar chunk memiliki beberapa pointer ke item yang dirujuk
    • Dijelaskan sebagai cara setiap komentar menjadi pointer ke posting asli
    • Berbagi contoh teknik ini
  • Komentar ketujuh

    • Klaim bahwa menggunakan 200k token menghasilkan jawaban terbaik pada dataset kecil tidak sesuai dengan pengalaman pribadi
    • Semakin besar prompt, output menjadi tidak konsisten dan semakin sulit mengikuti instruksi
    • Bertanya-tanya apakah orang lain mengalami hal serupa dan apakah ada cara untuk menghindarinya
  • Komentar kedelapan

    • Menghadapi masalah mencari aturan dengan RAG alih-alih mencari pengetahuan
    • Mengusulkan pendekatan melatih classifier kecil untuk menentukan apakah aturan tertentu dapat diterapkan
    • Contoh: menentukan apakah aturan tertentu berlaku dalam game multi-user dungeon
    • Menentukan apakah suatu aturan berlaku adalah masalah yang lebih abstrak dan lebih sulit
    • Sedang mencari cara untuk menyelesaikan masalah ini
  • Komentar kesembilan

    • Jika basis pengetahuan lebih kecil dari 200.000 token (sekitar 500 halaman)
    • Berharap Anthropic merilis tokenizer mereka
  • Komentar kesepuluh

    • Menantikan hari ketika industri AI kembali ke TF-IDF