אחרי שיוצרים את האינדקס ומפעילים אותו, אפשר להריץ שאילתות כדי לקבל את השכנים הקרובים ביותר.
הנה כמה דוגמאות לשאילתת התאמה למציאת השכנים הקרובים ביותר באמצעות אלגוריתם השכנים הקרובים (k-NN).
שאילתות לדוגמה לנקודת קצה ציבורית
Python
במאמר התקנת Vertex AI SDK ל-Python מוסבר איך להתקין או לעדכן את Vertex AI SDK ל-Python. מידע נוסף מופיע ב מאמרי העזרה של Python API.
שורת פקודה
אפשר למצוא את publicEndpointDomainName שמופיע בהמשך בDeploy, והוא מעוצב כ-<number>.<region>-<number>.vdb.vertexai.goog.
$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://1957880287.us-central1-181224308459.vdb.vertexai.goog/v1/projects/181224308459/locations/us-central1/indexEndpoints/3370566089086861312:findNeighbors -d '{deployed_index_id: "test_index_public1", queries: [{datapoint: {datapoint_id: "0", feature_vector: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}, neighbor_count: 5}]}'
בדוגמה הזו של curl אפשר לראות איך מתקשרים מלקוחות http(s), למרות שהנקודה הציבורית תומכת בפרוטוקול כפול ל-RESTful ול-grpc_cli.
$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://1957880287.us-central1-181224308459.vdb.vertexai.goog/v1/projects/${PROJECT_ID}/locations/us-central1/indexEndpoints/${INDEX_ENDPOINT_ID}:readIndexDatapoints -d '{deployed_index_id:"test_index_public1", ids: ["606431", "896688"]}'
בדוגמה הזו של curl אפשר לראות איך לשלוח שאילתה עם הגבלות מספריות ואסימונים.
$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://${PUBLIC_ENDPOINT_DOMAIN}/v1/projects/${PROJECT_ID}/locations/${LOCATION}/indexEndpoints/${INDEX_ENDPOINT_ID}:findNeighbors -d '{deployed_index_id:"${DEPLOYED_INDEX_ID}", queries: [{datapoint: {datapoint_id:"x", feature_vector: [1, 1], "sparse_embedding": {"values": [111.0,111.1,111.2], "dimensions": [10,20,30]}, numeric_restricts: [{namespace: "int-ns", value_int: -2, op: "GREATER"}, {namespace: "int-ns", value_int: 4, op: "LESS_EQUAL"}, {namespace: "int-ns", value_int: 0, op: "NOT_EQUAL"}], restricts: [{namespace: "color", allow_list: ["red"]}]}}]}'
המסוף
אתם יכולים להיעזר בהוראות האלה כדי להריץ שאילתה על אינדקס שנפרס בנקודת קצה ציבורית מהמסוף.
- בקטע Agent Platform במסוף Cloud de Confiance , עוברים לקטע Deploy and Use. בוחרים באפשרות חיפוש וקטורי.
- בוחרים את האינדקס שרוצים לשלוח אליו שאילתה. ייפתח הדף פרטי האינדקס.
- גוללים למטה לקטע Deployed indexes (מדדים שנפרסו) ובוחרים את המדד שנפרס שרוצים לשלוח לו שאילתה. ייפתח הדף Deployed index info (פרטי אינדקס שנפרס).
- בקטע Query index, בוחרים אם לבצע שאילתה לפי ערך הטמעה צפוף, ערך הטמעה דליל, ערך הטמעה היברידי (הטמעות צפופות ודלילות) או נקודת נתונים ספציפית.
- מזינים את פרמטרים של שאילתה לסוג השאילתה שבחרתם. לדוגמה, אם אתם מבצעים שאילתה לפי הטמעה צפופה, מזינים את וקטור ההטמעה כדי לבצע את השאילתה.
- מריצים את השאילתה באמצעות פקודת curl שסופקה, או באמצעות Cloud Shell.
- אם משתמשים ב-Cloud Shell, בוחרים באפשרות Run in Cloud Shell (הפעלה ב-Cloud Shell).
- מריצים ב-Cloud Shell.
- התוצאות שמתקבלות הן השכנים הקרובים ביותר.
שאילתות היברידיות
חיפוש היברידי משתמש בהטמעות צפופות ודלילות לחיפושים שמבוססים על שילוב של חיפוש מילות מפתח וחיפוש סמנטי.
Python
במאמר התקנת Vertex AI SDK ל-Python מוסבר איך להתקין או לעדכן את Vertex AI SDK ל-Python. מידע נוסף מופיע ב מאמרי העזרה של Python API.
שאילתות עם סינון וצפיפות
סינון התאמות וקטוריות מאפשר להגביל את התוצאות של השכן הקרוב ביותר לקטגוריות ספציפיות. המסננים יכולים גם להגדיר קטגוריות להחרגה מהתוצאות.
הגבלות על שכנים צפופים יכולות להגדיל את מגוון התוצאות על ידי הגבלת מספר התוצאות שמוחזרות מכל תג צפיפות בנתוני האינדקס.
Python
במאמר התקנת Vertex AI SDK ל-Python מוסבר איך להתקין או לעדכן את Vertex AI SDK ל-Python. מידע נוסף מופיע ב מאמרי העזרה של Python API.
שורת פקודה
אפשר למצוא את PUBLIC_ENDPOINT_DOMAIN שמופיע בהמשך באינדקס הפריסה בפורמט <number>.<region>-<number>.vdb.vertexai.goog.
בדוגמה הזו של curl אפשר לראות איך לשלוח שאילתה עם הגבלות מספריות ואסימונים.
$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://${PUBLIC_ENDPOINT_DOMAIN}/v1/projects/${PROJECT_ID}/locations/${LOCATION}/indexEndpoints/${INDEX_ENDPOINT_ID}:findNeighbors -d '{deployed_index_id:"${DEPLOYED_INDEX_ID}", queries: [{datapoint: {datapoint_id:"x", feature_vector: [1, 1], "sparse_embedding": {"values": [111.0,111.1,111.2], "dimensions": [10,20,30]}, numeric_restricts: [{namespace: "int-ns", value_int: -2, op: "GREATER"}, {namespace: "int-ns", value_int: 4, op: "LESS_EQUAL"}, {namespace: "int-ns", value_int: 0, op: "NOT_EQUAL"}], restricts: [{namespace: "color", allow_list: ["red"]}]}}]}'
הגדרות שמשפיעות על הביצועים בזמן השאילתה
הפרמטרים הבאים של זמן השאילתה יכולים להשפיע על זמן האחזור, הזמינות והעלות כשמשתמשים בחיפוש וקטורי. ההנחיות האלה רלוונטיות לרוב המקרים. עם זאת, מומלץ תמיד לערוך ניסויים בהגדרות כדי לוודא שהן מתאימות לתרחיש השימוש שלכם.
הגדרות הפרמטרים מפורטות במאמר בנושא פרמטרים של הגדרת אינדקס.
| פרמטר | מידע כללי | השפעה על הביצועים |
|---|---|---|
approximateNeighborsCount |
ההגדרה הזו מציינת לאלגוריתם את מספר התוצאות המשוערות שיש לאחזר מכל רסיס.
הערך של
השם התואם של ה-API בארכיטקטורת REST בשדה הזה הוא
|
הגדלת הערך של
הקטנת הערך של
|
setNeighborCount |
מציין את מספר התוצאות שרוצים שהשאילתה תחזיר.
השם התואם של ה-API בארכיטקטורת REST בשדה הזה הוא
|
ערכים שקטנים מ-300 או שווים ל-300 לא פוגעים בביצועים ברוב תרחישי השימוש. אם הערכים גדולים יותר, כדאי לבדוק את התרחיש הספציפי שלכם. |
fractionLeafNodesToSearch |
קובע את אחוז הצמתים העלים שיש לבקר בהם כשמחפשים שכנים קרובים. זה קשור לleafNodeEmbeddingCount כי ככל שיש יותר הטמעות לכל צומת עלה, כך נבדקים יותר נתונים לכל עלה.
השם התואם של ה-API בארכיטקטורת REST בשדה הזה הוא
|
הגדלת הערך של
הקטנת הערך של
|