สร้างดัชนีเวกเตอร์

คู่มือนี้อธิบายถึงวิธีการสร้างดัชนีเวกเตอร์ใน Milvus

ดัชนีเวกเตอร์เป็นหน่วยการจัดเก็บเมตาดาต้าที่ใช้เพื่อเร่งค้นหาความคล้ายคลึงของเวกเตอร์ หากไม่มีการสร้างดัชนีบนเวกเตอร์ Milvus จะดำเนินการค้นหาแบบบรูท-ฟอร์ซ

โดยค่าเริ่มต้น Milvus ไม่ใช้ดัชนีกับแขนงที่มีแถวน้อยกว่า 1,024

ตัวอย่างต่อไปนี้แสดงถึงการสร้างดัชนี IVF_FLAT ด้วย 1024 กลุ่มโดยใช้ระยะทางยิ่งกลับยิ่ง (L2) คุณสามารถเลือกดัชนีและประเภทเมตริกที่เหมาะสำหรับสถานการณ์ของคุณ

เตรียมพารามิเตอร์ดัชนี

ทำตามขั้นตอนนี้เพื่อเตรียมพารามิเตอร์ดัชนี:

index_params = {
  "metric_type":"L2",
  "index_type":"IVF_FLAT",
  "params":{"nlist":1024}
}
พารามิเตอร์ คำอธิบาย ตัวเลือก
metric_type ประเภทของเมตริกที่ใช้วัดความคล้ายคลึงของเวกเตอร์ สำหรับเวกเตอร์แบบจำนวนเท่ากัน:- L2 (ระยะทางยิ่งกลับยิ่ง)- IP (คนามธรรม)- COSINE (ความคล้ายคลึงของคอซิน)สำหรับเวกเตอร์ทวิภาค:- JACCARD (ระยะทางแจกคาร์ด)- HAMMING (ระยะทางแฮมมิง)
index_type ประเภทของดัชนีที่ใช้เร่งค้นหาเวกเตอร์ สำหรับเวกเตอร์แบบจำนวนเท่ากัน:- FLAT (FLAT)- IVF_FLAT (IVF_FLAT)- IVF_SQ8 (IVF_SQ8)- IVF_PQ (IVF_PQ)- GPU_IVF_FLAT* (GPU_IVF_FLAT)- GPU_IVF_PQ*> (GPU_IVF_PQ)- HNSW (HNSW)- DISKANN* (DISKANN)สำหรับเวกเตอร์ทวิภาค:- BIN_FLAT (BIN_FLAT)- BIN_IVF_FLAT (BIN_IVF_FLAT)
params พารามิเตอร์การสร้างที่เฉพาะเจาะจงสำหรับดัชนี สำหรับข้อมูลเพิ่มเติม ดูที่ In-Memory and On-Disk Indexing
  • DISKANN มีเงื่อนไขบางอย่าง สำหรับข้อมูลเพิ่มเติม ดูที่ On-Disk Indexing.
  • GPU_IVF_FLAT และ GPU_IVF_PQ มีให้ใช้เฉพาะในติดตั้ง Milvus ที่เปิดใช้งาน GPU

สร้างดัชนี

สร้างดัชนีโดยระบุชื่อฟิลด์เวกเตอร์และพารามิเตอร์ดัชนี

from pymilvus import Collection, utility
collection = Collection("book")
collection.create_index(
  field_name="book_intro",
  index_params=index_params
)

utility.index_building_progress("book")
พารามิเตอร์ คำอธิบาย
field_name ชื่อของฟิลด์เวกเตอร์ที่ใช้สร้างดัชนี
index_params พารามิเตอร์ของดัชนีที่จะสร้าง

สร้างดัชนีสกาลาร์

ในทางตรงข้ามกับเวกเตอร์สกาลาร์มีแค่ขนาดและไม่มีทิศทาง Milvus พิจารณาตัวเลขและสตริงเป็นข้อมูลปกติ ต่อไปนี้คือรายการประเภทข้อมูลที่มีให้สำหรับฟิลด์สกาลาร์ใน Milvus

เริ่มต้นตั้งแต่ Milvus v2.1.0 เพื่อเร่งการค้นหาแอตทริบิวต์ในการค้นหาผสม คุณสามารถสร้างดัชนีบนฟิลด์สกาลาร์ คุณสามารถอ่านข้อมูลเพิ่มเติมเกี่ยวกับการสร้างดัชนีฟิลด์สกาลาร์ ที่นี่

หมายเหตุ: ลิงก์สำหรับ "ที่นี่" ควรถูกแทนที่ด้วยลิงก์จริงที่ระบุในเอกสารต้นฉบับ

สร้างดัชนี

เมื่อสร้างดัชนีบนฟิลด์สกาลาร์ คุณไม่จำเป็นต้องตั้งค่าพารามิเตอร์ดัชนีใด ๆ ค่าเริ่มต้นสำหรับชื่อดัชนีของฟิลด์สกาลาร์คือ default_idx ตามด้วยชื่อของฟิล์ที่สร้างดัชนี คุณสามารถตั้งค่าเป็นค่าที่เหมาะสมสำหรับคุณ

ตัวอย่างโค้ดต่อไปนี้สมมติว่าคอลเลกชันที่ชื่อ book มีอยู่และต้องการสร้างดัชนีบนฟิลด์สตริง book_name

from pymilvus import Collection

collection = Collection("book")   
collection.create_index(
  field_name="book_name", 
  index_name="scalar_index",
)
collection.load()

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

search_param = {
  "data": [[0.1, 0.2]],
  "anns_field": "book_intro",
  "param": {"metric_type": "L2", "params": {"nprobe": 10}},
  "limit": 2,
  "expr": "book_name like \"Hello%\"", 
}
res = collection.search(**search_param)

ลบดัชนี

from pymilvus import Collection
collection = Collection("book")      # เรียกคอลเลกชันที่มีอยู่
collection.drop_index()