เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

เตรียมเอกสารและ vector database

ในแบบฝึกหัดชุดนี้ คุณจะสร้าง RAG workflow แบบครบวงจรเพื่อสนทนากับเอกสาร PDF ที่เป็นบทความวิจัย RAG VS Fine-Tuning: Pipelines, Tradeoffs, and a Case Study on Agriculture โดย Balaguer et al. (2024) โดยกระบวนการทำงานจะประกอบด้วยการแบ่งเอกสารเป็น chunk, จัดเก็บลงใน vector database, กำหนด prompt เพื่อเชื่อมต่อเอกสารที่ดึงมากับ input ของผู้ใช้ และสร้าง retrieval chain ให้ LLM เข้าถึงข้อมูลภายนอกได้

ในแบบฝึกหัดนี้ คุณจะเตรียมเอกสารเพื่อจัดเก็บ แล้วนำเข้าสู่ Chroma vector database โดยใช้ RecursiveCharacterTextSplitter ในการแบ่ง PDF เป็น chunk จากนั้นนำเข้าด้วยฟังก์ชัน OpenAI embeddings เช่นเดียวกับแบบฝึกหัดอื่น ๆ ในคอร์สนี้ ไม่จำเป็นต้องใช้ OpenAI API key ของคุณเอง

คลาสต่อไปนี้ถูก import ไว้ให้แล้ว: RecursiveCharacterTextSplitter, Chroma และ OpenAIEmbeddings

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การพัฒนาแอปพลิเคชัน LLM ด้วย LangChain

ดูคอร์ส

คำแนะนำการฝึกหัด

  • แบ่งเอกสารใน data โดยใช้ RecursiveCharacterTextSplitter ที่กำหนด chunk_size เป็น 300 และ chunk_overlap เป็น 50
  • ใช้เมธอด .from_documents() เพื่อสร้าง embedding และนำเอกสารเข้าสู่ Chroma vector database ด้วยฟังก์ชัน OpenAI embeddings ที่เตรียมไว้
  • กำหนดค่า vectorstore ให้เป็น retriever object ที่ดึงเอกสารอันดับต้น 3 รายการ เพื่อใช้ใน RAG chain ขั้นสุดท้าย

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

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": ____}
)
แก้ไขและรันโค้ด