Menilai kinerja pipeline RAG (Retrieval-Augmented Generation) sangat penting.
Namun, menghasilkan ratusan sampel QA (Question-Context-Answer) secara manual dari dokumen dapat memakan waktu dan tenaga yang banyak. Selain itu, pertanyaan yang dibuat manusia sulit mencapai tingkat kompleksitas yang diperlukan untuk evaluasi yang menyeluruh, yang pada akhirnya dapat mempengaruhi kualitas evaluasi.
Dengan menggunakan pembuatan data sintetis, waktu pengembang dalam proses pengumpulan data dapat dikurangi hingga 90%.
Nama File: ChatGPT:Keuntungan,Risiko,DanPenggunaanBijakDalamEraKecerdasanBuatan.pdf
Harap salin file yang telah diunduh ke folder data untuk praktikum
Pemrosesan awal dokumen
Memuat dokumen.
from langchain_community.document_loaders import PDFPlumberLoader# Membuat pemuat dokumenloader = PDFPlumberLoader("data/ChatGPT:Keuntungan,Risiko,DanPenggunaanBijakDalamEraKecerdasanBuatan.pdf") #sesuaikan path ke file
# Memuat dokumendocs = loader.load()# daftar isi, tidak termasuk halaman akhirdocs = docs[:-3]#sesuaikan dengan halaman pada file# jumlah halaman dalam dokumenlen(docs)
10
Setiap objek dokumen berisi kamus metadata yang dapat digunakan untuk menyimpan informasi tambahan tentang dokumen yang dapat diakses melalui metadata.
Pastikan kamus metadata berisi sebuah kunci bernama filename.
Karena kunci ini akan digunakan dalam proses pembuatan dataset Test. Atribut filename dari metadata digunakan untuk mengidentifikasi potongan-potongan yang termasuk dalam dokumen yang sama.
# atur metadata (filename harus ada)for doc in docs: doc.metadata["filename"]= doc.metadata["source"]
Inisialisasi DocumentStore. Gunakan LLM dan penyematan khusus.
# Menyiapkan pemisah teks.splitter =RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=100)# Bungkus model ChatOpenAI LangChain dengan LangchainLLMWrapper agar kompatibel dengan Ragas.langchain_llm =LangchainLLMWrapper(ChatOpenAI(model="gpt-4o-mini"))# Inisialisasi ekstraktor sintaksis utama. Gunakan LLM yang didefinisikan di atas.keyphrase_extractor =KeyphraseExtractor(llm=langchain_llm)# membuat ragas_embeddingsragas_embeddings =LangchainEmbeddingsWrapper(embeddings)# Inisialisasi InMemoryDocumentStore.# Ini adalah tempat penyimpanan yang menyimpan dan mengelola dokumen dalam memori.docstore =InMemoryDocumentStore( splitter=splitter, embeddings=ragas_embeddings, extractor=keyphrase_extractor,)
multi_context: pertanyaan yang harus mempertimbangkan berbagai konteks
conditional: pertanyaan kondisional
# Tentukan distribusi berdasarkan jenis pertanyaan.# simple: pertanyaan sederhana, reasoning: pertanyaan yang memerlukan penalaran, multi_context: pertanyaan yang harus mempertimbangkan berbagai konteks, conditional: pertanyaan kondisional
distributions ={simple:0.4, reasoning:0.2, multi_context:0.2, conditional:0.2}
documents: Data dokumen
test_size: Jumlah pertanyaan yang akan dibuat
distributions: Distribusi berdasarkan jenis pertanyaan
with_debugging_logs: Apakah akan menampilkan log debugging atau tidak
# membuat set tes# docs: data dokumentasi, 10: jumlah pertanyaan yang akan dibuat, distributions: distribusi berdasarkan jenis pertanyaan, with_debugging_logs: apakah akan menampilkan log debugging
testset = generator.generate_with_langchain_docs( documents=docs, test_size=10, distributions=distributions, with_debugging_logs=True)
# Mengubah test set yang dihasilkan menjadi pandas DataFrametest_df = testset.to_pandas()test_df
question contexts ... metadata episode_done
0 What are the advantages of using ChatGPT in th... [1. Mendeskripsikan keuntungan menggunakan Cha... ... [{'source': 'ragas/data/ChatGPT:Keuntungan,Ris... True
1 What benefits does teknologi kecerdasan buatan... [dari teknologi kecerdasan buatan pada masyara... ... [{'source': 'ragas/data/ChatGPT:Keuntungan,Ris... True
2 What are the advantages and risks associated w... [ChatGPT: Keuntungan, Risiko, Dan Penggunaan B... ... [{'source': 'ragas/data/ChatGPT:Keuntungan,Ris... True
3 What harus dipertimbangkan terkait implikasi s... [Penggunaan Bijak ChatGPT Penggunaan bijak Cha... ... [{'source': 'ragas/data/ChatGPT:Keuntungan,Ris... True
4 What are the links between AI's pros, cons, an... [Prosiding Seminar Nasional Pendidikan, Bahasa... ... [{'source': 'ragas/data/ChatGPT:Keuntungan,Ris... True
5 Langkah apa yang perlu dipahami untuk pengguna... [Oleh karena itu, sumber data yang digunakan o... ... [{'source': 'ragas/data/ChatGPT:Keuntungan,Ris... True
6 What key factors ensure ethical use of ChatGPT... [Prosiding Seminar Nasional Pendidikan, Bahasa... ... [{'source': 'ragas/data/ChatGPT:Keuntungan,Ris... True
7 How to ensure ethical use of ChatGPT in educat... [Oleh karena itu, sumber data yang digunakan o... ... [{'source': 'ragas/data/ChatGPT:Keuntungan,Ris... True
8 What ethical/legal factors matter most for usi... [untuk memproses data secara cepat dan akurat,... ... [{'source': 'ragas/data/ChatGPT:Keuntungan,Ris... True
9 What strategies help reduce risks with ChatGPT... [Penggunaan Bijak ChatGPT Penggunaan bijak Cha... ... [{'source': 'ragas/data/ChatGPT:Keuntungan,Ris... True
[10 rows x 6 columns]
Menyimpan kumpulan data yang disimpan dalam DataFrame sebagai file csv
# mencetak 5 baris teratas dari DataFrametest_df.head()
question contexts ... metadata episode_done
0 What ethical, practical, and societal consider... [manusia, dan meningkatkan efisiensi. Namun, t... ... [{'source': 'ragas/data/ChatGPT:Keuntungan,Ris... True
1 What specific benefits can artificial intellig... [Simpulan\nKeuntungan teknologi kecerdasan bua... ... [{'source': 'ragas/data/ChatGPT:Keuntungan,Ris... True
2 What is the importance of using a representati... [menggunakan dataset yang lebih representatif ... ... [{'source': 'ragas/data/ChatGPT:Keuntungan,Ris... True
3 What should be considered regarding faktor-fak... [untuk memproses data secara cepat dan akurat,... ... [{'source': 'ragas/data/ChatGPT:Keuntungan,Ris... True
4 How do data source credibility and ChatGPT usa... [Oleh karena itu, sumber data yang digunakan o... ... [{'source': 'ragas/data/ChatGPT:Keuntungan,Ris... True
[5 rows x 6 columns]
# Menyimpan DataFrame sebagai file CSVtest_df.to_csv("data/ragas_synthetic_dataset.csv", index=False)