MulaiMulai sekarang secara gratis

Menyiapkan dokumen dan basis data vektor

Dalam beberapa latihan berikutnya, Anda akan membangun alur kerja RAG lengkap untuk melakukan percakapan dengan dokumen PDF yang berisi makalah berjudul RAG VS Fine-Tuning: Pipelines, Tradeoffs, and a Case Study on Agriculture oleh Balaguer dkk. (2024). Ini bekerja dengan membagi dokumen menjadi potongan-potongan kecil, menyimpannya dalam basis data vektor, mendefinisikan prompt untuk menghubungkan dokumen yang diambil dengan masukan pengguna, dan membangun rantai retrieval agar LLM dapat mengakses data eksternal ini.

Pada latihan ini, Anda akan menyiapkan dokumen untuk disimpan dan memasukkannya ke dalam basis data vektor Chroma. Anda akan menggunakan RecursiveCharacterTextSplitter untuk memecah PDF menjadi potongan, lalu memasukkannya ke basis data vektor Chroma menggunakan fungsi embeddings OpenAI. Seperti pada bagian lain kursus ini, Anda tidak perlu menyediakan OpenAI API key Anda sendiri.

Kelas-kelas berikut sudah diimpor untuk Anda: RecursiveCharacterTextSplitter, Chroma, dan OpenAIEmbeddings.

Latihan ini adalah bagian dari kursus

Mengembangkan Aplikasi LLM dengan LangChain

Lihat Kursus

Petunjuk latihan

  • Pecah dokumen dalam data menggunakan RecursiveCharacterTextSplitter dengan chunk_size bernilai 300 dan chunk_overlap bernilai 50.
  • Gunakan metode .from_documents() untuk melakukan embedding dan memasukkan dokumen ke basis data vektor Chroma dengan fungsi embeddings OpenAI yang disediakan.
  • Konfigurasikan vectorstore menjadi objek retriever yang mengembalikan 3 dokumen teratas untuk digunakan dalam RAG chain akhir.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

loader = PyPDFLoader('rag_vs_fine_tuning.pdf')
data = loader.load()

# Split the document using RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(
    chunk_size=____,
    chunk_overlap=____)
docs = splitter.split_documents(data) 

# Embed the documents in a persistent Chroma vector database
embedding_function = OpenAIEmbeddings(api_key='', model='text-embedding-3-small')
vectorstore = Chroma.____(
    docs,
    embedding=embedding_function,
    persist_directory=os.getcwd()
)

# Configure the vector store as a retriever
retriever = vectorstore.as_retriever(
    search_type="similarity",
    search_kwargs={"k": ____}
)
Edit dan Jalankan Kode