
QuickStart •คุณสมบัติหลัก•แบ็กเอนด์ที่รองรับ•การติดตั้ง
บริเวณใกล้เคียงเป็นที่เก็บเวกเตอร์ที่มีน้ำหนักเบาและพึ่งพาอาศัยกันต่ำ มันให้อินเทอร์เฟซที่เรียบง่ายและใช้งานง่ายสำหรับการค้นหาเพื่อนบ้านที่ใกล้ที่สุดพร้อมการสนับสนุนสำหรับแบ็กเอนด์และการประเมินผลที่แตกต่างกัน
มีแพ็คเกจและวิธีการของเพื่อนบ้านที่ใกล้ที่สุดมากมาย อย่างไรก็ตามเราพบว่ามันยากที่จะเปรียบเทียบพวกเขา ทุกแพ็คเกจมีอินเทอร์เฟซของตัวเองนิสัยใจคอและข้อ จำกัด และการเรียนรู้แพ็คเกจใหม่อาจใช้เวลานาน นอกจากนั้นคุณจะประเมินแพ็คเกจที่แตกต่างกันได้อย่างมีประสิทธิภาพอย่างไร คุณจะรู้ได้อย่างไรว่าอันไหนดีที่สุดสำหรับกรณีการใช้งานของคุณ?
นี่คือที่มาของบริเวณใกล้เคียงแทนที่จะเรียนรู้อินเทอร์เฟซใหม่สำหรับแต่ละแพ็คเกจใหม่หรือแบ็กเอนด์บริเวณใกล้เคียงให้อินเทอร์เฟซแบบครบวงจรสำหรับแบ็กเอนด์ทั้งหมด สิ่งนี้ช่วยให้คุณสามารถทดลองใช้วิธีการจัดทำดัชนีและตัวชี้วัดระยะทางที่แตกต่างกันได้อย่างง่ายดายและเลือกวิธีที่ดีที่สุดสำหรับกรณีการใช้งานของคุณ บริเวณใกล้เคียงยังเป็นวิธีง่ายๆในการประเมินประสิทธิภาพของแบ็คเอนด์ที่แตกต่างกันช่วยให้คุณวัดการสืบค้นต่อวินาทีและเรียกคืนได้
ติดตั้งแพ็คเกจด้วย:
pip install vicinityเป็นทางเลือกติดตั้งแบ็กเอนด์ที่รองรับหรือเพียงแค่ติดตั้งทั้งหมดด้วย:
pip install vicinity[all]ตัวอย่างโค้ดต่อไปนี้แสดงให้เห็นถึงวิธีการใช้บริเวณใกล้เคียงสำหรับการค้นหาเพื่อนบ้านที่ใกล้ที่สุด:
import numpy as np
from vicinity import Vicinity , Backend , Metric
# Create some dummy data
items = [ "triforce" , "master sword" , "hylian shield" , "boomerang" , "hookshot" ]
vectors = np . random . rand ( len ( items ), 128 )
# Initialize the Vicinity instance (using the basic backend and cosine metric)
vicinity = Vicinity . from_vectors_and_items (
vectors = vectors ,
items = items ,
backend_type = Backend . BASIC ,
metric = Metric . COSINE
)
# Create a query vector
query_vector = np . random . rand ( 128 )
# Query for nearest neighbors with a top-k search
results = vicinity . query ( query_vector , k = 3 )
# Query for nearest neighbors with a threshold search
results = vicinity . query_threshold ( query_vector , threshold = 0.9 )
# Query with a list of query vectors
query_vectors = np . random . rand ( 5 , 128 )
results = vicinity . query ( query_vectors , k = 3 )การบันทึกและโหลดร้านค้าเวกเตอร์:
vicinity . save ( 'my_vector_store' )
vicinity = Vicinity . load ( 'my_vector_store' )การประเมินแบ็กเอนด์:
# Use the first 1000 vectors as query vectors
query_vectors = vectors [: 1000 ]
# Evaluate the Vicinity instance by measuring the queries per second and recall
qps , recall = vicinity . evaluate (
full_vectors = vectors ,
query_vectors = query_vectors ,
)บริเวณใกล้เคียงมีคุณสมบัติดังต่อไปนี้:
รองรับแบ็กเอนด์ต่อไปนี้:
BASIC : ดัชนีเรียบง่าย (การจับคู่ที่แน่นอน) สำหรับการจัดเก็บเวกเตอร์และการค้นหาflat : การค้นหาที่แน่นอนivf : การค้นหาไฟล์คว่ำhnsw : กราฟโลกขนาดเล็กที่นำทางได้ตามลำดับชั้นlsh : การแฮชที่ไวต่อท้องถิ่นscalar : สเกลาร์ปริมาณpq : ปริมาณผลิตภัณฑ์ivf_scalar : การค้นหาไฟล์แบบกลับด้านด้วย Scalar Quantizerivfpq : การค้นหาไฟล์แบบกลับด้านด้วยปริมาณผลิตภัณฑ์ivfpqr : การค้นหาไฟล์แบบกลับด้านด้วยปริมาณผลิตภัณฑ์และการปรับแต่ง หมายเหตุ: แบ็กเอนด์ Ann ไม่รองรับการลบแบบไดนามิก ในการลบรายการคุณต้องสร้างดัชนีใหม่ การแทรกได้รับการสนับสนุนในแบ็กเอนด์ต่อไปนี้: FAISS , HNSW และ Usearch BASIC พื้นฐานรองรับทั้งการแทรกและการลบ
| แบ็กเอนด์ | พารามิเตอร์ | คำอธิบาย | ค่าเริ่มต้น |
|---|---|---|---|
| ขั้นพื้นฐาน | metric | ตัวชี้วัดความคล้ายคลึงกันที่จะใช้ ( cosine , euclidean ) | "cosine" |
| รบกวน | metric | ตัวชี้วัดความคล้ายคลึงกันที่จะใช้ ( dot , euclidean , cosine ) | "cosine" |
trees | จำนวนต้นไม้ที่ใช้สำหรับการจัดทำดัชนี | 100 | |
length | ความยาวเสริมของชุดข้อมูล | None | |
| คน | metric | ตัวชี้วัดความคล้ายคลึงกันที่จะใช้ ( cosine , l2 ) | "cosine" |
index_type | ประเภทของดัชนี FAISS ( flat , ivf , hnsw , lsh , scalar , pq , ivf_scalar , ivfpq , ivfpqr ) | "hnsw" | |
nlist | จำนวนเซลล์สำหรับดัชนี IVF | 100 | |
m | จำนวน subquantizers สำหรับดัชนี PQ และ HNSW | 8 | |
nbits | จำนวนบิตสำหรับดัชนี LSH และ PQ | 8 | |
refine_nbits | จำนวนบิตสำหรับขั้นตอนการปรับแต่งในดัชนี IVFPQR | 8 | |
| HNSW | metric | พื้นที่ที่คล้ายคลึงกันที่จะใช้ ( cosine , l2 ) | "cosine" |
ef_construction | ขนาดของรายการไดนามิกในระหว่างการก่อสร้างดัชนี | 200 | |
m | จำนวนการเชื่อมต่อต่อเลเยอร์ | 16 | |
| pyndescent | metric | ตัวชี้วัดความคล้ายคลึงกันที่จะใช้ ( cosine , euclidean , manhattan ) | "cosine" |
n_neighbors | จำนวนเพื่อนบ้านที่จะใช้สำหรับการค้นหา | 15 | |
| USEARCH | metric | ตัวชี้วัดความคล้ายคลึงกันที่จะใช้ ( cos , ip , l2sq , hamming , tanimoto ) | "cos" |
connectivity | จำนวนการเชื่อมต่อต่อโหนดในกราฟ | 16 | |
expansion_add | จำนวนผู้สมัครที่พิจารณาในระหว่างการก่อสร้างกราฟ | 128 | |
expansion_search | จำนวนผู้สมัครที่พิจารณาระหว่างการค้นหา | 64 | |
| นักเดินทาง | metric | พื้นที่ที่คล้ายคลึงกันที่จะใช้ ( cosine , l2 ) | "cosine" |
ef_construction | จำนวนเวกเตอร์ที่ดัชนีนี้ค้นหาผ่านเมื่อแทรกเวกเตอร์ใหม่ลงในดัชนี | 200 | |
m | จำนวนการเชื่อมต่อระหว่างโหนดในโครงสร้างข้อมูลภายในของต้นไม้ | 16 |
มีตัวเลือกการติดตั้งต่อไปนี้:
# Install the base package
pip install vicinity
# Install all backends
pip install vicinity[all]
# Install specific backends
pip install vicinity[annoy]
pip install vicinity[faiss]
pip install vicinity[hnsw]
pip install vicinity[pynndescent]
pip install vicinity[usearch]
pip install vicinity[voyager]มิกซ์