[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"academy-blogs-th-1-1-all-golang-the-series-ep154-go-and-qdrant-vector-database-all--*":3,"academy-blog-translations-9dqw17ee5dict44":85},{"data":4,"page":71,"perPage":71,"totalItems":71,"totalPages":71},[5],{"alt":6,"collectionId":7,"collectionName":8,"content":9,"cover_image":10,"cover_image_path":11,"created":12,"created_by":13,"expand":14,"id":79,"keywords":80,"locale":51,"published_at":81,"scheduled_at":67,"school_blog":75,"short_description":82,"status":73,"title":83,"updated":84,"updated_by":13,"slug":76,"views":78},"ภาพปกบทความ Golang The Series EP.154 เรื่อง Go & Qdrant แนะนำการจัดการฐานข้อมูล Vector ประสิทธิภาพสูงร่วมกับภาษา Go","sclblg987654321","school_blog_translations","\u003Cp>ยินดีต้อนรับเข้าสู่ EP.154 ครับ! ในตอนที่แล้วเราได้ทำความรู้จักกับภาพรวมของ Vector Database ไปแล้ว วันนี้เราจะมาลงลึกกับฐานข้อมูล Vector ยอดนิยมที่เป็นดาวรุ่งพุ่งแรงอย่าง Qdrant (อ่านว่า คิว-ดรานท์) ซึ่งขึ้นชื่อเรื่องความเร็ว ความเสถียร และความประหยัดทรัพยากรเพราะถูกพัฒนาขึ้นด้วยภาษา Rust แต่อย่าเพิ่งตกใจไปครับ เพราะ Qdrant เขามี Go SDK มาให้พวกเราใช้งานได้อย่างยอดเยี่ยมและทรงประสิทธิภาพมาก วันนี้เราจะมาสร้างฐานทัพคลังความรู้จำลองด้วย Go และ Qdrant กันครับ!\u003C\u002Fp>\u003Ch2>ทำไมต้องเป็น Qdrant?\u003C\u002Fh2>\u003Cp>ในฐานะ Backend Developer สิ่งที่เราต้องการจากฐานข้อมูลเก็บ เวกเตอร์ คือความง่ายในการดูแลระบบ (Maintainability) และความเร็วในการสืบค้นข้อมูล ซึ่ง Qdrant (อ่านว่า คิว-ดรานท์) สามารถตอบโจทย์เหล่านั้นได้อย่างยอดเยี่ยมด้วยเหตุผลเหล่านี้ครับ:\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>\u003Cstrong>Lightweight &amp; Fast:\u003C\u002Fstrong> ตัวเอนจินถูกพัฒนาขึ้นด้วยภาษา Rust ทำให้กินทรัพยากรหน่วยความจำ (RAM) น้อยมากเมื่อเทียบกับคู่แข่ง แต่สามารถประมวลผลค้นหาข้อมูลมหาศาลได้เร็วระดับมิลลิวินาที\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Cstrong>Rich Filtering (Hybrid Search):\u003C\u002Fstrong> นอกจากการค้นหาด้วยความหมายจากเวกเตอร์ (Vector Search) แล้ว เรายังสามารถใส่เงื่อนไข Filter ทั่วไป เช่น ค้นหาเฉพาะเอกสารของ \u003Ccode>user_id = \"123\"\u003C\u002Fcode> หรือ \u003Ccode>category = \"finance\"\u003C\u002Fcode> ร่วมด้วยได้ใน Query เดียวกัน ซึ่งเป็นฟีเจอร์ที่จำเป็นมากในการนำไปประยุกต์ใช้กับระบบงานจริง\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Cstrong>Gopher Friendly:\u003C\u002Fstrong> มี Official Go SDK ที่รองรับการสื่อสารผ่านโปรโตคอล gRPC เต็มรูปแบบ ทำให้การรับส่งข้อมูลอาเรย์ตัวเลขเวกเตอร์ขนาดใหญ่ทำได้รวดเร็วและไร้คอขวด\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>ตารางเปรียบเทียบ: Qdrant vs ท็อป 3 Vector DB\u003C\u002Fh2>\u003Cp>เพื่อให้เห็นภาพชัดเจนว่าทำไมดาวรุ่งพุ่งแรงตัวนี้ถึงน่าสนใจเมื่อเทียบกับยักษ์ใหญ่ตัวอื่นๆ ในตลาด:\u003C\u002Fp>\u003Ctable style=\"min-width: 221px;\">\u003Ccolgroup>\u003Ccol style=\"width: 146px;\">\u003Ccol style=\"min-width: 25px;\">\u003Ccol style=\"min-width: 25px;\">\u003Ccol style=\"min-width: 25px;\">\u003C\u002Fcolgroup>\u003Ctbody>\u003Ctr>\u003Ctd colspan=\"1\" rowspan=\"1\" colwidth=\"146\">\u003Cp>\u003Cstrong>ฟีเจอร์\u003C\u002Fstrong>\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd colspan=\"1\" rowspan=\"1\">\u003Cp>\u003Cstrong>Qdrant\u003C\u002Fstrong>\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd colspan=\"1\" rowspan=\"1\">\u003Cp>\u003Cstrong>Weaviate\u003C\u002Fstrong>\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd colspan=\"1\" rowspan=\"1\">\u003Cp>\u003Cstrong>Pinecone\u003C\u002Fstrong>\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd colspan=\"1\" rowspan=\"1\" colwidth=\"146\">\u003Cp>\u003Cstrong>ภาษาที่ใช้พัฒนา\u003C\u002Fstrong>\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd colspan=\"1\" rowspan=\"1\">\u003Cp>Rust\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd colspan=\"1\" rowspan=\"1\">\u003Cp>\u003Cstrong>Go (Golang)\u003C\u002Fstrong>\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd colspan=\"1\" rowspan=\"1\">\u003Cp>C++ \u002F Rust\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd colspan=\"1\" rowspan=\"1\" colwidth=\"146\">\u003Cp>\u003Cstrong>จุดเด่นหลัก\u003C\u002Fstrong>\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd colspan=\"1\" rowspan=\"1\">\u003Cp>ประหยัด RAM, ฟิลเตอร์ข้อมูลเก่ง\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd colspan=\"1\" rowspan=\"1\">\u003Cp>เขียนด้วย Go, มีโมดูล RAG ในตัว\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd colspan=\"1\" rowspan=\"1\">\u003Cp>Fully Managed, ไม่ต้องคุมระบบเอง\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd colspan=\"1\" rowspan=\"1\" colwidth=\"146\">\u003Cp>\u003Cstrong>สถาปัตยกรรม\u003C\u002Fstrong>\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd colspan=\"1\" rowspan=\"1\">\u003Cp>Single Binary \u002F Distributed\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd colspan=\"1\" rowspan=\"1\">\u003Cp>Object + Vector Storage\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd colspan=\"1\" rowspan=\"1\">\u003Cp>Cloud-Native SaaS\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd colspan=\"1\" rowspan=\"1\" colwidth=\"146\">\u003Cp>\u003Cstrong>การจัดการ Memory\u003C\u002Fstrong>\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd colspan=\"1\" rowspan=\"1\">\u003Cp>โหลดเฉพาะบางส่วนลง Disk ได้\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd colspan=\"1\" rowspan=\"1\">\u003Cp>เน้นอยู่ใน RAM เป็นหลัก\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd colspan=\"1\" rowspan=\"1\">\u003Cp>บริหารจัดการโดยผู้ให้บริการ\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003Ch2>🛠️ เตรียมความพร้อม: สตาร์ท Qdrant Server ผ่าน Docker\u003C\u002Fh2>\u003Cp>ก่อนที่เราจะเริ่มเขียนโค้ด ให้เราทำการเปิดใช้งาน Qdrant Server ในเครื่องโลคอลผ่าน Docker ด้วยคำสั่งนี้ครับ:\u003C\u002Fp>\u003Cp>Bash\u003C\u002Fp>\u003Cpre>\u003Ccode>docker run -p 6333:6333 -p 6334:6334 \\\n    -v $(pwd)\u002Fqdrant_storage:\u002Fqdrant\u002Fstorage \\\n    qdrant\u002Fqdrant\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>\u003Cem>(หมายเหตุ: บน Windows ให้เปลี่ยน \u003Ccode>$(pwd)\u003C\u002Fcode> เป็นพาร์ทโฟลเดอร์ในเครื่องของคุณ)\u003C\u002Fem>\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>\u003Cstrong>พอร์ต 6333:\u003C\u002Fstrong> สำหรับ REST API และการเข้าใช้งาน Web UI Dashboard (สามารถเปิดดูผ่าน Browser ได้ทันที)\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Cstrong>พอร์ต 6334:\u003C\u002Fstrong> สำหรับ gRPC ซึ่งเราจะใช้พอร์ตนี้เป็นหลักในการเชื่อมต่อและรับส่งข้อมูลความเร็วสูงผ่านโปรแกรมภาษา Go\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>🛠️ เริ่มต้นเขียน Go เชื่อมต่อและสร้าง Collection\u003C\u002Fh2>\u003Cp>ขั้นตอนแรกให้ทำการติดตั้งตัว Go SDK ของ Qdrant ในโปรเจกต์ของคุณก่อน:\u003C\u002Fp>\u003Cp>Bash\u003C\u002Fp>\u003Cpre>\u003Ccode>go get github.com\u002Fqdrant\u002Fgo-client\u002Fqdrant\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>จากนั้นสร้างไฟล์ \u003Ccode>main.go\u003C\u002Fcode> เพื่อเขียนโค้ดเชื่อมต่อและเริ่มต้นสร้างที่เก็บข้อมูล ซึ่งในโลกของ Qdrant เราจะเรียกว่า \u003Cstrong>Collection\u003C\u002Fstrong> (เทียบเท่ากับตารางหรือ Table ในฐานข้อมูลทั่วไป) โดยในตัวอย่างนี้เราจะกำหนดขนาดไว้ที่ 1,536 มิติตามมาตรฐานของโมเดล OpenAI Embedding ครับ\u003C\u002Fp>\u003Cp>Go\u003C\u002Fp>\u003Cpre>\u003Ccode>package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\t\"time\"\n\n\t\"github.com\u002Fqdrant\u002Fgo-client\u002Fqdrant\"\n)\n\nfunc main() {\n\tctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)\n\tdefer cancel()\n\n\t\u002F\u002F 1. เชื่อมต่อกับ Qdrant Server ผ่าน gRPC (พอร์ต 6334)\n\tclient, err := qdrant.NewClient(&amp;qdrant.Config{\n\t\tHost: \"localhost\",\n\t\tPort: 6334,\n\t})\n\tif err != nil {\n\t\tlog.Fatalf(\"Failed to connect to Qdrant: %v\", err)\n\t}\n\tdefer client.Close()\n\n\tcollectionName := \"ai_knowledge_base\"\n\n\t\u002F\u002F 2. สร้าง Collection พร้อมกำหนดขนาดมิติและวิธีการวัดระยะห่าง (Distance Metric)\n\terr = client.CreateCollection(ctx, &amp;qdrant.CreateCollection{\n\t\tCollectionName: collectionName,\n\t\tVectorsConfig: qdrant.NewVectorsConfig(&amp;qdrant.VectorParams{\n\t\t\tSize:     1536, \u002F\u002F ขนาดมิติสำหรับ OpenAI Embedding\n\t\t\tDistance: qdrant.Distance_Cosine,\n\t\t}),\n\t})\n\tif err != nil {\n\t\tlog.Fatalf(\"Failed to create collection: %v\", err)\n\t}\n\n\tfmt.Printf(\"✅ Collection '%s' created successfully!\\n\", collectionName)\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch2>💡 เจาะลึกโครงสร้างข้อมูล: การเก็บข้อมูล (Upsert) และการค้นหา (Search)\u003C\u002Fh2>\u003Cp>เมื่อเราสร้าง Collection เรียบร้อยแล้ว เวลาที่เราต้องการบันทึกข้อมูล Qdrant จะให้เราจัดเก็บโครงสร้างในรูปแบบที่เรียกว่า \u003Cstrong>Point\u003C\u002Fstrong> ซึ่งประกอบไปด้วย 3 ส่วนสำคัญดังนี้ครับ:\u003C\u002Fp>\u003Col>\u003Cli>\u003Cp>\u003Cstrong>ID:\u003C\u002Fstrong> รหัสประจำตัวของข้อมูลชิ้นนั้นๆ (รองรับทั้งแบบตัวเลข Integer และแบบ UUID)\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Cstrong>Vector:\u003C\u002Fstrong> อาร์เรย์ตัวเลขทศนิยม \u003Ccode>[]float32\u003C\u002Fcode> ซึ่งก็คือค่าความหมายของข้อมูลที่เราแปลงมาจากโมเดล AI ใน EP.152\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Cstrong>Payload:\u003C\u002Fstrong> ข้อมูล Metadata ทั่วไปในรูปแบบคีย์-ค่า (เช่น ข้อความดิบต้นฉบับ, วันที่บันทึก, ชื่อไฟล์, ID ของผู้ใช้งาน) เพื่อให้เราสามารถดึงกลับมาแสดงผลคู่กับผลลัพธ์การค้นหาได้ทันที\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Fol>\u003Cp>เวลาที่เราต้องการค้นหา เราเพียงแค่ส่งเวกเตอร์ของคำถาม (Query Vector) เข้าไป ตัวเอนจินของ Qdrant จะทำหน้าที่คำนวณความคล้ายคลึงและส่งรายการ \u003Cstrong>Point\u003C\u002Fstrong> ที่มีความหมายใกล้เคียงที่สุดกลับมาให้เราดึงข้อมูลในส่วนของ Payload ไปใช้งานต่อในระบบ RAG ได้ทันทีโดยไม่ต้องยิงไปถามฐานข้อมูลอื่นซ้ำอีกรอบ\u003C\u002Fp>\u003Ch2>⚡ ท้าให้ลอง (Daily Mission)\u003C\u002Fh2>\u003Cp>หลังจากที่คุณรันโค้ดเพื่อสร้าง Collection ด้านบนเสร็จเรียบร้อยแล้ว ให้ลองเปิด Web Browser แล้วเข้าไปที่หน้า Dashboard ของระบบผ่านลิงก์นี้ครับ: \u003Ca rel=\"noopener noreferrer\" href=\"http:\u002F\u002Flocalhost:6333\u002Fdashboard\">http:\u002F\u002Flocalhost:6333\u002Fdashboard\u003C\u002Fa>\u003C\u002Fp>\u003Cp>\u003Cstrong>การบ้านวันนี้:\u003C\u002Fstrong> ลองเข้าไปตรวจสอบดูว่ามี Collection ชื่อ \u003Ccode>ai_knowledge_base\u003C\u002Fcode> แสดงขึ้นมาบนหน้า UI ถูกต้องไหม? และลองไปท้าทายฝีมือตัวเองต่อด้วยการศึกษาคู่มือของ Qdrant ดูว่า หากเราต้องการอัปโหลดและแนบข้อมูลข้อความดิบเข้าไปในส่วนของ Payload ฟังก์ชัน \u003Ccode>client.Upsert\u003C\u002Fcode> ในภาษา Go จะต้องเขียนและส่งค่าอย่างไรบ้าง? ลองลุยกันดูครับ!\u003C\u002Fp>\u003Ch2>💡 FAQ: คำถามที่พบบ่อยเกี่ยวกับ Qdrant\u003C\u002Fh2>\u003Ch3>การเก็บข้อมูลเวกเตอร์ใน Qdrant แตกต่างจากฐานข้อมูลอื่นอย่างไร?\u003C\u002Fh3>\u003Cp>Qdrant ใช้คอนเซปต์ \"Point\" ในการรวมร่างระหว่าง Vector และ Payload (Metadata) เข้าด้วยกัน ทำให้ระบบสามารถทำ \"Filtering\" ไปพร้อมๆ กับการทำ \"Vector Search\" ได้ในขั้นตอนเดียว ซึ่งช่วยลดระยะเวลาในการประมวลผลลงได้อย่างมหาศาลเมื่อเทียบกับการค้นหาเวกเตอร์ก่อนแล้วค่อยมาใช้ SQL ฟิลเตอร์ทีหลังครับ\u003C\u002Fp>\u003Ch3>ถ้า RAM ในเครื่องมีจำกัด แต่อยากเก็บข้อมูลเวกเตอร์จำนวนมากบน Qdrant ควรตั้งค่าอย่างไร?\u003C\u002Fh3>\u003Cp>จุดเด่นของ Qdrant คือเราสามารถเปิดใช้งานฟีเจอร์ \u003Cstrong>Memmap (Memory-mapped files)\u003C\u002Fstrong> ในการตั้งค่า Index ได้ครับ ซึ่งจะส่งผลให้ Qdrant โหลดดัชนีเวกเตอร์บางส่วนไปพักไว้บน Disk แทนการอัดข้อมูลทั้งหมดลงบน RAM ช่วยให้เราประหยัดค่าฮาร์ดแวร์ไปได้เยอะมากโดยแลกกับความเร็วที่ลดลงเพียงเล็กน้อยเท่านั้น\u003C\u002Fp>\u003Cdiv data-type=\"horizontalRule\">\u003Chr>\u003C\u002Fdiv>\u003Ch2>🎯 สรุปมุมมองสำหรับ Backend Developer\u003C\u002Fh2>\u003Cp>Qdrant เป็นตัวเลือกที่ยอดเยี่ยมหากคุณกำลังมองหาความสมดุลระหว่าง \u003Cstrong>ความเร็ว ประสิทธิภาพ และความคุ้มค่าของทรัพยากร\u003C\u002Fstrong> การที่มันถูกพัฒนาด้วยภาษา Rust ทำให้มันทำงานได้เสถียรและนิ่งมากในระบบ Production และที่สำคัญคือ Go SDK ของมันถูกออกแบบมาให้ตรงไปตรงมา เข้าใจง่าย และทำงานร่วมกับระบบโครงสร้างพื้นฐานเดิมของคุณได้อย่างราบรื่นครับ\u003C\u002Fp>\u003Cp>\u003Cstrong>ในตอนต่อไป (EP.155):\u003C\u002Fstrong> ยินดีด้วยครับ! ตอนนี้เรามีคลังเก็บข้อมูลเวกเตอร์ที่ทั้งเร็วและประหยัดทรัพยากรพร้อมใช้งานแล้ว แต่ในโลกของความเป็นจริง เอกสารคลังความรู้ของเรามักจะมาเป็นไฟล์ PDF ยาว 50 หน้า หรือคู่มือเล่มหนาๆ คำถามคือเราจะหั่นสับแบ่งข้อมูลขนาดใหญ่นั้นออกเป็นชิ้นเล็กๆ อย่างไรให้โมเดล AI เข้าใจบริบทได้ดีที่สุดและไม่หลุดใจความสำคัญ? ตอนหน้าห้ามพลาดกับตอน \u003Cstrong>\"Chunking Strategies: เทคนิคการตัดแบ่งข้อมูลขนาดใหญ่เพื่อส่งให้ AI\"\u003C\u002Fstrong> แล้วพบกันครับ!\u003C\u002Fp>\u003Cp>\u003Cstrong>ฝากกดติดตามพวกเราได้ที่ Superdev Academy\u003C\u002Fstrong> ในทุกช่องทางนะครับ!\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>\u003Cstrong>🔵 Facebook: \u003C\u002Fstrong>\u003Ca target=\"_blank\" rel=\"noopener\" class=\"ng-star-inserted\" href=\"https:\u002F\u002Fwww.facebook.com\u002Fsuperdev.academy.th\">\u003Cstrong>Superdev Academy Thailand\u003C\u002Fstrong>\u003C\u002Fa>\u003Cstrong> \u003C\u002Fstrong>(อัปเดตข่าวสารและบทความใหม่)\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Cstrong>🎬 YouTube: \u003C\u002Fstrong>\u003Ca target=\"_blank\" rel=\"noopener\" class=\"ng-star-inserted\" href=\"https:\u002F\u002Fwww.youtube.com\u002F@SuperdevAcademy\">\u003Cstrong>Superdev Academy Channel\u003C\u002Fstrong>\u003C\u002Fa>\u003Cstrong> \u003C\u002Fstrong>(ติวเข้มแบบวิดีโอ)\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Cstrong>📸 Instagram: \u003C\u002Fstrong>\u003Ca target=\"_blank\" rel=\"noopener\" class=\"ng-star-inserted\" href=\"https:\u002F\u002Fwww.instagram.com\u002Fsuperdevacademy\u002F\">\u003Cstrong>@superdevacademy\u003C\u002Fstrong>\u003C\u002Fa>\u003Cstrong> \u003C\u002Fstrong>(เกร็ดความรู้สั้นๆ และเบื้องหลังการทำงาน)\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Cstrong>🎬 TikTok: \u003C\u002Fstrong>\u003Ca target=\"_blank\" rel=\"noopener\" class=\"ng-star-inserted\" href=\"https:\u002F\u002Fwww.tiktok.com\u002F@superdevacademy?lang=th-TH\">\u003Cstrong>@superdevacademy\u003C\u002Fstrong>\u003C\u002Fa>\u003Cstrong> \u003C\u002Fstrong>(Tips &amp; Tricks ฉบับย่อยง่าย)\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Cstrong>🌐 Website: \u003C\u002Fstrong>\u003Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"http:\u002F\u002Fsuperdevacademy.com\">\u003Cstrong>superdevacademy.com\u003C\u002Fstrong>\u003C\u002Fa>\u003Cstrong> \u003C\u002Fstrong>(คลังบทความและคอร์สเรียนฉบับเต็ม)\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003Cp>\u003C\u002Fp>","27uf2bx3zyic_h209gtcr5a.png","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Ffrjcgafyuac5lzm\u002F27uf2bx3zyic_h209gtcr5a.png","2026-06-16 06:30:23.597Z","76qprkevbgfdps8",{"keywords":15,"locale":45,"school_blog":55},[16,22,27,32,37,41],{"collectionId":17,"collectionName":18,"created":19,"created_by":13,"id":20,"name":21,"updated":19,"updated_by":13},"sclkey987654321","school_keywords","2026-06-16 06:29:35.886Z","qpjf3bukclgeqdj","Qdrant Go",{"collectionId":17,"collectionName":18,"created":23,"created_by":13,"id":24,"name":25,"updated":26,"updated_by":13},"2026-05-11 04:12:24.718Z","zo53ndb3rj4jxci","Vector Database","2026-06-07 06:49:11.382Z",{"collectionId":17,"collectionName":18,"created":28,"created_by":13,"id":29,"name":30,"updated":31,"updated_by":13},"2026-03-04 08:20:11.547Z","ey3puyme01a9bsw","Go","2026-06-07 06:45:07.798Z",{"collectionId":17,"collectionName":18,"created":33,"created_by":13,"id":34,"name":35,"updated":36,"updated_by":13},"2026-03-04 08:20:14.253Z","ah6lvy4x8qe08l5","Golang","2026-06-07 06:45:08.193Z",{"collectionId":17,"collectionName":18,"created":38,"created_by":13,"id":39,"name":40,"updated":38,"updated_by":13},"2026-06-16 06:30:01.118Z","g83t6o1xndjb3pe","Docker Qdrant",{"collectionId":17,"collectionName":18,"created":42,"created_by":13,"id":43,"name":44,"updated":42,"updated_by":13},"2026-06-16 06:30:08.248Z","no84go0hn7g0qm7","RAG Pipeline",{"code":46,"collectionId":47,"collectionName":48,"created":49,"flag":50,"id":51,"is_default":52,"label":53,"updated":54},"th","pbc_1989393366","locales","2026-01-22 10:59:55.832Z","twemoji:flag-thailand","s8wri3bt4vgg2ji",true,"Thai","2026-04-10 15:42:46.614Z",{"category":56,"collectionId":57,"collectionName":58,"created":59,"expand":60,"id":75,"slug":76,"updated":77,"views":78},"wqxt7ag2gn7xcmk","pbc_2105096300","school_blogs","2026-06-16 06:30:14.329Z",{"category":61},{"blogIds":62,"collectionId":63,"collectionName":64,"created":65,"created_by":13,"id":56,"image":66,"image_alt":67,"image_path":68,"label":69,"name":70,"priority":71,"publish_at":72,"scheduled_at":67,"status":73,"updated":74,"updated_by":13},[],"sclcatblg987654321","school_category_blogs","2026-03-04 08:33:53.210Z","59ty92ns80w_15oc1implw.png","","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclcatblg987654321\u002Fwqxt7ag2gn7xcmk\u002F59ty92ns80w_15oc1implw.png",{"en":70,"th":70},"Golang The Series",1,"2026-03-16 04:39:38.440Z","published","2026-06-07 06:45:03.856Z","9dqw17ee5dict44","golang-the-series-ep154-go-and-qdrant-vector-database","2026-06-24 12:01:59.187Z",123,"frjcgafyuac5lzm",[20,24,29,34,39,43],"2026-06-24 10:19:04.319Z","เจาะลึก Qdrant เวกเตอร์ดาต้าเบสสายสปีดที่เขียนด้วย Rust เรียนรู้วิธีต่อท่อ gRPC ด้วย Go SDK พร้อมวิธีสร้าง Collection และจัดการข้อมูลสำหรับระบบ RAG Backend","Golang The Series EP.154: Go & Qdrant - การจัดการฐานข้อมูล Vector ประสิทธิภาพสูง","2026-06-24 10:19:17.773Z",{"th":76,"en":76}]