การค้นหาและอัปเดตฐานข้อมูล

การสร้าง Embeddings ด้วย OpenAI API

Emmanuel Pire

Senior Software Engineer, DataCamp

การค้นหาฐานข้อมูล

คำค้นหา "movies where people sing a lot" ถูกส่งเข้าโมเดล embedding จากนั้นคำนวณ cosine distance และจัดเก็บผลลัพธ์

การสร้าง Embeddings ด้วย OpenAI API

การค้นหาฐานข้อมูล

คำค้นหาถูกส่งเข้าฐานข้อมูลเวกเตอร์โดยตรงเพื่อทำ embedding ซึ่งมีเอกสารที่ฝังไว้แล้ว

การสร้าง Embeddings ด้วย OpenAI API

ดึง collection

from chromadb.utils.embedding_functions import OpenAIEmbeddingFunction

collection = client.get_collection(
    name="netflix_titles", 
    embedding_function=OpenAIEmbeddingFunction(api_key="...")
)
  • ต้องระบุ embedding function เดียวกัน กับที่ใช้ตอนเพิ่มข้อมูลเข้า collection
การสร้าง Embeddings ด้วย OpenAI API

การค้นหา collection

result = collection.query(
  query_texts=["movies where people sing a lot"],
  n_results=3
)
print(result)
{'ids': [['s4068', 's293', 's2213']],
 'embeddings': None,
 'documents': [['Title: Quién te cantará (Movie)\nDescription: When a near-...',
   'Title: Quartet (Movie)\nDescription: To save their posh retirement home, ...',
   'Title: Sing On! Spain (TV Show)\nDescription: In this fast-paced, high-...']],
 'metadatas': [[None, None, None]],
 'distances': [[0.350419282913208, 0.36049118638038635, 0.37080681324005127]]
การสร้าง Embeddings ด้วย OpenAI API

query() คืนค่า dict ที่มีหลาย key:

  • ids: ID ของรายการที่ได้รับ
  • embeddings: embedding ของรายการที่ได้รับ
  • documents: ข้อความต้นฉบับของรายการที่ได้รับ
  • metadatas: metadata ของรายการที่ได้รับ
  • distances: ระยะห่างของรายการจากข้อความค้นหา
{'ids': [...],
 'embeddings': None,
 'documents': [...],
 'metadatas': [...],
 'distances': [...]}
การสร้าง Embeddings ด้วย OpenAI API

ข้อความค้นหาถูกไฮไลต์พร้อมกับ ID ของผลลัพธ์ 3 รายการที่ได้จากการค้นหา

  • list แรกสอดคล้องกับ query_text แรก
  • query_texts หลายรายการจะคืนค่า list หลายชุด
การสร้าง Embeddings ด้วย OpenAI API

ID ของผลลัพธ์ถูกไฮไลต์พร้อมกับเอกสาร metadata และ distance ที่เกี่ยวข้อง

การสร้าง Embeddings ด้วย OpenAI API

การอัปเดต collection

collection.update(
  ids=["id-1", "id-2"],
  documents=["New document 1", "New document 2"]
)
  • ระบุ เฉพาะ field ที่ต้องการอัปเดต field อื่นจะคงเดิม
  • collection จะสร้าง embedding ให้โดยอัตโนมัติ
การสร้าง Embeddings ด้วย OpenAI API

การ upsert collection

collection.upsert(
  ids=["id-1", "id-2"],
  documents=["New document 1", "New document 2"]
)
  • หาก ID ไม่มีอยู่ → เพิ่มข้อมูล
  • หาก ID มีอยู่แล้ว → อัปเดตข้อมูล
การสร้าง Embeddings ด้วย OpenAI API

การลบข้อมูล

ลบรายการออกจาก collection

collection.delete(ids=["id-1", "id-2"])

 

ลบ collection และรายการทั้งหมด

client.reset()
  • คำเตือน: คำสั่งนี้จะลบ ทุกอย่าง ในฐานข้อมูล!
การสร้าง Embeddings ด้วย OpenAI API

มาฝึกกันเถอะ!

การสร้าง Embeddings ด้วย OpenAI API

Preparing Video For Download...