AI
น้องๆ เคยสงสัยไหมว่าทำไม ChatGPT หรือ Gemini ถึงตอบคำถามได้ฉลาดจัง? บางทีมันก็ตอบได้เหมือนรู้ข้อมูลที่เราไม่ได้ป้อนเข้าไปเลย นั่นแหละครับ RAG หรือ Retrieval Augmented Generation คือเบื้องหลังสำคัญที่ทำให้ AI เก่งขึ้นเยอะมากๆ
RAG เนี่ยเปรียบเหมือนเรามีสมอง AI (พวกโมเดลภาษาขนาดใหญ่) แล้วเราก็มีห้องสมุดขนาดใหญ่ (ฐานข้อมูลความรู้ต่างๆ) เวลา AI จะตอบคำถามอะไร มันจะไปค้นข้อมูลที่เกี่ยวข้องจากห้องสมุดก่อน แล้วค่อยเอามาประกอบร่างกับความรู้เดิมที่มีอยู่ แล้วค่อยตอบเราออกมา
สมัยผมทำร้านเน็ต ผมยังต้องไปหาข้อมูลเองจากหนังสือบ้าง เว็บไซต์บ้าง กว่าจะตอบคำถามลูกค้าได้แต่ละที แต่ RAG มันทำได้เร็วกว่าเยอะ แถมยังแม่นยำกว่าด้วย เพราะมันดึงข้อมูลจากแหล่งที่น่าเชื่อถือมาให้เราเลย
LLM คือหัวใจของ RAG ครับ มันคือ AI ที่ถูกฝึกมาให้เข้าใจภาษาของเรา แล้วสร้างข้อความออกมาได้เหมือนคนจริงๆ พวก ChatGPT, Gemini, Llama 2 อะไรพวกนี้แหละคือ LLM ตัวอย่าง
LLM เก่งในการสร้างข้อความที่ลื่นไหล แต่บางทีมันก็ "มั่ว" ได้เหมือนกัน คือสร้างข้อมูลที่ไม่จริงขึ้นมาได้ (ที่เราเรียกกันว่า hallucination) RAG เลยเข้ามาช่วยแก้ปัญหานี้
อันนี้สำคัญมากครับ ฐานข้อมูล Vector ไม่เหมือนฐานข้อมูลที่เราคุ้นเคยกัน (เช่น MySQL) มันเก็บข้อมูลในรูปแบบของ "Vector" ซึ่งเป็นตัวเลขที่แสดงถึงความหมายของข้อมูลนั้นๆ
สมมติว่าเรามีประโยค "แมวกินปลาทู" กับ "หมากินไก่" สองประโยคนี้จะถูกแปลงเป็น Vector แล้วเก็บไว้ในฐานข้อมูล Vector เวลาเราถามว่า "สัตว์อะไรกินอาหาร" ฐานข้อมูล Vector จะหาประโยคที่ Vector ใกล้เคียงที่สุดกับคำถามของเราออกมา
ยกตัวอย่างง่ายๆ สมัยผมทำร้านเน็ต ผมต้องจำรหัสเกมส์ออนไลน์เยอะมาก แต่ถ้าผมมีฐานข้อมูล Vector ผมแค่พิมพ์ชื่อเกมส์คร่าวๆ มันก็จะหารหัสเกมส์ที่ถูกต้องมาให้เลย
Embedding Models คือตัวแปลงข้อความให้เป็น Vector ครับ มันคือ AI อีกตัวที่ถูกฝึกมาให้เข้าใจความหมายของภาษา แล้วแปลงมันเป็นตัวเลขที่คอมพิวเตอร์เข้าใจได้
พวก OpenAI Embeddings, Sentence Transformers อะไรพวกนี้คือ Embedding Models ที่นิยมใช้กันครับ
การใช้งาน RAG อาจจะดูซับซ้อน แต่จริงๆ แล้วมี Framework หลายตัวที่ช่วยให้เราทำได้ง่ายขึ้น เช่น LangChain, LlamaIndex อะไรพวกนี้
ผมขอแนะนำให้เริ่มจาก Framework เหล่านี้ก่อน เพราะมันมีเครื่องมือและ Library ที่จำเป็นครบครัน แถมยังมี Document และ Tutorial เยอะแยะให้เราศึกษา
ขั้นแรกคือเตรียมข้อมูลที่เราต้องการให้ AI เรียนรู้ ข้อมูลนี้อาจจะเป็นเอกสาร PDF, บทความในเว็บไซต์, หรือข้อมูลในฐานข้อมูลก็ได้
สมัยผมทำร้านเน็ต ผมเคยเจอเคสที่ลูกค้าอยากให้ AI ช่วยตอบคำถามเกี่ยวกับเกมส์ออนไลน์ ผมก็ต้องรวบรวมข้อมูลจาก Wiki เกมส์, Forum, และคู่มือเกมส์ มาใส่ในระบบ
หลังจากที่เรามีข้อมูลแล้ว เราต้องแปลงข้อมูลเหล่านั้นให้เป็น Vector Embeddings โดยใช้ Embedding Models
# ตัวอย่างการใช้ OpenAI Embeddings ใน Python
import openai
openai.api_key = "YOUR_API_KEY"
def create_embeddings(text):
response = openai.Embedding.create(
input=text,
model="text-embedding-ada-002"
)
return response["data"][0]["embedding"]
text = "แมวกินปลาทู"
embeddings = create_embeddings(text)
print(embeddings)
เมื่อเราได้ Vector Embeddings แล้ว เราต้องสร้าง Index เพื่อให้การค้นหาข้อมูลเป็นไปอย่างรวดเร็ว
Framework อย่าง LangChain หรือ LlamaIndex จะมีเครื่องมือช่วยสร้าง Index ให้เราได้ง่ายๆ ครับ
ลองนึกภาพว่าเรามีหนังสือเป็นล้านเล่ม ถ้าเราไม่มีสารบัญ เราจะหาข้อมูลที่เราต้องการเจอไหม? Index ก็เหมือนสารบัญของฐานข้อมูล Vector นั่นแหละครับ
ดูวิดีโอเพิ่มเติมเกี่ยวกับAi Rag Retrieval Augmented Generation:
RAG ไม่ใช่ทางเลือกเดียวในการทำให้ AI ฉลาดขึ้น ยังมีวิธีการอื่นๆ อีก เช่น Fine-tuning แต่ละวิธีก็มีข้อดีข้อเสียแตกต่างกันไป
| วิธีการ | ข้อดี | ข้อเสีย |
|---|---|---|
| RAG (Retrieval Augmented Generation) |
|
|
| Fine-tuning |
|
|
สมัยผมทำร้านเน็ต ผมเคยลองทั้งสองวิธีเลย Fine-tuning เหมาะกับงานที่ต้องการความแม่นยำสูง แต่ RAG เหมาะกับงานที่ต้องการอัปเดตข้อมูลบ่อยๆ
สนใจเรื่อง AI เพิ่มเติม แวะมาอ่านได้ที่ SiamCafe Blog นะครับ
หวังว่าน้องๆ จะเข้าใจ RAG มากขึ้นนะครับ ถ้ามีคำถามอะไร ถามมาได้เลย!
อย่าลืมว่า AI ก็เหมือนเครื่องมือ ถ้าเราใช้มันอย่างถูกต้อง มันก็จะช่วยเราทำงานได้เยอะเลยครับ และอย่าลืมแวะมาอ่านบทความอื่นๆ เกี่ยวกับเทคโนโลยีได้ที่ SiamCafe Blog นะครับ
น้องๆ เคยเจอปัญหาไหม ทำ RAG แล้วมันไม่เวิร์ค? ดึงข้อมูลมาก็ไม่ตรงคำถาม ตอบก็ไม่เคลียร์ สมัยผมทำร้านเน็ตฯ เจอปัญหาแบบนี้บ่อยมาก ลูกค้าถามหาเกม Counter-Strike ดันไปเจอวิธีแก้ Windows Error ซะงั้น
RAG ก็เหมือนร้านเน็ตฯ ยุคแรกๆ ข้อมูลเยอะ แต่จัดระเบียบไม่ดี ค้นหาก็ยาก ฉะนั้น Best Practice สำคัญสุดๆ คือการจัดระเบียบ "เอกสาร" หรือ Knowledge Base ของเราให้ดี
1. Chunking ให้เหมาะสม: การแบ่งเอกสารเป็นชิ้นๆ (chunks) นี่แหละ สำคัญสุดๆ อย่าแบ่งใหญ่เกินไป ถามอะไรก็ไม่เจอ อย่าแบ่งเล็กเกินไป ถามทีไรก็แตกประเด็นไปเรื่อย
สมัยก่อน ผมเคยลองแบ่งตามย่อหน้า ปรากฏว่ามันเวิร์คบ้างไม่เวิร์คบ้าง บางทีย่อหน้าเดียวมันไม่พอที่จะตอบคำถาม ต้องลองปรับขนาด chunk ให้เหมาะกับข้อมูลของเรา
# ตัวอย่างการ chunking ด้วย Python
text = "เนื้อหาเอกสารยาวๆ..."
chunk_size = 200 # ปรับขนาดตามความเหมาะสม
chunks = [text[i:i+chunk_size] for i in range(0, len(text), chunk_size)]
2. Metadata คือเพื่อนแท้: ใส่ข้อมูล Metadata ให้กับเอกสารแต่ละชิ้น เช่น วันที่สร้าง, ผู้เขียน, หมวดหมู่, แท็ก (tags) พวกนี้จะช่วยให้เราค้นหาข้อมูลได้แม่นยำขึ้นเยอะ
คิดซะว่า Metadata คือป้ายบอกทางในร้านเน็ตฯ ถ้าเราติดป้ายบอกหมวดหมู่เกม, โปรแกรม, วิธีแก้ปัญหาคอมฯ ลูกค้าก็จะหาเจอได้ง่ายขึ้น
# ตัวอย่างการใส่ Metadata
document = {
"content": "เนื้อหาเอกสาร",
"metadata": {
"author": "อ.บอม",
"category": "AI",
"tags": ["RAG", "Retrieval Augmented Generation"]
}
}
3. Ranking Algorithm ต้องแม่น: การเลือก Ranking Algorithm ที่ดี มีชัยไปกว่าครึ่ง ลองใช้หลายๆ แบบ แล้ววัดผลดูว่าแบบไหนให้ผลลัพธ์ดีที่สุด
สมัยก่อน ผมเคยลองใช้ทั้ง BM25 และ TF-IDF สุดท้ายก็เลือก BM25 เพราะมันให้ผลลัพธ์ที่ดีกว่าในการค้นหาข้อมูลที่เกี่ยวข้องกับคำถาม
4. Re-ranking คือทีเด็ด: หลังจากได้ผลลัพธ์มาแล้ว อย่าเพิ่งรีบตอบ ลองเอาผลลัพธ์เหล่านั้นมา Re-rank อีกทีด้วย Model ที่ฉลาดขึ้น เพื่อให้ได้คำตอบที่แม่นยำที่สุด
เหมือนเราถามเด็กในร้านเน็ตฯ ว่า "เกมยิงปืนอะไรฮิตสุด?" เด็กมันก็ตอบมา 10 เกม เราก็ต้องเอา 10 เกมนั้นมาถาม "กูเกิ้ล" อีกที ว่าเกมไหนคนเล่นเยอะสุดจริงๆ
หลายปัจจัยเลยน้อง ทั้งข้อมูลไม่ดี, Chunking ไม่เหมาะสม, Metadata ไม่ครบ, Ranking Algorithm ไม่แม่น หรือแม้แต่ Prompt ที่เราใช้ถามมันไม่ดี
เหมาะกับงานที่ต้องการความถูกต้องแม่นยำสูง และมีข้อมูลอ้างอิงที่เชื่อถือได้ เช่น งานวิจัย, งานกฎหมาย, งานด้านการแพทย์ หรือแม้แต่งานบริการลูกค้า
มีหลายตัวให้เลือกเลยน้อง Langchain, LlamaIndex, Haystack แต่ละตัวก็มีข้อดีข้อเสียต่างกัน ลองศึกษาดูว่าตัวไหนเหมาะกับโปรเจกต์เรามากที่สุด
RAG คือเทคนิคที่ช่วยให้ LLM เก่งขึ้น ฉลาดขึ้น ตอบคำถามได้แม่นยำขึ้น แต่ก็ต้องอาศัยความเข้าใจในข้อมูล การจัดระเบียบที่ดี และการเลือกใช้เครื่องมือที่เหมาะสม SiamCafe Blog มีบทความเกี่ยวกับ AI อีกเยอะ ลองเข้าไปอ่านดูนะ
อย่าลืมว่า RAG ก็เหมือนร้านเน็ตฯ ถ้าเราดูแลจัดการดีๆ ลูกค้าก็จะแฮปปี้ iCafeForex ก็เหมือนกัน ถ้าเราลงทุนอย่างมีสติ กำไรก็จะตามมา