0Pricing
AI Agents · บทเรียน

บอตถามตอบบนเอกสารของคุณ

สร้างบอต RAG ที่ใช้งานได้จริง: นำเข้า PDF สร้าง Embedding ค้นหา และสร้างคำตอบ ซึ่งเป็นเสมือนบทเรียน 'hello world' ของเอเจนต์ใช้งานจริง

บอตถามตอบบนเอกสารของคุณ เป็นบทเรียน AI Agents ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Agents และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน

บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ

เป้าหมายโครงการ

สร้างแชตบอตที่ตอบคำถามจากเอกสารของคุณเอง (PDF, Markdown และอื่น ๆ) นี่คือโปรเจกต์พื้นฐานสำหรับเอเจนต์ที่ใช้งานจริง และมีประโยชน์ทันทีสำหรับทุกทีม

สถาปัตยกรรม

  1. นำเข้า: โหลดเอกสาร -> แบ่งเป็นส่วน -> สร้างเวกเตอร์ฝัง -> จัดเก็บในฐานข้อมูลเวกเตอร์
  2. ค้นหา: สร้างเวกเตอร์ฝังจากคำถาม -> ดึงส่วนที่มีอันดับสูงสุดจำนวน K ส่วน -> ใส่ในพรอมต์ -> LLM
  3. อ้างอิงแหล่งที่มา: จัดรูปแบบส่วนต่าง ๆ พร้อมรหัส แล้วขอให้ LLM ใส่การอ้างอิง

Step 1: Load and Chunk

from langchain.text_splitter import RecursiveCharacterTextSplitter
from pypdf import PdfReader

text = ''
for page in PdfReader('handbook.pdf').pages:
    text += page.extract_text() + '\n'

splitter = RecursiveCharacterTextSplitter(chunk_size=800, chunk_overlap=100)
chunks = splitter.split_text(text)
print(f'{len(chunks)} chunks')

Step 2: Embed and Store

import chromadb
from openai import OpenAI

oai = OpenAI()
chroma = chromadb.PersistentClient(path='./db')
collection = chroma.get_or_create_collection('handbook')

resp = oai.embeddings.create(model='text-embedding-3-small', input=chunks)
vectors = [d.embedding for d in resp.data]
collection.add(ids=[f'c{i}' for i in range(len(chunks))], embeddings=vectors, documents=chunks)

Step 3: Query Function

def query(question, k=4):
    qvec = oai.embeddings.create(model='text-embedding-3-small', input=question).data[0].embedding
    res = collection.query(query_embeddings=[qvec], n_results=k)
    return res['documents'][0]

Step 4: Build the Prompt

def make_prompt(question, chunks):
    context = '\n\n'.join(f'[{i+1}] {c}' for i, c in enumerate(chunks))
    return f'''
Using only the context below, answer the question.
If the answer is not present, say so.
Cite the source like [1], [2], etc.

Context:
{context}

Question: {question}
Answer:
'''

print(make_prompt("What is the return policy?", ["Returns accepted within 30 days.", "Item must be unused."]))

Step 5: Generate

def answer(question):
    chunks = query(question)
    prompt = make_prompt(question, chunks)
    response = oai.chat.completions.create(
        model='gpt-4o-mini',
        messages=[{'role': 'user', 'content': prompt}],
        temperature=0,
    )
    return response.choices[0].message.content

print(answer('What is our refund policy?'))

เชื่อมต่อเข้ากับส่วนติดต่อผู้ใช้

ห่อหุ้มไว้ใน FastAPI พร้อมหน้า HTML แบบเรียบง่าย (หรือ Streamlit) แล้วคุณก็จะมีแอปที่ใช้งานได้

# pip install fastapi uvicorn
from fastapi import FastAPI
app = FastAPI()

@app.post('/ask')
def ask(payload: dict):
    return {'answer': answer(payload['question'])}

เพิ่มประวัติการสนทนา

