Tujuan Search API adalah untuk menemukan Objek Data yang mirip dengan kueri tertentu dan menampilkan daftar hasil yang diberi peringkat (berdasarkan kemiripan). Search API juga mendukung pemfilteran.
Search API menawarkan berbagai cara untuk menelusuri Objek Data: penelusuran vektor, penelusuran teks lengkap, dan penelusuran semantik. Selain itu, beberapa penelusuran dari jenis apa pun dapat digabungkan untuk mencapai penelusuran hybrid.
Penelusuran vektor
Penelusuran vektor memungkinkan Anda memberikan vektor kueri Anda sendiri. Ini adalah metode
yang diperlukan untuk menelusuri kolom sematan yang tidak memiliki embedding-config.
Jika beberapa kolom vector_search disediakan, hasil akan digabungkan menggunakan bobot yang sama.
Contoh berikut menunjukkan cara melakukan penelusuran vektor pada
Koleksi dengan ID COLLECTION_ID.
REST
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- COLLECTION_ID: ID koleksi.
- LOCATION: Region tempat Anda menggunakan Agent Platform.
- PROJECT_ID: Project ID Cloud de Confiance by S3NS Anda.
Metode HTTP dan URL:
POST https://vectorsearch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID/dataObjects:search
Meminta isi 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": "*"
}
}
}
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
{
"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
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
-
SEARCH_VECTOR_FILE: Jalur lokal ke file JSON yang berisi vektor padat atau vektor renggang untuk ditelusuri.
Contoh konten file untuk vektor padat:
{ "dense": { "values": [ 0.42426406871192845, 0.565685424949238, 0.7071067811865475 ] } }
Contoh konten file untuk vektor renggang:
{ "sparse": { "indices": [1, 5, 10], "values": [0.1, 0.5, 0.21] } }
- COLLECTION_ID: ID koleksi.
- LOCATION: Region tempat Anda menggunakan Agent Platform.
- PROJECT_ID: Project ID Cloud de Confiance by S3NS Anda.
Jalankan perintah berikut:
Linux, macOS, atau 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
Anda akan melihat respons seperti berikut:
---
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)
Menyesuaikan akurasi dan performa penelusuran
Untuk penelusuran vektor pada indeks ANN padat dengan lebih dari 100.000 embedding, Pengambilan Agen, secara default, mencoba memberikan kompromi yang optimal antara perolehan dan latensi. Anda dapat menyesuaikan keseimbangan ini untuk kasus penggunaan Anda dengan menentukan target rasio perolehan.
Nilai harus lebih besar dari atau sama dengan 0.00 dan lebih kecil dari atau sama dengan 1.00.
Untuk mengetahui informasi tentang cara membuat indeks ANN, buka Membuat Indeks ANN.
Contoh berikut menunjukkan cara melakukan penelusuran vektor pada indeks ANN padat dengan target rasio perolehan 0.95.
REST
Metode HTTP dan URL:
POST https://vectorsearch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID/dataObjects:search
Meminta isi 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
Simpan vektor kueri ke file JSON, misalnya vector.json:
{
"dense": {
"values": [0.42426406871192845, 0.565685424949238, 0.7071067811865475]
}
}
Kemudian, jalankan perintah
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)
Penelusuran teks
Ini melakukan penelusuran teks lengkap tanpa vektor jarang. Dialek kueri "kata" default memperlakukan seluruh input sebagai istilah penelusuran individual dengan operator AND implisit. Anda dapat menyetel enhanced_query ke true untuk memperluas istilah penelusuran, menangani stemming, penghapusan stop word, dan mengizinkan operator penelusuran tambahan:
OR: Operator disjungsi peka huruf besar/kecil yang cocok dengan dokumen yang berisi setidaknya salah satu istilah yang ditentukan. Hal ini hanya berlaku untuk dua istilah yang berdekatan.": (tanda petik ganda) untuk penelusuran frasa.-: Operator negasi. Operator ini mengecualikan dokumen yang berisi istilah apa pun yang berada sebelumnya.
Penelusuran teks lanjutan
Agent Retrieval text search API memungkinkan Anda mengekspresikan penelusuran teks melalui kueri terstruktur yang berisi satu atau beberapa subkueri, sehingga Anda dapat:
Mencocokkan dengan kolom Objek Data tertentu.
Tentukan jenis kecocokan yang akan dilakukan:
Per term, tidak peka huruf besar/kecil
Tepat, peka huruf besar/kecil
Sertakan peningkatan per bahasa untuk mencocokkan batang kata, sinonim, salah ejaan, dan kata henti (seperti "a", "an", dan "the").
Gunakan operator boolean
AND,OR, danNOTuntuk menggabungkan subkueri.Kontrol urutan evaluasi dengan mengelompokkan subkueri.
Meningkatkan kontribusi skor Boost untuk memengaruhi peringkat.
Ada tiga jenis subkueri:
Teks: Memberikan teks penelusuran dan satu atau beberapa kolom yang akan dicocokkan.
Gabungan: Menerapkan operator
ANDatauORuntuk menggabungkan subkueri, dan dapat digunakan untuk mengelompokkan subkueri gabungan lainnya guna mengontrol urutan evaluasi.
Contoh di halaman ini menggunakan Collection
yang ditunjukkan dalam tabel berikut. Objek ini berisi enam Objek Data dan menentukan
kolom berikut dalam skema datanya:
string ID, Title, Description, dan array string Keywords.
| ID | Judul | Deskripsi | Kata kunci |
|---|---|---|---|
| 1 | The Quick Brown Fox | Seekor rubah cokelat dengan mudah melompati seekor malas. | liar, hutan, mamalia, oranye, kelincahan, predator |
| 2 | Lazy Dog Days | cokelat sedang tidur. | domestik, hewan peliharaan, rumah,, tenang, malas, patuh |
| 3 | Rubah vs | Rubah yang cerdik mengalahkan. | liar, domestik, konflik, caniformia, mamalia, interaksi |
| 4 | Beruang Cokelat | Gerakan cepat di hutan. | liar, hutan, beruang, predator puncak, hibernasi, raksasa |
| 5 | Kisah yang menarik | melompat tinggi. | licik, melompat |
| 6 | My Lazy Days of Summer | Cerita pendek tentang bersantai selama liburan musim panas. | musim panas, santai, liburan, matahari |
Subkueri teks
Kueri teks cocok dengan satu atau beberapa kolom dalam Objek Data. Semua kueri terstruktur harus berisi setidaknya satu kueri teks.
Contoh berikut menentukan kueri teks dasar:
"text_search": {
"structured_query": {
"text": {
"text": "fox vs dog"
}
}
}
Secara default, teks dibagi menjadi beberapa istilah, dan setiap istilah ditelusuri
di kolom yang ditentukan. Dalam contoh sebelumnya, istilah "fox", "vs",
dan "dog" ditelusuri di kolom Title.
Kueri teks memiliki parameter opsional berikut:
fields: Array kolom yang akan dicocokkan. Jika tidak ditentukan, defaultnya adalah mencocokkan semua kolom. Kolom dicocokkan dengan operatorORimplisit.match_type: Jenis kecocokan yang akan dilakukan. Jenis pencocokan dapat berupaEXACT, yang menentukan bahwa kolom harus cocok dengan teks penelusuran secara persis. Jika kolom adalah array string, kecocokan dilakukan terhadap elemen apa pun dalam array.enhancement: MenentukanenableddanlanguageCode, sehingga memungkinkan kecocokan dilakukan terhadap sinonim, batang kata, salah eja, dan kata henti dalam bahasa yang ditentukan untuklanguageCode(misalnya,en-US). Defaultnya adalah tidak ada peningkatan.boost: Opsional. Pengali yang akan diterapkan pada skor kueri. Defaultnya adalah1.0.
Jenis pencocokan
Parameter match_type menentukan cara teks penelusuran cocok dengan nilai kolom.
Nilai parameter dapat berupa:
EXACT: Kolom harus sama persis dengan istilah kueri. Jika kolom adalah array string, kecocokan akan dilakukan terhadap elemen apa pun dalam array.
Contoh berikut menentukan jenis pencocokan EXACT:
"text_search": {
"structured_query": {
"text": {
"text": "Fox vs Dog",
"fields": [ "Title" ],
"match_type": "EXACT"
}
}
}
Jenis kecocokan untuk array string
Hasil kueri ditampilkan dalam tabel berikut:
| Skor | ID | Judul | Deskripsi | Kata kunci |
|---|---|---|---|---|
| 1,0000 | 3 | Rubah vs | Rubah yang cerdik mengalahkan. | liar, domestik, konflik, caniformia, mamalia, interaksi |
Jika kolom adalah array string, teks penelusuran akan dicocokkan dengan elemen array apa pun.
Contoh berikut menunjukkan cara menelusuri teks persis wild dalam
array string Keywords:
"text_search": {
"structured_query": {
"text": {
"text": "wild",
"fields": [ "Keywords" ],
"match_type": "EXACT"
}
}
}
Hasil kueri ditampilkan dalam tabel berikut:
| Skor | ID | Judul | Deskripsi | Kata kunci |
|---|---|---|---|---|
| 1,0000 | 3 | Rubah vs | Rubah yang cerdik mengalahkan. | liar, domestik, konflik, caniformia, mamalia, interaksi |
| 1,0000 | 4 | Beruang Cokelat | Gerakan cepat di hutan. | liar, hutan, beruang, predator puncak, hibernasi, raksasa |
| 1,0000 | 1 | The Quick Brown Fox | Seekor rubah cokelat dengan mudah melompati seekor malas. | liar, hutan, mamalia, oranye, kelincahan, predator |
Peningkatan kueri
Kueri penelusuran dapat menyertakan parameter queryEnhancement opsional untuk menentukan
peningkatan khusus bahasa. Hal ini mencakup pencocokan terhadap sinonim, batang kata (misalnya, batang kata "lompat" "melompat"), ejaan yang salah, dan kata henti (seperti "sebuah", "seekor", dan "itu").
Parameter adalah objek dengan properti berikut:
enabled: Boolean yang menentukan apakah akan mengaktifkan peningkatan.languageCode: String yang menentukan bahasa untuk peningkatan (misalnya,en-US).
Contoh berikut mengaktifkan peningkatan untuk bahasa en-US:
"text_search": {
"structured_query": {
"text": {
"text": {
"text": "jump",
"fields": [ "Description" ],
"queryEnhancement": {
"enabled": true,
"languageCode": "en-US"
}
}
}
}
}
Hasil kueri ditampilkan dalam tabel berikut:
| Skor | ID | Judul | Deskripsi | Kata kunci |
|---|---|---|---|---|
| 0,3419 | 1 | The Quick Brown Fox | Seekor rubah cokelat dengan mudah melompati seekor malas. | liar, hutan, mamalia, oranye, kelincahan, predator |
| 0,3419 | 5 | Kisah yang menarik | melompat tinggi. | licik, melompat |
Jika queryEnhancement tidak ditentukan atau enabled adalah false,
tidak akan ada kecocokan.
Subkueri gabungan
Kueri gabungan menerapkan operasi boolean ke dua subkueri atau lebih. Operasi yang didukung adalah AND dan OR.
Kueri gabungan memiliki properti berikut:
op: Operator boolean yang akan diterapkan ke subkueri. Nilainya dapat berupaANDatauOR.subQueries: Array subkueri yang akan digabungkan. Kueri ini dapat berupa salah satu jenis subkueri yang didukung, termasuk kueri gabungan lainnya. Ada kedalaman bertingkat maksimum 2.boost: Opsional. Pengali yang akan diterapkan pada skor kueri. Defaultnya adalah1.0.
Konjungsi (Conjunction) (AND)
Operator AND mencocokkan Objek Data yang berisi istilah dari semua subkueri.
Contoh berikut menunjukkan cara menggabungkan tiga kueri teks menggunakan
operator 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" ]
}
}
]
}
}
}
Dalam contoh ini, kecocokan hanya dibuat jika ketiga subkueri cocok.
Hasil kueri ditampilkan dalam tabel berikut:
| Skor | ID | Judul | Deskripsi | Kata kunci |
|---|---|---|---|---|
| 5,0587 | 4 | Beruang Cokelat | Gerakan cepat di hutan. | liar, hutan, beruang, predator puncak, hibernasi, raksasa |
| 5,0587 | 1 | The Quick Brown Fox | Seekor rubah cokelat dengan mudah melompati seekor malas. | liar, hutan, mamalia, oranye, kelincahan, predator |
Jika subkueri teks memiliki beberapa kolom yang akan dicocokkan, OR implisit akan diterapkan, seperti yang ditunjukkan dalam contoh berikut:
"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" ]
}
}
]
}
}
}
Dalam contoh sebelumnya:
Subkueri pertama cocok dengan istilah yang tidak peka huruf besar/kecil
Browndi kolomTitleatauDescription.Subkueri kedua mencocokkan istilah
quickyang tidak peka huruf besar/kecil di kolomDescription.Subkueri ketiga cocok dengan istilah yang tidak peka huruf besar/kecil
forestdanpredatordalam nilai apa pun di kolom array stringKeywords.Jika ketiga subkueri cocok, kecocokan akan dibuat pada kueri gabungan.
Hasil kueri ditampilkan dalam tabel berikut:
| Skor | ID | Judul | Deskripsi | Kata kunci |
|---|---|---|---|---|
| 6,3176 | 1 | The Quick Brown Fox | Seekor rubah cokelat dengan mudah melompati seekor malas. | liar, hutan, mamalia, oranye, kelincahan, predator |
| 5,0587 | 4 | Beruang Cokelat | Gerakan cepat di hutan. | liar, hutan, beruang, predator puncak, hibernasi, raksasa |
Disjungsi (OR)
Operator OR mencocokkan Objek Data yang berisi istilah dari setidaknya salah satu subkueri.
Contoh berikut menunjukkan cara menggabungkan tiga kueri teks menggunakan
operator 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" ]
}
}
]
}
}
}
Dalam contoh, kecocokan dibuat jika salah satu dari tiga subkueri cocok.
Hasil kueri ditampilkan dalam tabel berikut:
| Skor | ID | Judul | Deskripsi | Kata kunci |
|---|---|---|---|---|
| 6,3176 | 1 | The Quick Brown Fox | Seekor rubah cokelat dengan mudah melompati seekor malas. | liar, hutan, mamalia, oranye, kelincahan, predator |
| 5,0587 | 4 | Beruang Cokelat | Gerakan cepat di hutan. | liar, hutan, beruang, predator puncak, hibernasi, raksasa |
Pengelompokan
Subkueri gabungan dapat disarangkan dalam subkueri gabungan lain untuk mengontrol urutan evaluasi.
Contoh berikut menunjukkan cara mengelompokkan subkueri:
"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" ]
}
}
}
}
]
}
}
}
Contoh sebelumnya setara dengan berikut ini:
(Fox yang tidak peka huruf besar/kecil di Title OR jumps yang tidak peka huruf besar/kecil
di Description) AND NOT domestic yang tidak peka huruf besar/kecil di salah satu elemen
Keywords.
Tabel berikut menunjukkan hasil kueri:
| Skor | ID | Judul | Deskripsi | Kata kunci |
|---|---|---|---|---|
| 3.5178 | 1 | The Quick Brown Fox | Seekor rubah cokelat dengan mudah melompati seekor malas. | liar, hutan, mamalia, oranye, kelincahan, predator |
| 2,2589 | 5 | Kisah yang menarik | melompat tinggi. | licik, melompat |
Subkueri unary
Subkueri unary menerapkan operasi boolean ke satu subkueri dalam kueri terstruktur. Operator NOT adalah satu-satunya operasi unary yang didukung.
Kueri unary memiliki properti berikut:
op: Operator boolean yang akan diterapkan ke subkueri. Nilainya dapat berupaNOT.subQuery: Subkueri untuk menerapkan operasi unary.boost: Opsional. Pengali yang akan diterapkan pada skor kueri. Defaultnya adalah1.0.
Negasi (NOT)
Operator NOT mencocokkan Objek Data yang tidak berisi istilah subkueri.
Contoh berikut menunjukkan cara menggunakan operator NOT:
"text_search": {
"structured_query": {
"unary": {
"op": "NOT",
"subQuery": {
"text": {
"text": "dog",
"fields": [ "Description" ]
}
}
}
}
}
Hasil kueri ditampilkan dalam tabel berikut:
| Skor | ID | Judul | Deskripsi | Kata kunci |
|---|---|---|---|---|
| 1.000 | 4 | Beruang Cokelat | Gerakan cepat di hutan. | liar, hutan, beruang, predator puncak, hibernasi, raksasa |
| 1.000 | 6 | My Lazy Days of Summer | Cerita pendek tentang bersantai selama liburan musim panas. | musim panas, santai, liburan, matahari |
Jika diterapkan ke array string, operator NOT akan mencocokkan Objek Data jika
istilah tidak terdapat dalam elemen array mana pun.
Dalam contoh, kecocokan dibuat jika istilah orange yang tidak peka huruf besar/kecil tidak
terkandung dalam elemen apa pun dari array string 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" ]
}
}
}
}
]
}
}
}
Hasil kueri ditampilkan dalam tabel berikut:
| Skor | ID | Judul | Deskripsi | Kata kunci |
|---|---|---|---|---|
| 6,0587 | 4 | Beruang Cokelat | Gerakan cepat di hutan. | liar, hutan, beruang, predator puncak, hibernasi, raksasa |
Meningkatkan
Subkueri apa pun dapat memiliki parameter boost untuk menerapkan pengganda ke skor
subkueri. Secara default, semua subkueri memiliki boost 1.0.
Contoh berikut menunjukkan cara meningkatkan subkueri:
"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
}
]
}
}
}
Hasil kueri ditampilkan dalam tabel berikut:
| Skor | ID | Judul | Deskripsi | Kata kunci |
|---|---|---|---|---|
| 7,5534 | 3 | Rubah vs | Rubah yang cerdik mengalahkan. | liar, domestik, konflik, caniformia, mamalia, interaksi |
| 2,5178 | 1 | The Quick Brown Fox | Seekor rubah cokelat dengan mudah melompati seekor malas. | liar, hutan, mamalia, oranye, kelincahan, predator |
| 1,2589 | 5 | Kisah yang menarik | melompat tinggi. | licik, melompat |
Penelusuran semantik
Penelusuran ini mengonversi kueri teks Anda menjadi embedding untuk menemukan hasil berdasarkan makna semantik. Model ini menggunakan embedding-config yang ditentukan dalam skema Anda untuk
membuat sematan kueri. Jika beberapa kolom vector_search diberikan,
hasil digabungkan menggunakan bobot yang sama.
Menelusuri menggunakan penelusuran campuran
Gunakan batch_search_data_objects untuk menjalankan beberapa penelusuran secara paralel
(penelusuran vektor, penelusuran teks, dan penelusuran semantik). Hasil dapat digabungkan dan diberi peringkat menggunakan Peringkat ReciprocalRankFusion, yang menggabungkan set hasil menggunakan algoritma Reciprocal Rank Fusion (RFF).