LanceDB คืออะไร ทำไมต้องสนใจ
สวัสดีครับ ผู้เขียนเชื่อว่าหลายคนกำลังมองหาวิธีสร้างระบบ AI ที่ทำงานบนอุปกรณ์ใกล้ตัวแทนที่จะต้องพึ่งพาเซิร์ฟเวอร์ระยะไกลตลอดเวลา LanceDB เป็นฐานข้อมูลเวกเตอร์ที่ออกแบบมาให้ทำงานได้ทั้งบนคลาวด์และ Edge Device อย่าง Raspberry Pi, NVIDIA Jetson หรือแม้แต่เบราว์เซอร์ ซึ่งจุดเด่นคือความเร็วในการค้นหาที่รวดเร็วมากและใช้พื้นที่น้อย ทำให้เหมาะกับการทำ RAG (Retrieval-Augmented Generation) บนอุปกรณ์ที่มีทรัพยากรจำกัด
ในบทความนี้ ผู้เขียนจะพาทุกคนเริ่มต้นจากศูนย์ ไม่ต้องมีความรู้เรื่อง API หรือฐานข้อมูลมาก่อนก็สามารถทำตามได้ โดยจะใช้ HolySheep AI เป็น API หลักสำหรับสร้าง Embedding เพราะมีความหน่วงต่ำกว่า 50 มิลลิวินาที และราคาประหยัดกว่า 85 เปอร์เซ็นต์เมื่อเทียบกับบริการอื่น
เตรียมเครื่องมือก่อนเริ่มต้น
สิ่งที่ต้องเตรียมมีดังนี้ เครื่องคอมพิวเตอร์ที่ติดตั้ง Python 3.8 ขึ้นไป แนะนำให้ตรวจสอบเวอร์ชันก่อนโดยพิมพ์คำสั่ง python --version หรือ python3 --version ในหน้าต่าง Terminal ถ้ายังไม่มี Python ให้ดาวน์โหลดได้จาก python.org เลือกดาวน์โหลดเวอร์ชันล่าสุดแล้วติดตั้งตามขั้นตอนปกติ จากนั้นติดตั้งแพ็กเกจที่จำเป็น 3 ตัวคือ LanceDB, SentenceTransformers และ OpenAI SDK
ขั้นตอนการติดตั้ง
pip install lancedb sentence-transformers openai
ถ้าใช้ macOS และพบปัญหาอาจต้องใช้ pip3 แทน pip หรือถ้าใช้ conda ก็สามารถใช้ conda install ได้เช่นกัน หลังติดตั้งเสร็จลองทดสอบว่าติดตั้งถูกต้องด้วยคำสั่ง python -c "import lancedb; print('ติดตั้งสำเร็จ')"
สร้างโปรเจกต์แรก: ฐานข้อมูลเวกเตอร์ง่ายๆ
มาเริ่มสร้างฐานข้อมูลเวกเตอร์กันเลย ในตัวอย่างนี้ผู้เขียนจะสร้างฐานข้อมูลที่เก็บข้อมูลบทความเกี่ยวกับการทำอาหาร แล้วค้นหาด้วยคำถามภาษาไทย
from lancedb import connect
import openai
import numpy as np
ตั้งค่า API ของ HolySheep AI
openai.api_key = "YOUR_HOLYSHEEP_API_KEY"
openai.api_base = "https://api.holysheep.ai/v1"
สร้างฟังก์ชันสำหรับสร้าง Embedding
def create_embedding(text):
response = openai.Embedding.create(
model="text-embedding-3-small",
input=text
)
return response["data"][0]["embedding"]
เชื่อมต่อฐานข้อมูล (จะสร้างโฟลเดอร์ recipes_db อัตโนมัติ)
db = connect("./recipes_db")
สร้างตารางสำหรับเก็บข้อมูลสูตรอาหาร
table = db.create_table("recipes", schema={
"id": "int32",
"title": "string",
"content": "string",
"vector": "vector[1536]"
})
print("สร้างฐานข้อมูลเรียบร้อยแล้ว")
จากโค้ดด้านบน เราเริ่มจากการนำเข้าไลบรารีที่จำเป็น จากนั้นตั้งค่าการเชื่อมต่อกับ HolySheep AI โดยใช้ API Key ที่ได้จากการ สมัครสมาชิก จุดสำคัญคือ api_base ต้องเป็น https://api.holysheep.ai/v1 เท่านั้น หลังจากนั้นสร้างฟังก์ชัน create_embedding ที่จะแปลงข้อความให้กลายเป็นตัวเลขมิติสูง (Vector) ซึ่งเป็นหัวใจสำคัญของการค้นหาด้วยความหมาย
เพิ่มข้อมูลและค้นหา
ต่อไปจะเป็นการเพิ่มข้อมูลสูตรอาหารลงในฐานข้อมูล แล้วลองค้นหาด้วยคำถาม
# ข้อมูลตัวอย่าง: สูตรอาหารไทย 5 รายการ
recipes = [
{"id": 1, "title": "ต้มยำกุ้ง", "content": "วิธีทำต้มยำกุ้งน้ำข้น ใช้กุ้งสด พริกเผา ตะไคร้ ข่า ซีอิ๊ว น้ำมะขามเปียก"},
{"id": 2, "title": "แกงเขียวหวาน", "content": "แกงเขียวหวานไก่ ใช้พริกเขียวบด กะทิ ใบโหระพา มะเขือพวก"},
{"id": 3, "title": "ผัดไทย", "content": "ผัดไทยกุนเชียง ใช้เส้นจันท์ เต้าหู้ ไข่ กุ้งแห้ง ถั่วงอก"},
{"id": 4, "title": "ส้มตำ", "content": "ส้มตำปูปลาร้า มีมะละกอ ถั่วฝักยาว พริก มะนาว ปูปลาร้า"},
{"id": 5, "title": "ข้าวเหนียวมะม่วง", "content": "ข้าวเหนียวมะม่วงหอมทอง กะทิ มะม่วงสุก เกลือ"}
]
เพิ่มข้อมูลทีละรายการ
for recipe in recipes:
# สร้าง Vector จากชื่อและเนื้อหา
text_for_embedding = f"{recipe['title']} {recipe['content']}"
vector = create_embedding(text_for_embedding)
# เพิ่มลงในตาราง
table.add([{
"id": recipe["id"],
"title": recipe["title"],
"content": recipe["content"],
"vector": vector
}])
print(f"เพิ่ม: {recipe['title']}")
ค้นหาด้วยคำถาม
query = "อาหารที่ใช้กะทิ"
query_vector = create_embedding(query)
results = table.search(query_vector).limit(3).to_list()
print("\nผลการค้นหา:")
for r in results:
print(f"- {r['title']}: {r['content']}")
ผลลัพธ์จะแสดงรายการอาหารที่เกี่ยวข้องกับคำว่า "อาหารที่ใช้กะทิ" แม้ว่าในคำค้นหาไม่ได้บอกตรงๆ ว่า "แกงเขียวหวาน" แต่ระบบก็เข้าใจว่าแกงเขียวหวานใช้กะทิ จึงแสดงผลขึ้นมา นี่คือพลังของ Vector Search ที่ค้นหาด้วยความหมายไม่ใช่แค่คำที่ตรงกัน
นำไปใช้กับ RAG บน Edge Device
ต่อไปจะเป็นการนำข้อมูลที่ค้นหาได้ไปใช้กับระบบ RAG ที่จะรวมข้อมูลเข้ากับคำตอบจาก AI สำหรับ Edge Device อย่าง Raspberry Pi ผู้เขียนแนะนำให้ใช้โมเดล AI ที่เบาลง เช่น Llama หรือ Gemma แต่สำหรับการสาธิตนี้จะใช้ HolySheep AI ที่มีความหน่วงต่ำมากเพื่อให้เห็นภาพชัด
def rag_answer(question):
# ขั้นตอนที่ 1: ค้นหาข้อมูลที่เกี่ยวข้อง
question_vector = create_embedding(question)
relevant_docs = table.search(question_vector).limit(3).to_list()
# ขั้นตอนที่ 2: สร้างบริบทจากข้อมูลที่ค้นหา
context = "\n".join([f"- {doc['title']}: {doc['content']}" for doc in relevant_docs])
# ขั้นตอนที่ 3: ถาม AI โดยให้อ้างอิงจากบริบท
response = openai.ChatCompletion.create(
model="gpt-4.1",
messages=[
{"role": "system", "content": "คุณเป็นผู้เชี่ยวชาญอาหารไทย ให้ตอบโดยอ้างอิงจากข้อมูลที่ให้มา"},
{"role": "user", "content": f"ข้อมูล:\n{context}\n\nคำถาม: {question}"}
],
temperature=0.7
)
return response["choices"][0]["message"]["content"]
ทดสอบถามคำถาม
question = "มีอาหารไทยที่ใช้ปูปลาร้าบ้างไหม"
answer = rag_answer(question)
print(f"คำถาม: {question}")
print(f"คำตอบ: {answer}")
ฟังก์ชัน RAG ทำงาน 3 ขั้นตอนหลัก ขั้นตอนแรกค้นหาเอกสารที่เกี่ยวข้องจากฐานข้อมูลเวกเตอร์ ขั้นตอนที่สองรวบรวมเอกสารเหล่านั้นเป็นบริบท และขั้นตอนที่สามส่งบริบทพร้อมคำถามไปถาม AI วิธีนี้ทำให้ AI ตอบได้แม่นยำขึ้นเพราะมีข้อมูลอ้างอิง ลดปัญหา AI ตอบสร้างข้อมูลเท็จ (Hallucination) ได้ด้วย
ประหยัดค่าใช้จ่ายด้วย HolySheep AI
หนึ่งในข้อดีของการใช้ HolySheep AI คือค่าใช้จ่ายที่ประหยัดมาก อัตราแลกเปลี่ยนเพียง ¥1 เท่ากับ $1 ซึ่งถูกกว่าบริการอื่นมากกว่า 85 เปอร์เซ็นต์ ราคาเป็นดอลลาร์สหรัฐต่อล้านโทเค็น ดังนี้ GPT-4.1 ราคา $8, Claude Sonnet 4.5 ราคา $15, Gemini 2.5 Flash ราคา $2.50 และ DeepSeek V3.2 ราคาเพียง $0.42 ซึ่ง DeepSeek เหมาะมากสำหรับงานที่ต้องการความเร็วและประหยัด
นอกจากนี้ยังรองรับการชำระเงินผ่าน WeChat และ Al