สำหรับการถามตอบหลายรอบ ให้เก็บข้อความไว้แล้วส่งเข้าไปในพรอมต์:

messages = [{'role': 'system', 'content': 'You are a doc Q&A assistant.'}]

def chat(user_input):
    messages.append({'role': 'user', 'content': user_input})
    chunks = query(user_input)
    context_msg = {'role': 'system', 'content': f'Context:\n{chr(10).join(chunks)}'}
    response = oai.chat.completions.create(
        model='gpt-4o-mini',
        messages=[messages[0], context_msg] + messages[1:]
    )
    answer = response.choices[0].message.content
    messages.append({'role': 'assistant', 'content': answer})
    return answer

ข้อผิดพลาดที่พบบ่อย

  • ส่วนต่าง ๆ ใหญ่หรือเล็กเกินไป — ลองใช้ 500–800 โทเค็น
  • ไม่มีการอ้างอิงแหล่งที่มา — ผู้ใช้จะไม่เชื่อถือคำตอบที่ไม่มีการอ้างอิง
  • K ใหญ่เกินไป — สิ้นเปลืองโทเค็นและทำให้ความสนใจเจือจาง
  • สร้างเวกเตอร์ฝังจากคำถาม WHOLE รวมทั้งประวัติการสนทนา — ให้สร้างเวกเตอร์ฝังเฉพาะคำถามล่าสุดของผู้ใช้

เพิ่มลิงก์แหล่งที่มา

จัดเก็บ URL ของแหล่งที่มาไว้ในข้อมูลเมทาดาทา แล้วแสดงในคำตอบ:

metadata = [{'source': 'handbook.pdf', 'page': i} for i in range(len(chunks))]
# In the prompt, include 'source: <url>' so the LLM can produce clickable references.

ประเมินระบบ

รวบรวมคำถามจริงจากผู้ใช้ 20 ข้อ ตรวจสอบด้วยตนเองว่าแชตบอตตอบได้ถูกต้องหรือไม่ แล้วใช้ชุดนี้เป็นชุดเริ่มต้นสำหรับการประเมิน

นำไปใช้งานและปรับปรุงซ้ำ

เมื่อใช้งานจริง แชตบอตนี้ตอบคำถามทั่วไปได้ 80% ให้ปรับปรุงโดยอิงจาก 20% ที่ตอบผิด — โดยปกติคุณจะต้องแบ่งส่วนให้ดีขึ้นหรือจัดอันดับใหม่

การอ้างอิงแหล่งที่มา

เหตุใดจึงควรใส่รหัสแหล่งที่มาในพรอมต์และขอให้ LLM อ้างอิง

สรุป

บอต RAG ในโค้ดประมาณ 50 บรรทัด นำไปใช้งาน ประเมินผล และปรับปรุงการแบ่งส่วนกับการค้นคืน รูปแบบนี้ใช้ซ้ำได้ในแอปเอเจนต์นับไม่ถ้วน

คำถามที่พบบ่อย

บทเรียน “บอตถามตอบบนเอกสารของคุณ” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “บอตถามตอบบนเอกสารของคุณ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Agents ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “บอตถามตอบบนเอกสารของคุณ”

สร้างบอต RAG ที่ใช้งานได้จริง: นำเข้า PDF สร้าง Embedding ค้นหา และสร้างคำตอบ ซึ่งเป็นเสมือนบทเรียน 'hello world' ของเอเจนต์ใช้งานจริง คุณปฏิบัติ AI Agents ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Agents หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Agents บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “บอตถามตอบบนเอกสารของคุณ” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน AI Agents นี้ได้ไหม

ได้ บทเรียน AI Agents ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. บอตถามตอบบนเอกสารของคุณ
  2. เอเจนต์อธิบายโค้ด
  3. เอเจนต์วิจัยผ่านเว็บ
  4. ผู้ช่วย SQL สำหรับ DB ของคุณ
← กลับไปที่ AI Agents