ในยุคที่ข้อมูลท่วมท้น การมีระบบที่ตอบคำถามจากเอกสารของคุณอัตโนมัติเป็นเรื่องที่ต้องมี บทความนี้จะพาคุณสร้างระบบ Knowledge Base Q&A ตั้งแต่เริ่มต้น ไม่ต้องมีความรู้โค้ดดิ้งมาก่อนก็ทำได้
ระบบ Knowledge Base Q&A คืออะไร
ลองนึกภาพว่าคุณมีเอกสารคู่มือองค์กร 100 หน้า แทนที่จะต้องอ่านทั้งหมด ระบบนี้จะช่วยให้คุณถามคำถามเป็นภาษาธรรมชาติ แล้วได้คำตอบที่ถูกต้องพร้อมอ้างอิงจากเอกสารต้นฉบับ
เตรียมพร้อมก่อนเริ่มต้น
- คอมพิวเตอร์ที่ติดตั้ง Python 3.8 ขึ้นไป
- บัญชี สมัครที่นี่ สำหรับใช้งาน Claude Opus 4.7 — ราคาเพียง $0.42/ล้านตัวอักษร ประหยัดกว่า 85%
- เอกสารที่ต้องการให้ระบบเรียนรู้ (รองรับ PDF, TXT, DOCX)
ขั้นตอนที่ 1 — ติดตั้งโปรแกรมที่จำเป็น
เปิดหน้าต่าง Command Prompt (Windows) หรือ Terminal (Mac/Linux) แล้วพิมพ์คำสั่งด้านล่าง
pip install anthropic openai python-dotenv langchain-community pypdf python-docx
รอสักครู่จนติดตั้งเสร็จ จะเห็นข้อความ Successfully installed
ขั้นตอนที่ 2 — สร้างโฟลเดอร์สำหรับโปรเจกต์
สร้างโฟลเดอร์ใหม่ชื่อ knowledge_qa แล้วสร้างไฟล์ .env เพื่อเก็บคีย์ลับ
# สร้างโฟลเดอร์
mkdir knowledge_qa
cd knowledge_qa
สร้างไฟล์ .env
touch .env # Mac/Linux
หรือสร้างไฟล์ .env ด้วย Notepad บน Windows
ขั้นตอนที่ 3 — ตั้งค่า API Key
เปิดไฟล์ .env ที่สร้างไว้ แล้วใส่คีย์ API ของคุณ
HOLYSHEEP_API_KEY=YOUR_HOLYSHEEP_API_KEY
หมายเหตุ: หากยังไม่มีคีย์ ให้ไปที่ สมัครที่นี่ เพื่อรับเครดิตฟรีเมื่อลงทะเบียน ระบบรองรับการชำระเงินผ่าน WeChat และ Alipay
ขั้นตอนที่ 4 — เขียนโค้ดระบบ Knowledge Base
สร้างไฟล์ main.py แล้วคัดลอกโค้ดด้านล่างนี้ไปวาง
import os
from dotenv import load_dotenv
from anthropic import Anthropic
from langchain_community.document_loaders import PyPDFLoader, TextLoader, Docx2txtLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_community.vectorstores import Chroma
from langchain_openai import OpenAIEmbeddings
โหลดคีย์จากไฟล์ .env
load_dotenv()
ตั้งค่า Claude API ผ่าน HolySheep
client = Anthropic(
base_url="https://api.holysheep.ai/v1",
api_key=os.getenv("HOLYSHEEP_API_KEY")
)
def load_documents(folder_path="documents"):
"""โหลดเอกสารทั้งหมดจากโฟลเดอร์"""
documents = []
for file in os.listdir(folder_path):
file_path = os.path.join(folder_path, file)
if file.endswith(".pdf"):
loader = PyPDFLoader(file_path)
elif file.endswith(".txt"):
loader = TextLoader(file_path)
elif file.endswith(".docx"):
loader = Docx2txtLoader(file_path)
else:
continue
documents.extend(loader.load())
return documents
def create_knowledge_base(documents):
"""สร้างฐานความรู้จากเอกสาร"""
# แบ่งเอกสารเป็นส่วนย่อย
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=1000,
chunk_overlap=200
)
chunks = text_splitter.split_documents(documents)
# สร้าง Vector Store (ใช้ OpenAI Embeddings ผ่าน HolySheep)
embeddings = OpenAIEmbeddings(
base_url="https://api.holysheep.ai/v1",
api_key=os.getenv("HOLYSHEEP_API_KEY")
)
vectorstore = Chroma.from_documents(
documents=chunks,
embedding=embeddings,
persist_directory="vector_db"
)
return vectorstore
def ask_question(question, vectorstore, top_k=3):
"""ถามคำถามและรับคำตอบ"""
# ค้นหาเอกสารที่เกี่ยวข้อง
docs = vectorstore.similarity_search(question, k=top_k)
context = "\n\n".join([doc.page_content for doc in docs])
# ส่งคำถามไปยัง Claude
response = client.messages.create(
model="claude-opus-4.7",
max_tokens=1024,
messages=[
{
"role": "user",
"content": f"ตอบคำถามต่อไปนี้โดยอ้างอิงจากเอกสารที่ให้มา:\n\nเอกสาร:\n{context}\n\nคำถาม: {question}"
}
]
)
return response.content[0].text, docs
if __name__ == "__main__":
# สร้างโฟลเดอร์เอกสาร
os.makedirs("documents", exist_ok=True)
# โหลดและสร้างฐานความรู้
print("กำลังโหลดเอกสาร...")
docs = load_documents()
print(f"พบเอกสาร {len(docs)} ฉบับ")
print("กำลังสร้างฐานความรู้...")
vectorstore = create_knowledge_base(docs)
print("พร้อมใช้งานแล้ว!")
# ทดสอบถามคำถาม
while True:
question = input("\nพิมพ์คำถามของคุณ (พิมพ์ 'exit' เพื่อออก): ")
if question.lower() == "exit":
break
answer, sources = ask_question(question, vectorstore)
print(f"\nคำตอบ: {answer}")
print(f"\nแหล่งอ้างอิง: {len(sources)} รายการ")
ขั้นตอนที่ 5 — เพิ่มเอกสารและทดสอบ
วางไฟล์เอกสารที่ต้องการให้ระบบเรียนรู้ไว้ในโฟลเดอร์ documents จากนั้นรันโปรแกรม
# รันโปรแกรม
python main.py
ผลลัพธ์ที่คาดหวัง:
กำลังโหลดเอกสาร...
พบเอกสาร 5 ฉบับ
กำลังสร้างฐานความรู้...
พร้อมใช้งานแล้ว!
#
พิมพ์คำถามของคุณ: นโยบายการลางานเป็นอย่างไร
#
คำตอบ: ตามเอกสารที่ 3 ระบุว่า...
เพิ่มประสิทธิภาพการทำงาน
หากต้องการให้ระบบตอบได้แม่นยำขึ้น สามารถปรับแต่งค่าต่างๆ ได้ดังนี้
- chunk_size: ปรับความยาวของแต่ละส่วน ยิ่งเล็กยิ่งแม่นยำแต่ใช้เนื้อที่มากขึ้น
- top_k: จำนวนเอกสารที่นำมาอ้างอิง ค่าเริ่มต้นคือ 3
- max_tokens: ความยาวสูงสุดของคำตอบ ปรับตามความต้องการ
ข้อผิดพลาดที่พบบ่อยและวิธีแก้ไข
กรณีที่ 1: "API key not found"
สาเหตุ: ไฟล์ .env ไม่ได้อยู่ในตำแหน่งเดียวกับ main.py
# วิธีแก้ไข: ย้ายไฟล์ .env ไปไว้ในโฟลเดอร์เดียวกับ main.py
และตรวจสอบว่าคีย์ถูกต้อง
ตรวจสอบว่าไฟล์ .env อยู่ที่ไหน
ls -la # บน Mac/Linux
dir # บน Windows
กรณีที่ 2: "Rate limit exceeded"
สาเหตุ: ส่งคำขอเร็วเกินไป หรือใช้งานเกินโควต้า
# วิธีแก้ไข: เพิ่ม delay ระหว่างการค้นหา
import time
def ask_question(question, vectorstore, top_k=3):
time.sleep(1) # รอ 1 วินาทีระหว่างคำถาม
# ... โค้ดเดิมต่อ
กรณีที่ 3: ไม่พบเอกสารในโฟลเดอร์
สาเหตุ: ไฟล์เอกสารอยู่ในตำแหน่งผิด หรือไม่ได้สร้างโฟลเดอร์ documents
# วิธีแก้ไข: สร้างโฟลเดอร์ documents และใส่ไฟล์ลงไป
ตรวจสอบว่ามีไฟล์อะไรบ้าง
import os
os.makedirs("documents", exist_ok=True)
print("โฟลเดอร์ documents พร้อมแล้ว วางไฟล์ลงไปได้เลย")
กรณีที่ 4: คำตอบไม่ตรงประเด็น
สาเหตุ: chunk_overlap น้อยเกินไป ทำให้ข้อมูลสูญหาย
# วิธีแก้ไข: เพิ่มค่า chunk_overlap
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=500, # ลดขนาดลง
chunk_overlap=100, # เพิ่ม overlap ขึ้น
length_function=len
)
สรุป
คุณได้เรียนรู้วิธีสร้างระบบถาม-ตอบอัตโนมัติจากเอกสารด้วย Claude Opus 4.7 ผ่าน HolySheep AI โดยใช้งบประมาณเพียง $0.42/ล้านตัวอักษร ระบบตอบสนองได้ภายใน 50 มิลลิวินาที ประหยัดกว่า 85% เมื่อเทียบกับบริการอื่น
ข้อดีหลักของการใช้งานผ่าน HolySheep AI คือ ความเร็วในการตอบสนองที่ต่ำกว่า 50 มิลลิวินาที และราคาที่เป็นมิตรกับนักพัฒนา เหมาะสำหรับผู้ที่ต้องการสร้างระบบ Knowledge Base คุณภาพสูงโดยไม่ต้องลงทุนมาก
👉 สมัคร HolySheep AI — รับเครดิตฟรีเมื่อลงทะเบียน