การอัปเดตและลบเวกเตอร์
ทำให้ดัชนีสอดคล้องกับแหล่งข้อมูลอยู่เสมอ โดยอัปเซิร์ตเมื่อเอกสารเปลี่ยน ลบเมื่อเอกสารถูกนำออก และจัดการการสร้าง Embedding ใหม่
การอัปเดตและลบเวกเตอร์ เป็นบทเรียน AI Agents ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Agents และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ
ดัชนีไม่ได้หยุดนิ่ง
เอกสารจริงมีการเปลี่ยนแปลง ดัชนีจึงต้องปรับตามให้ทัน
- มีการเพิ่มเอกสารใหม่
- มีการแก้ไขเอกสารเดิม
- มีการลบหรือเก็บถาวรเอกสารเก่า
upsert (แทรกหรืออัปเดต)
ฐานข้อมูลเวกเตอร์ส่วนใหญ่รองรับ upsert ซึ่งจะเขียนเวกเตอร์ด้วย ID ที่กำหนด และแทนที่เวกเตอร์เดิมหากมีอยู่แล้ว
index.upsert([
('doc-42', new_vector, {'source': 'a.pdf', 'updated_at': now})
])
# If doc-42 already exists, it is overwritten.ID แบบกำหนดแน่นอน
หากคุณใช้ ID ที่สร้างจากแฮชเนื้อหา การ "อัปเดต" จะเกิดขึ้นโดยอัตโนมัติ เนื้อหาเดียวกัน = ID เดียวกัน = ช่องเดียวกัน
หากคุณใช้ UUID คุณต้องติดตามว่า UUID ใดเป็นของเอกสารต้นทางใด
การตรวจจับการเปลี่ยนแปลง
หากต้องการเปรียบเทียบคลังเอกสาร ให้จัดเก็บแฮชของทุกชิ้นส่วน
old_chunks = load_existing_chunks(source)
new_chunks = chunk_doc(source)
old_hashes = {c.id for c in old_chunks}
new_hashes = {c.id for c in new_chunks}
to_delete = old_hashes - new_hashes
to_add = new_hashes - old_hashes
# Skip unchanged — saves re-embeddingการลบด้วยตัวกรอง
ฐานข้อมูลส่วนใหญ่รองรับการลบด้วยตัวกรอง ซึ่งมีประโยชน์สำหรับการ "ลบทุกอย่างจากแหล่งข้อมูลนี้"
index.delete(filter={'source': '/old/file.pdf'})Delete by ID
index.delete(ids=['doc-1', 'doc-2', 'doc-3'])การลบแบบไม่ถาวร
บางครั้งคุณต้องการ "ซ่อน" โดยไม่ลบออก ให้ตั้งค่าเครื่องหมาย deleted_at แล้วกรองรายการนั้นออกขณะทำ query
index.upsert([('doc-42', vec, {'deleted_at': now})])
# At query time:
results = index.query(vector=query_vec, top_k=5, filter={'deleted_at': {'$exists': False}})การบีบอัดดัชนี
การลบบ่อยครั้งทำให้ดัชนีมีข้อมูลกระจัดกระจาย ควรสร้างดัชนีใหม่เป็นระยะเพื่อประสิทธิภาพที่ดีขึ้น ฐานข้อมูลส่วนใหญ่ทำเช่นนี้โดยอัตโนมัติ แต่ควรตรวจสอบเอกสารของผู้ให้บริการ
การสร้างเวกเตอร์ฝังใหม่เมื่อเปลี่ยนโมเดล
หากคุณอัปเกรดโมเดลการสร้างเวกเตอร์ฝัง เวกเตอร์เดิมทั้งหมดจะไม่สามารถใช้งานร่วมกันได้อีก แนวทางมีดังนี้
- เขียนข้อมูลลงในคอลเลกชันเก่าและใหม่พร้อมกันระหว่างการย้ายระบบ
- เปลี่ยนการรับส่งข้อมูลสำหรับการอ่านไปยังคอลเลกชันใหม่เมื่อดำเนินการเสร็จ
- ลบคอลเลกชันเก่า
ไปป์ไลน์แบบเพิ่มทีละส่วน
ไปป์ไลน์นำเข้าข้อมูลที่มีความทนทาน
def sync_doc(source_path):
new_chunks = chunk_and_hash(load(source_path))
existing_ids = index.fetch_ids_by_source(source_path)
new_ids = {c.id for c in new_chunks}
to_add = [c for c in new_chunks if c.id not in existing_ids]
to_remove = existing_ids - new_ids
if to_remove:
index.delete(ids=list(to_remove))
if to_add:
index.upsert([(c.id, embed(c.text), c.metadata) for c in to_add])การตรวจสอบความคลาดเคลื่อน
ตรวจสอบเป็นระยะว่าดัชนีตรงกับแหล่งข้อมูลต้นฉบับหรือไม่ นับจำนวนแถวต่อแหล่งข้อมูลในทั้งฐานข้อมูลและดัชนีเวกเตอร์ แล้วแจ้งเตือนเมื่อจำนวนไม่ตรงกัน
การอัปเดตที่ขับเคลื่อนด้วยเว็บฮุก
สำหรับระบบจัดการเอกสาร (Notion, Confluence, GDrive) ให้ใช้เว็บฮุกเพื่อเริ่มการซิงค์แบบเพิ่มทีละส่วนเมื่อมีการเปลี่ยนแปลง ซึ่งประหยัดกว่าการรวบรวมข้อมูลใหม่ทั้งหมด
เครื่องหมาย tombstone สำหรับการลบแบบกระจาย
ในดัชนีแบบกระจาย การ "ลบ" มักจะเขียนเครื่องหมาย tombstone ไว้ จนกว่าจะมีการบีบอัด ดัชนี query อาจยังพบเครื่องหมายดังกล่าวได้ จึงควรคงตัวกรองของคุณไว้
การอัปเดตที่ทำซ้ำได้อย่างปลอดภัย
วิธีใดทำให้การนำเข้าข้อมูลปลอดภัยเมื่อต้องทำซ้ำได้ง่ายที่สุด
สรุปทบทวน
วางแผนรองรับการอัปเดตตั้งแต่วันแรก โดยใช้ ID จากแฮช การนำเข้าข้อมูลจากการเปรียบเทียบความแตกต่าง และแนวทางเปลี่ยนโมเดลการสร้างเวกเตอร์ฝังโดยไม่ต้องหยุดระบบ
คำถามที่พบบ่อย
บทเรียน “การอัปเดตและลบเวกเตอร์” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การอัปเดตและลบเวกเตอร์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Agents ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การอัปเดตและลบเวกเตอร์”
ทำให้ดัชนีสอดคล้องกับแหล่งข้อมูลอยู่เสมอ โดยอัปเซิร์ตเมื่อเอกสารเปลี่ยน ลบเมื่อเอกสารถูกนำออก และจัดการการสร้าง Embedding ใหม่ คุณปฏิบัติ AI Agents ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Agents หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Agents บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การอัปเดตและลบเวกเตอร์” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน AI Agents นี้ได้ไหม
ได้ บทเรียน AI Agents ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เปรียบเทียบ Pinecone, Weaviate และ Qdrant
- การกรองข้อมูลกำกับสำหรับการค้นหาแบบผสม
- การอัปเดตและลบเวกเตอร์
- การเลือกเมตริกระยะทาง (cosine, L2, dot)