AI: RAG

ในยุคที่โมเดลภาษาขนาดใหญ่ (LLMs) เข้ามาปฏิวัติวงการ AI การสร้างระบบที่สามารถตอบคำถามได้อย่างแม่นยำและอ้างอิงข้อเท็จจริงจึงเป็นสิ่งสำคัญอย่างยิ่ง อย่างไรก็ตาม LLMs มีข้อจำกัดเรื่องความรู้ที่ล้าสมัย (Knowledge Cutoff) หรือปัญหาการสร้างข้อมูลที่ไม่เป็นความจริง (Hallucination) ซึ่งทำให้การนำไปใช้ในองค์กรจริงทำได้ยาก

แนวคิดที่เข้ามาแก้ไขปัญหานี้คือ **Retrieval-Augmented Generation (RAG)** ซึ่งเป็นสถาปัตยกรรมขั้นสูงที่ไม่ได้พึ่งพาเพียงแค่ความรู้ที่ถูกฝังอยู่ในตัวโมเดลเท่านั้น แต่จะเพิ่มขั้นตอนการค้นหาข้อมูล (Retrieval) จากฐานความรู้ภายนอกที่เชื่อถือได้ ก่อนนำบริบทเหล่านั้นไปใช้ในการสร้างคำตอบ (Generation) ทำให้ผลลัพธ์ของ AI มีความแม่นยำ เป็นปัจจุบัน และสามารถระบุแหล่งที่มาของข้อมูลได้

หลักการทำงานของ RAG ด้วย PostgreSQL และ Vector Database

หัวใจสำคัญของ RAG คือการเปลี่ยนเอกสารจำนวนมหาศาลให้เป็นรูปแบบที่คอมพิวเตอร์เข้าใจได้ นั่นคือ **เวกเตอร์ (Embeddings)** ซึ่งเป็นชุดตัวเลขที่แทนความหมายของข้อความ จากนั้นเราจะจัดเก็บเวกเตอร์เหล่านี้ไว้ในฐานข้อมูลที่รองรับการค้นหาความคล้ายคลึงทางเวกเตอร์ เช่น PostgreSQL ที่ขยายความสามารถด้วยส่วนขยาย (Extension) อย่าง pgvector

กระบวนการทำงานสามารถจำลองได้ด้วยการใช้คำสั่ง SQL ดังนี้:

SQL

-- 1. สร้างตารางเพื่อเก็บ Chunk ของเอกสารและ Embeddings<br>CREATE TABLE document_chunks (<code><br>  id SERIAL PRIMARY KEY, <br>  text TEXT NOT NULL, <br>  embedding VECTOR(1536) NOT NULL);<br><br>-- 2. การนำเข้าข้อมูล (Indexing) โดยการแปลงเอกสารเป็นเวกเตอร์<br>INSERT INTO document_chunks (text, embedding) VALUES <br>('Apple is a fruit.', '[0.1, 0.2, 0.3, ...]'), <br>('Banana is yellow.', '[0.5, 0.1, 0.2, ...]');<br><br>-- 3. การดึงข้อมูล (Retrieval) โดยการค้นหาเวกเตอร์ที่ใกล้เคียงที่สุด<br>-- สมมติว่าคำถามคือ 'ผลไม้สีเหลือง' และเราสร้างเวกเตอร์คำถามแล้ว<br>SELECT text, embedding <br>FROM document_chunks <br>ORDER BY embedding <-> '[0.4, 0.2, 0.1, ...]' <br>LIMIT 1;<br>

จากโค้ดข้างต้น เมื่อผู้ใช้ถามคำถาม ระบบจะทำการคำนวณระยะห่าง (Distance) ระหว่างเวกเตอร์คำถามกับเวกเตอร์ทั้งหมดในฐานข้อมูล (PostgreSQL) แล้วดึงข้อมูล (Retrieval) ที่มีระยะห่างน้อยที่สุด (ความคล้ายคลึงสูงสุด) ออกมาเป็น ‘บริบท’ ที่เกี่ยวข้อง

การส่งบริบทสู่ LLM (Generation)

ขั้นตอนสุดท้ายคือการส่งทั้ง ‘คำถามของผู้ใช้’ และ ‘บริบทที่ดึงมาได้จาก PostgreSQL’ ไปให้ LLM พร้อมกัน LLM จะใช้บริบทที่ถูกจำกัดขอบเขตแล้วในการสร้างคำตอบ ทำให้คำตอบที่ได้มีความถูกต้องตามข้อมูลภายในองค์กรของคุณอย่างแท้จริง

SQL

-- 4. การส่งบริบท (Context) และคำถาม (Query) ไปให้ LLM<br>-- ในทางปฏิบัติ ข้อมูลที่ได้จาก SELECT ข้างต้นจะถูกส่งเป็น Prompt<br>-- ตัวอย่าง Prompt ที่สมบูรณ์:<br>SELECT 'Context: ' || text || ' | Question: ' || 'ผลไม้สีเหลือง' <br>FROM document_chunks <br>WHERE id = 1;<br>

บทสรุป: ทำไมต้อง RAG?

การใช้ RAG ร่วมกับ PostgreSQL และ Vector Database ไม่เพียงแต่ช่วยแก้ปัญหาข้อมูลล้าสมัยของ LLMs เท่านั้น แต่ยังเพิ่มความน่าเชื่อถือ (Trustworthiness) และความสามารถในการตรวจสอบย้อนกลับ (Traceability) ให้กับระบบ AI ขององค์กรได้อย่างสมบูรณ์ ทำให้องค์กรสามารถสร้างแชทบอทหรือระบบผู้ช่วยอัจฉริยะที่ทำงานบนข้อมูลเฉพาะทางได้อย่างแท้จริง

Exit mobile version