מטרת Search API היא למצוא אובייקטים של נתונים שדומים לשאילתה נתונה ולהחזיר רשימה של תוצאות מדורגות (לפי מידת הדמיון). ה-API של חיפוש תומך גם בסינון.
ה-Search API מציע מגוון דרכים לחיפוש אובייקטים של נתונים: חיפוש וקטורי, חיפוש טקסט מלא וחיפוש סמנטי. בנוסף, אפשר לשלב כמה חיפושים מכל סוג כדי לבצע חיפוש היברידי.
חיפוש וקטורי
חיפוש וקטורי מאפשר לכם לספק וקטור שאילתה משלכם. זוהי השיטה הנדרשת לחיפוש שדות הטמעה שלא כוללים embedding-config.
אם מספקים כמה שדות vector_search, התוצאות משולבות באמצעות משקלים שווים.
בדוגמה הבאה מוסבר איך לבצע חיפוש וקטורי באוסף עם המזהה COLLECTION_ID.
REST
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- COLLECTION_ID: המזהה של האוסף.
- LOCATION: האזור שבו משתמשים ב-Agent Platform.
- PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance by S3NS .
ה-method של ה-HTTP וכתובת ה-URL:
POST https://vectorsearch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID/dataObjects:search
תוכן בקשת JSON:
{
"vector_search": {
"search_field": "plot_embedding",
"vector": {
"values": [
0.42426406871192845,
0.565685424949238,
0.7071067811865475
]
},
"filter": {
"genre": {
"$eq": "Thriller"
}
},
"top_k": 5,
"output_fields": {
"data_fields": "*",
"vector_fields": "*",
"metadata_fields": "*"
}
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"results": [
{
"dataObject": {
"name": "projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID/dataObjects/1",
"createTime": "2026-01-31T20:05:06Z",
"updateTime": "2026-02-02T13:59:24Z",
"data": {
"year": 1991,
"title": "The Silence of the Lambs",
"director": "Jonathan Demme",
"genre": "Thriller"
},
"vectors": {
"plot_embedding": {
"dense": {
"values": [
1,
1,
1
]
}
},
"sparse_embedding": {
"sparse": {
"values": [
1,
6,
3,
2,
8,
5,
2
],
"indices": [
4065,
13326,
17377,
25918,
28105,
32683,
42998
]
}
},
"genre_embedding": {
"dense": {
"values": [
0.3863801,
0.73934346,
0.16189057,
0.5271367
]
}
},
"soundtrack_embedding": {
"dense": {
"values": [
0.5920452,
0.08301644,
0.12647335,
0.619643,
0.49258286
]
}
}
}
},
"distance": 1.697
},
{
"dataObject": {
"name": "projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID/dataObjects/2",
"createTime": "2026-02-04T14:35:29Z",
"updateTime": "2026-02-04T14:37:29Z",
"data": {
"year": 1995,
"title": "Se7en",
"director": "David Fincher",
"genre": "Thriller"
},
"vectors": {
"genre_embedding": {
"dense": {
"values": [
0.3863801,
0.73934346,
0.16189057,
0.5271367
]
}
},
"plot_embedding": {
"dense": {
"values": [
1,
1,
1
]
}
},
"sparse_embedding": {
"sparse": {
"values": [
1,
6,
3,
2,
8,
5,
2
],
"indices": [
4065,
13326,
17377,
25918,
28105,
32683,
42998
]
}
},
"soundtrack_embedding": {
"dense": {
"values": [
0.5920452,
0.08301644,
0.12647335,
0.619643,
0.49258286
]
}
}
}
},
"distance": 1.75
}
]
}
gcloud
לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
-
SEARCH_VECTOR_FILE: הנתיב המקומי לקובץ JSON שמכיל את הווקטור הדחוס או הדליל לחיפוש.
דוגמה לתוכן של קובץ וקטור צפוף:
{ "dense": { "values": [ 0.42426406871192845, 0.565685424949238, 0.7071067811865475 ] } }
דוגמה לתוכן של קובץ וקטור דליל:
{ "sparse": { "indices": [1, 5, 10], "values": [0.1, 0.5, 0.21] } }
- COLLECTION_ID: המזהה של האוסף.
- LOCATION: האזור שבו משתמשים ב-Agent Platform.
- PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance by S3NS .
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud vector-search collections data-objects search \ --vector-search-field="plot_embedding" \ --vector-from-file=SEARCH_VECTOR_FILE \ --json-filter='{"genre": {"$eq": "Thriller"}}' \ --top-k=5 \ --output-data-fields='*' \ --output-vector-fields='*' \ --output-metadata-fields='*' \ --collection=COLLECTION_ID \ --location=LOCATION \ --project=PROJECT_ID
Windows (PowerShell)
gcloud vector-search collections data-objects search ` --vector-search-field="plot_embedding" ` --vector-from-file=SEARCH_VECTOR_FILE ` --json-filter='{"genre": {"$eq": "Thriller"}}' ` --top-k=5 ` --output-data-fields='*' ` --output-vector-fields='*' ` --output-metadata-fields='*' ` --collection=COLLECTION_ID ` --location=LOCATION ` --project=PROJECT_ID
Windows (cmd.exe)
gcloud vector-search collections data-objects search ^ --vector-search-field="plot_embedding" ^ --vector-from-file=SEARCH_VECTOR_FILE ^ --json-filter='{"genre": {"$eq": "Thriller"}}' ^ --top-k=5 ^ --output-data-fields='*' ^ --output-vector-fields='*' ^ --output-metadata-fields='*' ^ --collection=COLLECTION_ID ^ --location=LOCATION ^ --project=PROJECT_ID
אמורים לקבל תגובה שדומה לזו:
---
dataObject:
createTime: '2026-01-31T20:05:06Z'
data:
director: Jonathan Demme
genre: Thriller
title: The Silence of the Lambs
year: 1991
name: projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID/dataObjects/1
updateTime: '2026-02-02T13:59:24Z'
vectors:
genre_embedding:
dense:
values:
- 0.38638
- 0.739343
- 0.161891
- 0.527137
plot_embedding:
dense:
values:
- 1.0
- 1.0
- 1.0
soundtrack_embedding:
dense:
values:
- 0.592045
- 0.0830164
- 0.126473
- 0.619643
- 0.492583
sparse_embedding:
sparse:
indices:
- 4065
- 13326
- 17377
- 25918
- 28105
- 32683
- 42998
values:
- 1.0
- 6.0
- 3.0
- 2.0
- 8.0
- 5.0
- 2.0
distance: 1.697
---
dataObject:
createTime: '2026-02-04T14:35:29Z'
data:
director: David Fincher
genre: Thriller
title: Se7en
year: 1995
name: projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID/dataObjects/2
updateTime: '2026-02-04T14:37:29Z'
vectors:
genre_embedding:
dense:
values:
- 0.38638
- 0.739343
- 0.161891
- 0.527137
plot_embedding:
dense:
values:
- 1.0
- 1.0
- 1.0
soundtrack_embedding:
dense:
values:
- 0.592045
- 0.0830164
- 0.126473
- 0.619643
- 0.492583
sparse_embedding:
sparse:
indices:
- 4065
- 13326
- 17377
- 25918
- 28105
- 32683
- 42998
values:
- 1.0
- 6.0
- 3.0
- 2.0
- 8.0
- 5.0
- 2.0
distance: 1.75
Python
from google.cloud import vectorsearch_v1
# Create the client
data_object_search_service_client = vectorsearch_v1.DataObjectSearchServiceClient()
# Initialize request
vector_search = vectorsearch_v1.VectorSearch(
search_field="plot_embedding",
vector={"values": [0.1, 0.2, 0.3]},
filter={"genre": {"$eq": "Thriller"}},
top_k=5,
)
request = vectorsearch_v1.SearchDataObjectsRequest(
parent="projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID",
vector_search=vector_search,
)
# Make the request
response = data_object_search_service_client.search_data_objects(request=request)
# Handle the response
print(response)
שיפור הדיוק והביצועים של החיפוש
בחיפושים וקטוריים באינדקסים צפופים של ANN עם יותר מ-100,000 הטמעות, Agent Retrieval מנסה כברירת מחדל לספק איזון אופטימלי בין היזכרות לבין זמן אחזור. כדי להתאים את האיזון הזה לתרחיש לדוגמה שלכם, אתם יכולים לציין שיעור היזכרות יעד.
הערכים צריכים להיות גדולים מ-0.00 או שווים לו, וקטנים מ-1.00 או שווים לו.
מידע על יצירת אינדקס ANN זמין במאמר בנושא יצירת אינדקס ANN.
בדוגמה הבאה אפשר לראות איך מבצעים חיפוש וקטורי במדד ANN צפוף עם שיעור היזכרות יעד של 0.95.
REST
ה-method של ה-HTTP וכתובת ה-URL:
POST https://vectorsearch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID/dataObjects:search
תוכן בקשת JSON:
{
"vectorSearch": {
"searchField": "plot_embedding",
"vector": {
"values": [0.42426406871192845, 0.565685424949238, 0.7071067811865475]
},
"topK": 10,
"searchHint": {
"indexHint": {
"name": "projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID/indexes/INDEX_ID",
"denseScannParams": {
"targetRecall": 0.95
}
}
},
"outputFields": {
"dataFields": "*",
"vectorFields": "*",
"metadataFields": "*"
}
}
}
gcloud
שומרים את וקטור השאילתה בקובץ JSON, לדוגמה vector.json:
{
"dense": {
"values": [0.42426406871192845, 0.565685424949238, 0.7071067811865475]
}
}
מריצים את הפקודה gcloud vector-search collections data-objects search:
gcloud vector-search collections data-objects search \
--project=PROJECT_ID \
--location=LOCATION \
--collection=COLLECTION_ID \
--vector-search-field=plot_embedding \
--vector-from-file=vector.json \
--use-index=INDEX_ID \
--dense-scann-target-recall=0.95 \
--top-k=10
Python
from google.cloud import vectorsearch_v1
# Create the client
data_object_search_service_client = vectorsearch_v1.DataObjectSearchServiceClient()
collection = "projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID"
# Set the target recall rate on the index hint
search_hint = vectorsearch_v1.SearchHint(
index_hint=vectorsearch_v1.SearchHint.IndexHint(
name=f"{collection}/indexes/INDEX_ID",
dense_scann_params=vectorsearch_v1.SearchHint.IndexHint.DenseScannParams(
target_recall=0.95,
),
),
)
# Initialize request
vector_search = vectorsearch_v1.VectorSearch(
search_field="plot_embedding",
vector={"values": [0.42426406871192845, 0.565685424949238, 0.7071067811865475]},
top_k=10,
search_hint=search_hint,
output_fields=vectorsearch_v1.OutputFields(
data_fields=["*"],
vector_fields=["*"],
metadata_fields=["*"],
),
)
request = vectorsearch_v1.SearchDataObjectsRequest(
parent=collection,
vector_search=vector_search,
)
# Make the request
response = data_object_search_service_client.search_data_objects(request=request)
# Handle the response
print(response)
חיפוש טקסט
החיפוש הזה מתבצע בטקסט מלא ללא וקטורים דלילים. בניב ברירת המחדל של שאילתת 'מילה', המערכת מתייחסת לכל הקלט כמונחי חיפוש נפרדים עם אופרטור AND מרומז. אפשר להגדיר את enhanced_query ל-true כדי להרחיב את מונחי החיפוש, לטפל בשינויים במילים, להסיר מילות קישור ולאפשר שימוש בפעולות חיפוש נוספות:
OR: אופרטור של הפרדה שתלוי באותיות רישיות, שמתאים למסמכים שמכילים לפחות אחד מהמונחים שצוינו. ההגדרה הזו רלוונטית רק לשני המונחים הסמוכים.": (מירכאות כפולות) לחיפוש של צירוף מילים.
-: אופרטור השלילה. היא לא כוללת מסמכים שמכילים מונחים שמופיעים לפני המיקום שלה.
חיפוש מתקדם של טקסט
ממשק ה-API של Agent Retrieval לחיפוש טקסט מאפשר לכם לבצע חיפושי טקסט באמצעות שאילתות מובנות שמכילות שאילתות משנה אחת או יותר, וכך:
התאמה לשדות ספציפיים של אובייקטים של נתונים.
מציינים את סוג ההתאמה לביצוע:
לכל מונח, לא תלוי-רישיות
בדיוק, תלוי אותיות רישיות
כוללים שיפורים לכל שפה כדי להתאים לגרסאות נגזרות של מונחים, למילים נרדפות, לאיות שגוי ולמילות עצירה (כמו 'a', 'an' ו-'the').
אפשר להשתמש באופרטורים הבוליאניים
AND,ORו-NOTכדי לשלב שאילתות משנה.כדי לשלוט בסדר ההערכה, מקבצים את שאילתות המשנה יחד.
הגדלת התרומה של ציון האופטימיזציה לדירוגים.
יש שלושה סוגים של שאילתות משנה:
Text: מספק את טקסט החיפוש ושדה אחד או יותר להתאמה.
Combined (משולב): מחיל את האופרטור
ANDאוORכדי לשלב שאילתות משנה, ואפשר להשתמש בו כדי לקבץ שאילתות משנה משולבות אחרות כדי לשלוט בסדר ההערכה.
בדוגמאות שבדף הזה נעשה שימוש בקולקציה שמוצגת בטבלה הבאה. הוא מכיל שישה אובייקטים של נתונים ומגדיר את השדות הבאים בסכימת הנתונים שלו: המחרוזות ID, Title, Description ומערך המחרוזות Keywords.
| מזהה | כותרת | תיאור | מילות מפתח |
|---|---|---|---|
| 1 | The Quick Brown Fox | שועל חום מהיר קופץ בקלות מעל כלב עצלן. | פראי, יער, יונק, כתום, זריזות, טורף |
| 2 | Lazy Dog Days | הכלב החום ישן. | מבוית, חיית מחמד, בית, כלב, רגוע, עצלן, צייתן |
| 3 | Fox vs Dog | השועל הזריז מתחכם לכלב. | wild, domestic, conflict, caniformia, mammals, interaction |
| 4 | דובים חומים | תנועות מהירות ביער. | wild, forest, ursine, apex predator, hibernation, giant |
| 5 | סיפור שועלי | הכלב קופץ לגובה. | cunning, jumps |
| 6 | הימים העצלנים שלי בקיץ | סיפור קצר על הרפיה במהלך חופשת הקיץ. | קיץ, רגיעה, חופשה, שמש |
שאילתות משנה של טקסט
שאילתות טקסט מתאימות לשדה אחד או יותר באובייקט נתונים. כל השאילתות המובנות חייבות להכיל לפחות שאילתת טקסט אחת.
בדוגמה הבאה מוגדרת שאילתת טקסט בסיסית:
"text_search": {
"structured_query": {
"text": {
"text": "fox vs dog"
}
}
}
כברירת מחדל, הטקסט מפולח למונחים נפרדים, וכל מונח נבדק בשדות שצוינו. בדוגמה הקודמת, המונחים fox, vs ו-dog מחפשים בשדה Title.
לשאילתות טקסט יש את הפרמטרים האופציונליים הבאים:
fields: מערך של שדות להשוואה. אם לא מציינים שדה, ברירת המחדל היא התאמה לכל השדות. השדות מותאמים לאופרטורORמרומז.
match_type: סוג ההתאמה שרוצים לבצע. סוג ההתאמה יכול להיותEXACT, שמציין שהשדה חייב להתאים בדיוק לטקסט החיפוש. אם השדה הוא מערך מחרוזות, מתבצעת התאמה לכל רכיב במערך.
enhancement: מצייןenabledו-languageCode, ומאפשר לבצע התאמות למילים נרדפות, למילים עם אותיות שורש, לשגיאות כתיב ולמילות קישור בשפה שצוינה עבורlanguageCode(לדוגמה,en-US). ברירת המחדל היא ללא שיפור.
boost: אופציונלי. מכפיל להחלה על הציון של השאילתה. ערך ברירת המחדל הוא1.0.
סוג התאמה
הפרמטר match_type מציין איך טקסט החיפוש תואם לערך של שדה.
הערך של הפרמטר יכול להיות:
-
EXACT: השדה חייב להיות זהה למונח השאילתה. אם השדה הוא מערך מחרוזות, מתבצעת התאמה לכל רכיב במערך.
בדוגמה הבאה מצוין סוג ההתאמה EXACT:
"text_search": {
"structured_query": {
"text": {
"text": "Fox vs Dog",
"fields": [ "Title" ],
"match_type": "EXACT"
}
}
}
סוג ההתאמה למערכי מחרוזות
תוצאות השאילתה מוצגות בטבלה הבאה:
| Score | מזהה | כותרת | תיאור | מילות מפתח |
|---|---|---|---|---|
| 1.0000 | 3 | Fox vs Dog | השועל הזריז מתחכם לכלב. | wild, domestic, conflict, caniformia, mammals, interaction |
אם השדה הוא מערך מחרוזות, טקסט החיפוש מושווה לכל רכיב במערך.
בדוגמה הבאה מוצג אופן החיפוש של הטקסט המדויק wild במערך המחרוזות Keywords:
"text_search": {
"structured_query": {
"text": {
"text": "wild",
"fields": [ "Keywords" ],
"match_type": "EXACT"
}
}
}
תוצאות השאילתה מוצגות בטבלה הבאה:
| Score | מזהה | כותרת | תיאור | מילות מפתח |
|---|---|---|---|---|
| 1.0000 | 3 | Fox vs Dog | השועל הזריז מתחכם לכלב. | wild, domestic, conflict, caniformia, mammals, interaction |
| 1.0000 | 4 | דובים חומים | תנועות מהירות ביער. | wild, forest, ursine, apex predator, hibernation, giant |
| 1.0000 | 1 | The Quick Brown Fox | שועל חום מהיר קופץ בקלות מעל כלב עצלן. | פראי, יער, יונק, כתום, זריזות, טורף |
שיפורים בשאילתות
שאילתות חיפוש יכולות לכלול פרמטר אופציונלי queryEnhancement כדי לציין שיפורים ספציפיים לשפה. ההתאמה כוללת מילים נרדפות, מילים שנגזרות מאותה מילה (לדוגמה, המילה 'קפיצה' והמילה 'קופץ'), מילים עם שגיאות כתיב ומילות קישור (כמו 'א', 'אן' ו-'דה').
הפרמטר הוא אובייקט עם המאפיינים הבאים:
enabled: ערך בוליאני שקובע אם להפעיל שיפורים.
languageCode: מחרוזת שמציינת את השפה של השיפורים (לדוגמה,en-US).
בדוגמה הבאה מופעלים שיפורים לשפה en-US:
"text_search": {
"structured_query": {
"text": {
"text": {
"text": "jump",
"fields": [ "Description" ],
"queryEnhancement": {
"enabled": true,
"languageCode": "en-US"
}
}
}
}
}
תוצאות השאילתה מוצגות בטבלה הבאה:
| Score | מזהה | כותרת | תיאור | מילות מפתח |
|---|---|---|---|---|
| 0.3419 | 1 | The Quick Brown Fox | שועל חום מהיר קופץ בקלות מעל כלב עצלן. | פראי, יער, יונק, כתום, זריזות, טורף |
| 0.3419 | 5 | סיפור שועלי | הכלב קופץ לגובה. | cunning, jumps |
אם לא צוין ערך ל-queryEnhancement או שהערך של enabled היה false, לא תהיה התאמה.
שאילתות משנה משולבות
שאילתות משולבות מחילות פעולה בוליאנית על שתי שאילתות משנה או יותר. הפעולות הנתמכות הן AND ו-OR.
לשאילתות משולבות יש את המאפיינים הבאים:
op: האופרטור הבוליאני שיחול על שאילתות המשנה. הערך יכול להיותANDאוOR.
subQueries: מערך של שאילתות משנה לשילוב. אלה יכולים להיות כל סוגי שאילתות המשנה הנתמכים, כולל שאילתות משולבות אחרות. עומק ההיררכיה המקסימלי הוא 2.-
boost: אופציונלי. מכפיל להחלה על הציון של השאילתה. ערך ברירת המחדל הוא1.0.
-
צירוף (AND)
האופרטור AND מתאים לאובייקטים של נתונים שמכילים את התנאים של כל שאילתות המשנה.
בדוגמה הבאה אפשר לראות איך משלבים שלוש שאילתות טקסט באמצעות האופרטור AND:
"text_search": {
"structured_query": {
"combine": {
"op": "AND",
"subQueries": [
{
"text": {
"text": "Brown",
"fields": [ "Title" ]
}
},
{
"text": {
"text": "quick",
"fields": [ "Description" ]
}
},
{
"text": {
"text": "forest predator",
"fields": [ "Keywords" ]
}
}
]
}
}
}
בדוגמה, ההתאמות מתבצעות רק אם כל שלושת שאילתות המשנה תואמות.
תוצאות השאילתה מוצגות בטבלה הבאה:
| Score | מזהה | כותרת | תיאור | מילות מפתח |
|---|---|---|---|---|
| 5.0587 | 4 | דובים חומים | תנועות מהירות ביער. | wild, forest, ursine, apex predator, hibernation, giant |
| 5.0587 | 1 | The Quick Brown Fox | שועל חום מהיר קופץ בקלות מעל כלב עצלן. | פראי, יער, יונק, כתום, זריזות, טורף |
כששאילתת משנה של טקסט כוללת כמה שדות להתאמה, מוחל OR מרומז, כמו בדוגמה הבאה:
"text_search": {
"structured_query": {
"combine": {
"op": "AND",
"subQueries": [
{
"text": {
"text": "Brown",
"fields": [ "Title", "Description" ]
}
},
{
"text": {
"text": "quick",
"fields": [ "Description" ]
}
},
{
"text": {
"text": "forest predator",
"fields": [ "Keywords" ]
}
}
]
}
}
}
בדוגמה הקודמת:
שאילתת המשנה הראשונה מתאימה למונח
Brownשלא תלוי באותיות רישיות בשדהTitleאו בשדהDescription.שאילתת המשנה השנייה מחפשת את המונח
quickבשדהDescription, ללא הבחנה בין אותיות רישיות לאותיות קטנות.שאילתת המשנה השלישית מתאימה למונחים
forestו-predator, ללא הבחנה בין אותיות רישיות לאותיות קטנות, בכל אחד מהערכים בשדהKeywordsשל מערך המחרוזות.אם כל שלוש שאילתות המשנה תואמות, מתבצעת התאמה בשאילתה המשולבת.
תוצאות השאילתה מוצגות בטבלה הבאה:
| Score | מזהה | כותרת | תיאור | מילות מפתח |
|---|---|---|---|---|
| 6.3176 | 1 | The Quick Brown Fox | שועל חום מהיר קופץ בקלות מעל כלב עצלן. | פראי, יער, יונק, כתום, זריזות, טורף |
| 5.0587 | 4 | דובים חומים | תנועות מהירות ביער. | wild, forest, ursine, apex predator, hibernation, giant |
איחוד (OR)
האופרטור OR מתאים לאובייקטים של נתונים שמכילים את התנאים של לפחות אחת משאילתות המשנה.
בדוגמה הבאה אפשר לראות איך משלבים שלוש שאילתות טקסט באמצעות האופרטור OR:
"text_search": {
"structured_query": {
"combine": {
"op": "OR",
"subQueries": [
{
"text": {
"text": "Brown",
"fields": [ "Title", "Description" ]
}
},
{
"text": {
"text": "quick",
"fields": [ "Description" ]
}
},
{
"text": {
"text": "forest predator",
"fields": [ "Keywords" ]
}
}
]
}
}
}
בדוגמה, מתבצעת התאמה אם יש התאמה לאחת משלוש שאילתות המשנה.
תוצאות השאילתה מוצגות בטבלה הבאה:
| Score | מזהה | כותרת | תיאור | מילות מפתח |
|---|---|---|---|---|
| 6.3176 | 1 | The Quick Brown Fox | שועל חום מהיר קופץ בקלות מעל כלב עצלן. | פראי, יער, יונק, כתום, זריזות, טורף |
| 5.0587 | 4 | דובים חומים | תנועות מהירות ביער. | wild, forest, ursine, apex predator, hibernation, giant |
קיבוץ
אפשר להטמיע שאילתות משנה משולבות בתוך שאילתות משנה משולבות אחרות כדי לשלוט בסדר ההערכה.
בדוגמה הבאה אפשר לראות איך מקבצים שאילתות משנה:
"text_search": {
"structured_query": {
"combine": {
"op": "AND",
"subQueries": [
{
"combine": {
"op": "OR",
"subQueries": [
{
"text": {
"text": "Fox",
"fields": [ "Title" ]
}
},
{
"text": {
"text": "jumps",
"fields": [ "Description" ]
}
}
]
}
},
{
"unary": {
"op": "NOT",
"subQuery": {
"text": {
"text": "domestic",
"fields": [ "Keywords" ]
}
}
}
}
]
}
}
}
הדוגמה הקודמת שקולה לדוגמה הבאה:
(Fox לא תלוי רישיות ב-Title או jumps לא תלוי רישיות ב-Description) וגם לא domestic לא תלוי רישיות באף אחד מהרכיבים Keywords.
בטבלה הבאה מוצגות תוצאות השאילתה:
| Score | מזהה | כותרת | תיאור | מילות מפתח |
|---|---|---|---|---|
| 3.5178 | 1 | The Quick Brown Fox | שועל חום מהיר קופץ בקלות מעל כלב עצלן. | פראי, יער, יונק, כתום, זריזות, טורף |
| 2.2589 | 5 | סיפור שועלי | הכלב קופץ לגובה. | cunning, jumps |
שאילתות משנה אונריות
שאילתות משנה אונאריות מחילות פעולה בוליאנית על שאילתת משנה אחת בשאילתה מובנית. האופרטור NOT הוא האופרטור האונרי היחיד שנתמך.
לשאילתות אונריות יש את המאפיינים הבאים:
op: האופרטור הבוליאני שרוצים להחיל על שאילתת המשנה. הערך יכול להיותNOT.
subQuery: שאילתת המשנה שאליה רוצים להחיל את הפעולה האונרית.-
boost: אופציונלי. מכפיל להחלה על הציון של השאילתה. ערך ברירת המחדל הוא1.0.
-
שלילה (NOT)
האופרטור NOT מתאים לאובייקטים של נתונים שלא מכילים את התנאים של שאילתת המשנה.
בדוגמה הבאה אפשר לראות איך משתמשים באופרטור NOT:
"text_search": {
"structured_query": {
"unary": {
"op": "NOT",
"subQuery": {
"text": {
"text": "dog",
"fields": [ "Description" ]
}
}
}
}
}
תוצאות השאילתה מוצגות בטבלה הבאה:
| Score | מזהה | כותרת | תיאור | מילות מפתח |
|---|---|---|---|---|
| 1.000 | 4 | דובים חומים | תנועות מהירות ביער. | wild, forest, ursine, apex predator, hibernation, giant |
| 1.000 | 6 | הימים העצלנים שלי בקיץ | סיפור קצר על הרפיה במהלך חופשת הקיץ. | קיץ, רגיעה, חופשה, שמש |
כשמחילים את האופרטור NOT על מערך מחרוזות, הוא מתאים לאובייקט נתונים אם המונח לא נכלל באף אחד מהרכיבים של המערך.
בדוגמה, יש התאמה אם המונח orange (לא תלוי אותיות רישיות) לא נכלל באף רכיב במערך המחרוזות Keywords.
"text_search": {
"structured_query": {
"combine": {
"op": "AND",
"subQueries": [
{
"text": {
"text": "Brown",
"fields": [ "Title" ]
}
},
{
"text": {
"text": "quick",
"fields": [ "Description" ]
}
},
{
"text": {
"text": "forest predator",
"fields": [ "Keywords" ]
}
},
{
"unary": {
"op": "NOT",
"subQuery": {
"text": {
"text": "orange",
"fields": [ "Keywords" ]
}
}
}
}
]
}
}
}
תוצאות השאילתה מוצגות בטבלה הבאה:
| Score | מזהה | כותרת | תיאור | מילות מפתח |
|---|---|---|---|---|
| 6.0587 | 4 | דובים חומים | תנועות מהירות ביער. | wild, forest, ursine, apex predator, hibernation, giant |
הגברה
לכל שאילתת משנה יכול להיות פרמטר boost כדי להחיל מכפיל על הניקוד של שאילתת המשנה. כברירת מחדל, לכל שאילתות המשנה יש boost של 1.0.
בדוגמה הבאה אפשר לראות איך מגדילים את המשקל של שאילתת משנה:
"text_search": {
"structured_query": {
"combine": {
"op": "OR",
"subQueries": [
{
"text": {
"text": "fox",
"fields": [ "Title" ]
},
"boost": 1.0
},
{
"text": {
"text": "jumps",
"fields": [ "Description" ]
},
"boost": 1.0
},
{
"text": {
"text": "interaction",
"fields": [ "Keywords" ]
},
"boost": 5.0
}
]
}
}
}
תוצאות השאילתה מוצגות בטבלה הבאה:
| Score | מזהה | כותרת | תיאור | מילות מפתח |
|---|---|---|---|---|
| 7.5534 | 3 | Fox vs Dog | השועל הזריז מתחכם לכלב. | wild, domestic, conflict, caniformia, mammals, interaction |
| 2.5178 | 1 | The Quick Brown Fox | שועל חום מהיר קופץ בקלות מעל כלב עצלן. | פראי, יער, יונק, כתום, זריזות, טורף |
| 1.2589 | 5 | סיפור שועלי | הכלב קופץ לגובה. | cunning, jumps |
חיפוש סמנטי
החיפוש הזה ממיר את שאילתת הטקסט להטמעות כדי למצוא תוצאות שמבוססות על משמעות סמנטית. הוא משתמש ב-embedding-config שמוגדר בסכימה כדי ליצור את ההטמעה של השאילתה. אם מספקים כמה שדות vector_search, התוצאות משולבות באמצעות משקלים שווים.
חיפוש באמצעות חיפוש היברידי
אפשר להשתמש ב-batch_search_data_objects כדי להריץ כמה חיפושים במקביל (חיפוש וקטורי, חיפוש טקסט וחיפוש סמנטי). אפשר לשלב את התוצאות ולדרג אותן באמצעות ReciprocalRankFusion Ranker, שממזג קבוצות של תוצאות באמצעות האלגוריתם Reciprocal Rank Fusion (RFF).