สร้างดัชนีเวกเตอร์
คู่มือนี้อธิบายถึงวิธีการสร้างดัชนีเวกเตอร์ใน 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()