0Pricing
AI Agents · บทเรียน

การอัปเดตและลบเวกเตอร์

ทำให้ดัชนีสอดคล้องกับแหล่งข้อมูลอยู่เสมอ โดยอัปเซิร์ตเมื่อเอกสารเปลี่ยน ลบเมื่อเอกสารถูกนำออก และจัดการการสร้าง 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}})

การบีบอัดดัชนี

การลบบ่อยครั้งทำให้ดัชนีมีข้อมูลกระจัดกระจาย ควรสร้างดัชนีใหม่เป็นระยะเพื่อประสิทธิภาพที่ดีขึ้น ฐานข้อมูลส่วนใหญ่ทำเช่นนี้โดยอัตโนมัติ แต่ควรตรวจสอบเอกสารของผู้ให้บริการ

การสร้างเวกเตอร์ฝังใหม่เมื่อเปลี่ยนโมเดล

หากคุณอัปเกรดโมเดลการสร้างเวกเตอร์ฝัง เวกเตอร์เดิมทั้งหมดจะไม่สามารถใช้งานร่วมกันได้อีก แนวทางมีดังนี้

  1. เขียนข้อมูลลงในคอลเลกชันเก่าและใหม่พร้อมกันระหว่างการย้ายระบบ
  2. เปลี่ยนการรับส่งข้อมูลสำหรับการอ่านไปยังคอลเลกชันใหม่เมื่อดำเนินการเสร็จ
  3. ลบคอลเลกชันเก่า

ไปป์ไลน์แบบเพิ่มทีละส่วน

ไปป์ไลน์นำเข้าข้อมูลที่มีความทนทาน

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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เปรียบเทียบ Pinecone, Weaviate และ Qdrant
  2. การกรองข้อมูลกำกับสำหรับการค้นหาแบบผสม
  3. การอัปเดตและลบเวกเตอร์
  4. การเลือกเมตริกระยะทาง (cosine, L2, dot)
← กลับไปที่ AI Agents