Chuyển đến nội dung chính
Quay lại danh sách bài viết

Qdrant: สร้าง Semantic Search พร้อม Filter จากข้อมูลของตัวเอง

เริ่ม Qdrant บนเครื่อง สร้าง collection เก็บ vector และ payload แล้วทดสอบค้นหาความหมายร่วมกับ filter ที่มีดัชนี

Qdrant: สร้าง Semantic Search พร้อม Filter จากข้อมูลของตัวเอง

การค้นคำตรงตัวอาจไม่พบเอกสารที่ใช้คนละถ้อยคำแต่พูดเรื่องเดียวกัน Qdrant เก็บ vector ของเอกสารเพื่อค้นหาความใกล้เคียง และเก็บ payload เพื่อกรองผลตามเงื่อนไข เช่น ภาษา ทีม หรือสถานะเผยแพร่ บทความนี้เริ่มจากชุดข้อมูลเล็กที่ตรวจผลด้วยตาได้ ไม่เริ่มจากการนำเอกสารทั้งหมดเข้าโดยไม่รู้ว่าจะวัดคุณภาพอย่างไร

เตรียม vector และ collection

เริ่ม Qdrant ในเครื่องตาม quickstart แล้วสร้าง collection ที่กำหนดขนาด vector และ distance metric ให้ตรงกับโมเดล embedding ที่เลือก ตัวอย่างในคู่มือใช้ vector ขนาด 4 เพื่อสาธิต แต่ข้อมูลจริงต้องใช้มิติที่โมเดลสร้างออกมา หากเปลี่ยนโมเดลหรือวิธี normalize ภายหลัง ไม่ควรปะปน vector เก่ากับใหม่โดยไม่มีแผนสร้างดัชนีใหม่

สร้าง point จากเอกสารหนึ่งชิ้นพร้อม ID, vector และ payload เช่น {language: "th", status: "published"} จากนั้น query ด้วย vector ของคำถามที่สร้างจากโมเดลเดียวกัน ตรวจว่าผลลำดับต้นเกี่ยวข้องกับคำถามจริงหรือไม่ การใส่ payload อย่างเป็นระบบตั้งแต่ต้นช่วยกรองข้อมูลที่ผู้ใช้ไม่ควรเห็นก่อนแสดงผล

กรองผลโดยไม่ทำให้ช้า

สมมติระบบมีบทความไทยและอังกฤษ ให้ query ด้วย filter language=th เพื่อไม่ให้ผลภาษาอื่นปะปน ถ้ากรอง field นี้บ่อย ให้สร้าง payload index ตามชนิดข้อมูลที่เหมาะสม เอกสาร Qdrant อธิบายว่าดัชนีช่วยให้การกรองเร็วขึ้นและลดภาระระบบ แต่ไม่จำเป็นต้องทำดัชนีทุก field เพราะมีต้นทุนเก็บและบำรุงรักษา

ทดสอบพร้อมกันทั้งความเกี่ยวข้องและความถูกต้องของสิทธิ์: คำถามหนึ่งที่ควรเจอเอกสารไทย, คำถามที่ควรไม่เจอข้อมูล draft, และคำถามที่ไม่มีคำตอบตรง อย่านำ similarity score ตัวเดียวไปแปลว่าข้อมูลถูกต้องเสมอ โดยเฉพาะเมื่อใช้ผลค้นหาไปป้อนให้ระบบตอบคำถามอัตโนมัติ

ก่อนเปิดให้ผู้ใช้จริง

แยกขั้นสร้าง embedding, เก็บ point และค้นหาออกจากกัน เพื่อรู้ว่าความผิดพลาดเกิดจุดใด ติดตามขนาด collection, latency, ผลที่ผู้ใช้คลิก และข้อมูลที่ไม่ควรถูกส่งคืน ตั้งค่าการยืนยันตัวตน เครือข่าย และ backup ตาม production checklist ก่อนเปิด endpoint สู่บริการอื่น

Qdrant เป็นส่วนค้นหา vector ไม่ได้สร้าง embedding ที่ดีหรือบังคับสิทธิ์ทางธุรกิจแทนแอป คุณภาพสุดท้ายขึ้นกับข้อมูลต้นทาง โมเดลที่ใช้ และชุดคำถามทดสอบที่สะท้อนงานจริง

อ่านเพิ่มเติม: Qdrant Local Quickstart, การกรองผล, Production Checklist

Chia sẻ bài viết:
Xem thêm bài viết