04. Pengurutan Ulang Konteks Panjang (LongContextReorder)

Pengurutan Ulang Konteks Panjang (LongContextReorder)

Terlepas dari arsitektur model Anda, kinerja akan menurun secara signifikan ketika Anda menyertakan lebih dari 10 dokumen yang diambil.

Sederhananya, ketika model perlu mengakses informasi yang relevan di tengah-tengah konteks yang panjang, model cenderung mengabaikan dokumen yang disediakan.

Untuk informasi lebih lanjut, lihat makalah berikut

Untuk menghindari masalah ini, Anda dapat menyusun ulang dokumen setelah pencarian untuk menghindari penurunan kinerja.

%pip install --upgrade --quiet  sentence-transformers > /dev/null
  • Buat sebuah retriever yang dapat menyimpan dan mengambil data teks menggunakan penyimpanan vektor Chroma.

  • Gunakan metode get_relevant_documents dari retriever untuk mengambil dokumen yang relevan untuk kueri yang diberikan.

from langchain.prompts import PromptTemplate
from langchain_community.document_transformers import LongContextReorder
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import Chroma

# Mendapatkan embedding.
embeddings = OpenAIEmbeddings()

texts = [
    "Ini hanyalah tulisan yang saya tulis sembarangan.",
    "ChatGPT, AI yang dirancang untuk berinteraksi dengan pengguna, dapat menjawab berbagai pertanyaan.",
    "iPhone, iPad, dan MacBook adalah produk andalan yang diluncurkan oleh Apple.",
    "ChatGPT dikembangkan oleh OpenAI dan terus diperbaiki secara berkelanjutan.",
    "ChatGPT telah mempelajari sejumlah besar data untuk memahami pertanyaan pengguna dan menghasilkan jawaban yang sesuai.",
    "Perangkat wearable seperti Apple Watch dan AirPods juga termasuk dalam jajaran produk populer Apple.",
    "ChatGPT dapat digunakan untuk memecahkan masalah kompleks atau mengusulkan ide kreatif.",
    "Bitcoin sering disebut sebagai emas digital dan telah mendapatkan popularitas sebagai sarana penyimpanan nilai.",
    "Fungsi ChatGPT terus berkembang melalui pembelajaran dan pembaruan yang berkelanjutan.",
    "Piala Dunia FIFA diadakan setiap empat tahun sekali dan merupakan acara terbesar dalam sepak bola internasional.",
]

# Membuat retriever. (K diatur menjadi 10)
retriever = Chroma.from_texts(texts, embedding=embeddings).as_retriever(
    search_kwargs={"k": 10}
)

Metode get_relevant_documents meneruskan kueri ke pencari dan mengembalikan hasilnya.

Buat pengurutan ulang, sebuah instance dari kelas LongContextReorder.

  • Panggil reordering.transform_documents(docs) untuk menyusun ulang daftar dokumen dokumen.

  • Dokumen-dokumen disusun ulang sehingga dokumen yang kurang relevan berada di tengah-tengah daftar, dan dokumen yang lebih relevan berada di awal dan akhir.

Menggunakan LongContextReorder untuk membuat chain pertanyaan-jawaban

Keluarkan dokumen yang disusun ulang.

Masukkan kueri yang dimaksud dalam question dan bahasa dalam language.

  • Melihat hasil pencarian untuk dokumen yang disusun ulang.

Cetak jawabannya.

Last updated