LlamaIndex คืออะไร?
ลองนึกภาพว่าคุณมีห้องสมุดขนาดใหญ่ที่มีหนังสือหลายพันเล่ม แต่ไม่มีระบบค้นหา คุณจะหาหนังสือที่ต้องการได้ยังไง? LlamaIndex ก็เปรียบเสมือนระบบค้นหาอัจฉริยะสำหรับเอกสารของคุณนั่นเอง
LlamaIndex เป็นเครื่องมือที่ช่วยให้ AI สามารถเข้าใจและค้นหาข้อมูลในเอกสารของคุณได้อย่างแม่นยำ ไม่ว่าจะเป็น PDF, ไฟล์ข้อความ, หรือข้อมูลจากเว็บไซต์ บทความนี้จะพาคุณเรียนรู้ตั้งแต่ขั้นตอนแรกจนสามารถสร้างระบบค้นหาของตัวเองได้ โดยใช้ บริการ API จาก HolySheep AI ซึ่งมีความเร็วตอบสนองต่ำกว่า 50 มิลลิวินาที และราคาประหยัดกว่าถึง 85% เมื่อเทียบกับบริการอื่น
เตรียมพร้อมก่อนเริ่มต้น
สิ่งที่คุณต้องมี:
- คอมพิวเตอร์ที่ติดตั้ง Python 3.8 ขึ้นไป
- บัญชี API จาก HolySheep AI (สมัครได้ที่ สมัครที่นี่)
- เอกสารที่ต้องการให้ AI ค้นหา (เช่น PDF, TXT หรือไฟล์ Word)
ข้อควรรู้: การใช้งาน API ของ HolySheep AI มีค่าใช้จ่ายตามจำนวนตัวอักษรที่ส่งไปถาม (Prompt) และตัวอักษรที่ได้รับตอบ (Completion) โดยราคาเริ่มต้นที่ $0.42 ต่อล้านตัวอักษรสำหรับโมเดล DeepSeek V3.2 ทำให้คุณสามารถทดลองและเรียนรู้ได้อย่างประหยัด
ขั้นตอนที่ 1: ติดตั้งโปรแกรมที่จำเป็น
เปิดหน้าต่าง Command Prompt หรือ Terminal แล้วพิมพ์คำสั่งต่อไปนี้:
pip install llama-index openai python-dotenv
รอสักครู่จนการติดตั้งเสร็จสมบูรณ์ คุณจะเห็นข้อความแจ้งว่าติดตั้ง package ต่างๆ เรียบร้อยแล้ว
ขั้นตอนที่ 2: ตั้งค่าการเชื่อมต่อ API
สร้างไฟล์ใหม่ชื่อ .env แล้วเขียนข้อมูลดังนี้:
HOLYSHEEP_API_KEY=YOUR_HOLYSHEEP_API_KEY
วิธีการขอ API Key:
- ไปที่เว็บไซต์ HolySheep AI
- คลิกปุ่มสมัครสมาชิก
- กรอกข้อมูลและยืนยันอีเมล
- ไปที่หน้า Dashboard จะเห็น API Key ของคุณ
ขั้นตอนที่ 3: สร้างโปรแกรมแรกของคุณ
สร้างไฟล์ Python ชื่อ search_bot.py แล้วเขียนโค้ดดังนี้:
import os
from llama_index import VectorStoreIndex, SimpleDirectoryReader
from llama_index.llms import OpenAI
from dotenv import load_dotenv
โหลด API Key จากไฟล์ .env
load_dotenv()
ตั้งค่าการเชื่อมต่อกับ HolySheep AI
llm = OpenAI(
model="gpt-4.1",
api_key=os.getenv("HOLYSHEEP_API_KEY"),
api_base="https://api.holysheep.ai/v1"
)
อ่านไฟล์เอกสารจากโฟลเดอร์ documents
documents = SimpleDirectoryReader("./documents").load_data()
สร้างดัชนีสำหรับค้นหา
index = VectorStoreIndex.from_documents(documents)
สร้างระบบถาม-ตอบ
query_engine = index.as_query_engine(llm=llm)
ทดสอบการค้นหา
response = query_engine.query("สรุปเนื้อหาหลักของเอกสารนี้")
print(response)
จากนั้นสร้างโฟลเดอร์ชื่อ documents แล้วใส่ไฟล์เอกสารที่คุณต้องการ (PDF หรือ TXT) ลงไป
ขั้นตอนที่ 4: รันโปรแกรมและทดสอบ
พิมพ์คำสั่งใน Terminal:
python search_bot.py
หากทุกอย่างถูกต้อง คุณจะเห็นคำตอบจาก AI ที่สรุปเนื้อหาจากเอกสารของคุณ นี่คือความมหัศจรรย์ของ LlamaIndex: มันอ่านเอกสารของคุณ เข้าใจเนื้อหา และตอบคำถามได้อย่างแม่นยำ
การปรับแต่งให้ตอบได้หลายรูปแบบ
คุณสามารถสร้างระบบที่ตอบได้หลายแบบ เช่น สรุปสั้น, อธิบายละเอียด, หรือเปรียบเทียบ:
import os
from llama_index import VectorStoreIndex, SimpleDirectoryReader
from llama_index.llms import OpenAI
from llama_index.response.mode import ResponseMode
from dotenv import load_dotenv
load_dotenv()
llm = OpenAI(
model="gpt-4.1",
api_key=os.getenv("HOLYSHEEP_API_KEY"),
api_base="https://api.holysheep.ai/v1"
)
documents = SimpleDirectoryReader("./documents").load_data()
index = VectorStoreIndex.from_documents(documents)
โหมดตอบแบบสั้น
compact_engine = index.as_query_engine(
llm=llm,
response_mode=ResponseMode.COMPACT
)
โหมดตอบแบบละเอียด
detailed_engine = index.as_query_engine(
llm=llm,
response_mode=ResponseMode.TREE_SUMMARIZE
)
ทดสอบทั้งสองแบบ
print("=== แบบสั้น ===")
print(compact_engine.query("ผลิตภัณฑ์นี้มีข้อดีอะไรบ้าง?"))
print("\n=== แบบละเอียด ===")
print(detailed_engine.query("อธิบายรายละเอียดเกี่ยวกับผลิตภัณฑ์นี้"))
การค้นหาจากหลายแหล่งข้อมูล
หากคุณมีข้อมูลจากหลายแหล่ง เช่น เว็บไซต์, ฐานข้อมูล, และไฟล์เอกสาร สามารถรวมกันได้:
import os
from llama_index import VectorStoreIndex
from llama_index.readers import SimpleWebPageReader, BeautifulSoupWebReader
from llama_index.llms import OpenAI
from dotenv import load_dotenv
load_dotenv()
llm = OpenAI(
model="gpt-4.1",
api_key=os.getenv("HOLYSHEEP_API_KEY"),
api_base="https://api.holysheep.ai/v1"
)
อ่านข้อมูลจากเว็บไซต์
web_docs = SimpleWebPageReader().load_data(
["https://example.com/article1", "https://example.com/article2"]
)
รวมข้อมูลและสร้างดัชนี
index = VectorStoreIndex.from_documents(web_docs)
query_engine = index.as_query_engine(llm=llm)
ค้นหาจากทุกแหล่งพร้อมกัน
response = query_engine.query("ข้อมูลอะไรที่เกี่ยวกับการตลาด?")
print(response)
การเก็บดัชนีไว้ใช้งานซ้ำ
แทนที่จะสร้างดัชนีใหม่ทุกครั้ง คุณสามารถบันทึกไว้และโหลดมาใช้ภายหลัง:
import os
import pickle
from llama_index import VectorStoreIndex, SimpleDirectoryReader
from llama_index.llms import OpenAI
from llama_index import StorageContext, load_index_from_storage
from dotenv import load_dotenv
load_dotenv()
llm = OpenAI(
model="gpt-4.1",
api_key=os.getenv("HOLYSHEEP_API_KEY"),
api_base="https://api.holysheep.ai/v1"
)
ตรวจสอบว่ามีดัชนีเก่าหรือไม่
if os.path.exists("./storage"):
# โหลดดัชนีที่บันทึกไว้
storage_context = StorageContext.from_defaults(persist_dir="./storage")
index = load_index_from_storage(storage_context)
print("โหลดดัชนีที่มีอยู่แล้ว")
else:
# สร้างดัชนีใหม่
documents = SimpleDirectoryReader("./documents").load_data()
index = VectorStoreIndex.from_documents(documents)
index.storage_context.persist(persist_dir="./storage")
print("สร้างดัชนีใหม่และบันทึกแล้ว")
ใช้งานดัชนีได้เลย
query_engine = index.as_query_engine(llm=llm)
response = query_engine.query("คำถามของคุณที่นี่")
print(response)
การใช้งานขั้นสูง: กรองผลการค้นหา
บางครั้งคุณต้องการค้นหาเฉพาะบางส่วนของเอกสาร สามารถกำหนดเงื่อนไขได้:
# ค้นหาเฉพาะจากเอกสารที่กำหนด
query_engine = index.as_query_engine(
llm=llm,
similarity_top_k=3 # แสดงเฉพาะ 3 ผลลัพธ์ที่ใกล้เคียงที่สุด
)
response = query_engine.query("ข้อมูลเกี่ยวกับราคา")
print(response)
ข้อผิดพลาดที่พบบ่อยและวิธีแก้ไข
กรณีที่ 1: ได้รับข้อผิดพลาด "AuthenticationError" หรือ "Invalid API Key"
สาเหตุ: API Key ไม่ถูกต้องหรือหมดอายุ
# วิธีแก้ไข: ตรวจสอบว่า API Key ถูกต้อง
เปิดไฟล์ .env แล้วตรวจสอบว่าไม่มีช่องว่างหรืออักขระพิเศษ
ตัวอย่างไฟล์ .env ที่ถูกต้อง:
HOLYSHEEP_API_KEY=sk-holysheep-xxxxxxxxxxxxxx
หากยังไม่ได้ ให้ไปที่ https://www.holysheep.ai/register
เพื่อสร้าง API Key ใหม่
กรณีที่ 2: ได้รับข้อผิดพลาด "No documents found" หรือ "Directory not found"
สาเหตุ: โฟลเดอร์ documents ไม่มีอยู่หรือไม่มีไฟล์ที่รองรับ
# วิธีแก้ไข: สร้างโฟลเดอร์และใส่ไฟล์ที่รองรับ
1. สร้างโฟลเดอร์
import os
os.makedirs("./documents", exist_ok=True