Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini menjelaskan cara membuat dan menanyakan indeks pencarian vektor menggunakan Mosaic AI Vector Search.
Anda dapat membuat dan mengelola komponen pencarian vektor, seperti titik akhir pencarian vektor dan indeks pencarian vektor, menggunakan UI, Python SDK, atau REST API.
Persyaratan
- Ruang kerja yang menggunakan Katalog Unity.
- Komputasi tanpa server diaktifkan. Untuk petunjuknya, lihat Menyambungkan ke komputasi tanpa server.
- Untuk titik akhir standar, tabel sumber harus mengaktifkan Ubah Umpan Data. Lihat Penggunaan umpan data perubahan Delta Lake di Azure Databricks.
- Untuk membuat indeks pencarian vektor, Anda harus memiliki hak istimewa CREATE TABLE pada skema katalog tempat indeks akan dibuat.
- Untuk melakukan query pada indeks yang dimiliki oleh pengguna lain, Anda harus memiliki hak istimewa tambahan. Lihat Query sebuah endpoint pencarian vektor.
Izin untuk membuat dan mengelola titik akhir pencarian vektor dikonfigurasi menggunakan daftar kontrol akses. Lihat Daftar Kontrol Akses titik akhir pencarian vektor.
Instalasi
Untuk menggunakan SDK pencarian vektor, Anda harus menginstalnya di notebook Anda. Gunakan kode berikut untuk menginstal paket.
%pip install databricks-vectorsearch
dbutils.library.restartPython()
Kemudian gunakan perintah berikut untuk mengimpor VectorSearchClient
:
from databricks.vector_search.client import VectorSearchClient
Otentikasi
Lihat Data protection and authentication.
Buat titik akhir pencarian vektor
Anda dapat membuat titik akhir pencarian vektor menggunakan UI Databricks, SDK Python, atau API.
Buatlah endpoint pencarian vektor menggunakan UI
Ikuti langkah-langkah berikut untuk membuat endpoint pencarian vektor menggunakan UI.
Di bilah sisi kiri, klik Compute.
Klik tab Vector Search dan klik Create.
Formulir buat titik akhir terbuka. Masukkan nama untuk titik akhir ini.
Di bidang Jenis , pilih Standar atau Penyimpanan Dioptimalkan. Lihat Opsi titik akhir.
(Opsional) Di bawah Pengaturan tingkat lanjut, pilih kebijakan anggaran. Lihat Pencarian Vektor Mosaik AI: Kebijakan anggaran.
Klik tombol Konfirmasi.
Membuat titik akhir pencarian vektor menggunakan Python SDK
Contoh berikut menggunakan fungsi SDK create_endpoint() untuk membuat endpoint pencarian vektor.
# The following line automatically generates a PAT Token for authentication
client = VectorSearchClient()
# The following line uses the service principal token for authentication
# client = VectorSearchClient(service_principal_client_id=<CLIENT_ID>,service_principal_client_secret=<CLIENT_SECRET>)
client.create_endpoint(
name="vector_search_endpoint_name",
endpoint_type="STANDARD" # or "STORAGE_OPTIMIZED"
)
Buat endpoint pencarian vektor menggunakan REST API
Lihat dokumentasi referensi REST API: POST /api/2.0/vector-search/endpoints.
(Opsional) Buat dan konfigurasikan titik akhir untuk menyajikan model embedding.
Jika Anda memilih untuk membiarkan Databricks menghitung embedding, Anda bisa menggunakan endpoint API Model Dasar yang telah dikonfigurasikan sebelumnya atau membuat endpoint penyajian model untuk menyajikan model embedding pilihan Anda. Lihat Pay-per-token Foundation Model APIs atau Buat endpoint penyajian model dasar untuk petunjuk. Untuk contoh buku catatan, lihat Contoh buku catatan untuk memanggil model embeddings.
Saat Anda mengonfigurasi endpoint embedding, Databricks menyarankan agar Anda menghapus pilihan default dari Skala ke nol. Endpoint yang melayani dapat memerlukan beberapa menit untuk pemanasan, dan kueri awal pada indeks dengan endpoint yang dikurangi skalanya mungkin mengalami waktu habis.
Nota
Inisialisasi indeks pencarian vektor mungkin kehabisan waktu jika titik akhir penyematan tidak dikonfigurasi dengan tepat untuk himpunan data. Anda hanya boleh menggunakan titik akhir CPU untuk himpunan data dan pengujian kecil. Untuk dataset yang lebih besar, gunakan endpoint GPU untuk kinerja yang optimal.
Buat indeks pencarian vektor
Anda dapat membuat indeks pencarian vektor menggunakan UI, Python SDK, atau REST API. Antarmuka Pengguna adalah pendekatan yang paling sederhana.
Ada dua jenis indeks:
- Indeks Sinkronisasi Delta secara otomatis disinkronkan dengan Tabel Delta sumber, secara otomatis dan bertahap memperbarui indeks saat data yang mendasar dalam Tabel Delta berubah.
- Indeks Akses Vektor Langsung mendukung pembacaan dan penulisan langsung vektor dan metadata. Pengguna bertanggung jawab untuk memperbarui tabel ini menggunakan REST API atau Python SDK. Tipe indeks ini tidak dapat dibuat menggunakan UI. Anda harus menggunakan REST API atau SDK.
Nota
Nama kolom _id
ini sudah dipakai. Jika tabel sumber Anda memiliki kolom bernama _id
, ubahlah namanya sebelum membuat indeks pencarian vektor.
Buat indeks menggunakan UI
Di bilah sisi kiri, klik Katalog
untuk membuka UI Penjelajah Katalog. Arahkan ke tabel Delta yang ingin Anda gunakan.
Klik tombol Create di kanan atas, dan pilih Indeks pencarian vektor dari menu tarik-turun.
Gunakan pemilih dalam dialog untuk mengkonfigurasi indeks.
Nama: Nama yang akan digunakan untuk tabel online di Katalog Unity. Nama memerlukan namespace tiga tingkat,
<catalog>.<schema>.<name>
. Hanya karakter alfanumerik dan garis bawah yang diizinkan.Primary key: Kolom yang digunakan sebagai kunci utama.
Endpoint: Pilih endpoint pencarian vektor yang ingin Anda gunakan.
Kolom yang akan disinkronkan: (Hanya didukung untuk titik akhir standar.) Pilih kolom yang akan disinkronkan dengan indeks vektor. Jika Anda membiarkan kolom ini kosong, semua kolom dari tabel sumber akan disinkronkan dengan indeks. Kolom kunci utama dan kolom sumber embedding atau kolom vektor embedding selalu disinkronisasi. Untuk titik akhir yang dioptimalkan untuk penyimpanan, semua kolom dari tabel sumber selalu disinkronkan.
Sumber Penyematan: Indikasikan jika Anda ingin Databricks melakukan penghitungan embeddings untuk kolom teks dalam tabel Delta (Hitung embeddings), atau jika tabel Delta Anda sudah berisi embeddings yang sudah dihitung sebelumnya (Gunakan kolom penyematan yang ada).
- Jika Anda memilih Hitung embeddings, pilih kolom yang ingin Anda hitung embeddings-nya dan titik akhir yang melayani model embedding. Hanya kolom teks yang didukung. Untuk pembuatan embedding skala besar, Databricks merekomendasikan penggunaan model dasar bayar per token
databricks-gte-large-en
untuk throughput yang lebih tinggi. - Jika Anda memilih Gunakan kolom embedding yang ada, pilih kolom yang berisi embedding yang sudah dihitung sebelumnya dan dimensi embeddingnya. Format kolom embedding yang telah dihitung sebelumnya harus
array[float]
. Untuk titik akhir yang dioptimalkan penyimpanan, dimensi penyematan harus dapat dibagi secara merata dengan 16.
Sinkronisasi embeddings yang dihitung: Alihkan pengaturan ini untuk menyimpan embeddings yang dihasilkan ke tabel Katalog Unity. Untuk informasi lebih lanjut, lihat Simpan tabel penyematan yang dihasilkan.
Mode Sinkronisasi: Kontinu menjaga indeks tetap sinkron dengan latensi dalam hitungan detik. Namun, biayanya lebih tinggi karena kluster komputasi disediakan untuk menjalankan pipeline streaming sinkronisasi berkelanjutan. Untuk titik akhir standar, Berkelanjutan dan Dipicu melakukan pembaruan bertahap, sehingga hanya data yang berubah sejak sinkronisasi terakhir yang diproses. Untuk titik akhir yang dioptimalkan untuk penyimpanan, setiap sinkronisasi sepenuhnya membangun kembali indeks pencarian vektor. Lihat Batasan pada titik akhir yang dioptimalkan untuk penyimpanan.
Dengan mode sinkronisasi Triggered, Anda menggunakan SDK Python atau REST API untuk memulai sinkronisasi. Lihat Memperbarui Indeks Delta Sync.
Untuk titik akhir yang dioptimalkan untuk penyimpanan, hanya mode sinkronisasi yang dipicu yang didukung.
- Jika Anda memilih Hitung embeddings, pilih kolom yang ingin Anda hitung embeddings-nya dan titik akhir yang melayani model embedding. Hanya kolom teks yang didukung. Untuk pembuatan embedding skala besar, Databricks merekomendasikan penggunaan model dasar bayar per token
Setelah Anda selesai mengkonfigurasi indeks, klik Buat.
Buat indeks menggunakan SDK Python
Contoh berikut menciptakan Indeks Delta Sync dengan embeddings yang dihitung oleh Databricks. Untuk detailnya, lihat referensi Python SDK.
client = VectorSearchClient()
index = client.create_delta_sync_index(
endpoint_name="vector_search_demo_endpoint",
source_table_name="vector_search_demo.vector_search.en_wiki",
index_name="vector_search_demo.vector_search.en_wiki_index",
pipeline_type="TRIGGERED",
primary_key="id",
embedding_source_column="text",
embedding_model_endpoint_name="e5-small-v2"
)
Contoh berikut membuat Indeks Sinkronisasi Delta dengan embeddings yang dikelola sendiri. Contoh ini juga menunjukkan penggunaan parameter opsional columns_to_sync
untuk memilih hanya sebagian kolom yang akan digunakan dalam indeks.
client = VectorSearchClient()
index = client.create_delta_sync_index(
endpoint_name="vector_search_demo_endpoint",
source_table_name="vector_search_demo.vector_search.en_wiki",
index_name="vector_search_demo.vector_search.en_wiki_index",
pipeline_type="TRIGGERED",
primary_key="id",
embedding_dimension=1024,
embedding_vector_column="text_vector"
)
Secara default, semua kolom dari tabel sumber disinkronkan dengan indeks.
Pada titik akhir standar, Anda dapat memilih subset kolom untuk disinkronkan menggunakan columns_to_sync
. Kunci utama dan kolom penyematan selalu disertakan dalam indeks.
Untuk menyinkronkan hanya kunci utama dan kolom penyematan, Anda harus menentukan mereka dalam columns_to_sync
seperti yang diperlihatkan:
index = client.create_delta_sync_index(
...
columns_to_sync=["id", "text_vector"] # to sync only the primary key and the embedding column
)
Untuk menyinkronkan kolom tambahan, tentukan seperti yang ditunjukkan. Anda tidak perlu menyertakan kunci utama dan kolom embedding, karena mereka selalu disinkronkan.
index = client.create_delta_sync_index(
...
columns_to_sync=["revisionId", "text"] # to sync the `revisionId` and `text` columns in addition to the primary key and embedding column.
)
Contoh berikut membuat Indeks Akses Vektor Langsung.
client = VectorSearchClient()
index = client.create_direct_access_index(
endpoint_name="storage_endpoint",
index_name=f"{catalog_name}.{schema_name}.{index_name}",
primary_key="id",
embedding_dimension=1024,
embedding_vector_column="text_vector",
schema={
"id": "int",
"field2": "string",
"field3": "float",
"text_vector": "array<float>"}
)
Buat indeks menggunakan REST API
Lihat dokumentasi referensi REST API: POST /api/2.0/vector-search/indexes.
Simpan tabel pencocokan yang dihasilkan
Jika Databricks menghasilkan embeddings, Anda dapat menyimpan embeddings yang dihasilkan ke tabel di Unity Catalog. Tabel ini dibuat dalam skema yang sama dengan indeks vektor dan ditautkan dari halaman indeks vektor.
Nama tabel adalah nama indeks pencarian vektor, ditambahkan oleh _writeback_table
. Nama tidak bisa diedit.
Anda dapat mengakses dan menanyakan tabel seperti tabel lainnya dalam Unity Catalog. Namun, Anda sebaiknya tidak menghapus atau mengubah tabel, karena tabel tersebut tidak dimaksudkan untuk diperbarui secara manual. Tabel dihapus secara otomatis jika indeks dihapus.
Perbarui indeks pencarian vektor
Memperbarui Indeks Sinkronisasi Delta
Indeks yang dibuat dengan mode sinkronisasi Continuous akan diperbarui secara otomatis ketika tabel Delta sumber berubah. Jika Anda menggunakan mode Sinkronisasi yang dipicu , Anda dapat memulai sinkronisasi menggunakan UI, Python SDK, atau REST API.
Databricks Antarmuka Pengguna
Di Catalog Explorer, navigasikan ke indeks pencarian vektor.
Pada tab Gambaran Umum , di bagian Penyerapan Data , klik Sinkronkan sekarang.
.
Python SDK
Untuk detailnya, lihat referensi Python SDK.
client = VectorSearchClient()
index = client.get_index(index_name="vector_search_demo.vector_search.en_wiki_index")
index.sync()
REST API
Lihat dokumentasi referensi REST API: POST /api/2.0/vector-search/indexes/{index_name}/sync.
Perbarui Indeks Akses Vektor Langsung
Anda dapat menggunakan Python SDK atau REST API untuk memasukkan, memperbarui, atau menghapus data dari Indeks Akses Vektor Langsung.
Python SDK
Untuk detailnya, lihat referensi Python SDK.
index.upsert([
{
"id": 1,
"field2": "value2",
"field3": 3.0,
"text_vector": [1.0] * 1024
},
{
"id": 2,
"field2": "value2",
"field3": 3.0,
"text_vector": [1.1] * 1024
}
])
REST API
Lihat dokumentasi referensi REST API: POST /api/2.0/vector-search/indexes.
Untuk aplikasi produksi, Databricks merekomendasikan penggunaan perwakilan layanan alih-alih token akses pribadi. Kinerja dapat ditingkatkan hingga 100 milidetik per kueri.
Contoh kode berikut menunjukkan cara memperbarui indeks menggunakan service principal.
export SP_CLIENT_ID=...
export SP_CLIENT_SECRET=...
export INDEX_NAME=...
export WORKSPACE_URL=https://...
export WORKSPACE_ID=...
# Set authorization details to generate OAuth token
export AUTHORIZATION_DETAILS='{"type":"unity_catalog_permission","securable_type":"table","securable_object_name":"'"$INDEX_NAME"'","operation": "WriteVectorIndex"}'
# Generate OAuth token
export TOKEN=$(curl -X POST --url $WORKSPACE_URL/oidc/v1/token -u "$SP_CLIENT_ID:$SP_CLIENT_SECRET" --data 'grant_type=client_credentials' --data 'scope=all-apis' --data-urlencode 'authorization_details=['"$AUTHORIZATION_DETAILS"']' | jq .access_token | tr -d '"')
# Get index URL
export INDEX_URL=$(curl -X GET -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" --url $WORKSPACE_URL/api/2.0/vector-search/indexes/$INDEX_NAME | jq -r '.status.index_url' | tr -d '"')
# Upsert data into vector search index.
curl -X POST -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" --url https://$INDEX_URL/upsert-data --data '{"inputs_json": "[...]"}'
# Delete data from vector search index
curl -X DELETE -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" --url https://$INDEX_URL/delete-data --data '{"primary_keys": [...]}'
Contoh kode berikut menggambarkan cara memperbarui indeks menggunakan token akses pribadi (PAT).
export TOKEN=...
export INDEX_NAME=...
export WORKSPACE_URL=https://...
# Upsert data into vector search index.
curl -X POST -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" --url $WORKSPACE_URL/api/2.0/vector-search/indexes/$INDEX_NAME/upsert-data --data '{"inputs_json": "..."}'
# Delete data from vector search index
curl -X DELETE -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" --url $WORKSPACE_URL/api/2.0/vector-search/indexes/$INDEX_NAME/delete-data --data '{"primary_keys": [...]}'
Menjalankan kueri pada endpoint pencarian vektor
Anda hanya dapat melakukan query ke endpoint pencarian vektor menggunakan Python SDK, REST API, atau fungsi AI vector_search()
SQL.
Nota
Jika pengguna yang melakukan kueri pada endpoint bukan pemilik indeks pencarian vektor, pengguna tersebut harus memiliki hak istimewa UC berikut:
- USE CATALOG pada katalog yang berisi indeks pencarian vektor.
- USE SCHEMA pada skema yang berisi indeks pencarian vektor.
- SELECT pada indeks pencarian vektor.
Jenis kueri yang default adalah ann
(tetangga terdekat perkiraan). Untuk melakukan pencarian hibrid berdasarkan kemiripan kata kunci, atur parameter query_type
ke hybrid
. Dengan pencarian hibrid, semua kolom metadata teks disertakan, dan maksimal 200 hasil dikembalikan.
Titik akhir standar Python SDK
Untuk detailnya, lihat referensi Python SDK.
# Delta Sync Index with embeddings computed by Databricks
results = index.similarity_search(
query_text="Greek myths",
columns=["id", "field2"],
num_results=2
)
# Delta Sync Index using hybrid search, with embeddings computed by Databricks
results3 = index.similarity_search(
query_text="Greek myths",
columns=["id", "field2"],
num_results=2,
query_type="hybrid"
)
# Delta Sync Index with pre-calculated embeddings
results2 = index.similarity_search(
query_vector=[0.9] * 1024,
columns=["id", "text"],
num_results=2
)
Titik akhir yang dioptimalkan untuk penyimpanan Python SDK
Untuk detailnya, lihat referensi Python SDK.
Antarmuka filter yang sudah ada telah dirancang ulang untuk mengoptimalkan indeks pencarian vektor dalam penyimpanan, dengan mengadopsi string filter yang lebih mirip SQL daripada menggunakan kamus filter yang dipakai pada titik akhir pencarian vektor standar.
client = VectorSearchClient()
index = client.get_index(index_name="vector_search_demo.vector_search.en_wiki_index")
# similarity search with query vector
results = index.similarity_search(
query_vector=[0.2, 0.33, 0.19, 0.52],
columns=["id", "text"],
num_results=2
)
# similarity search with query vector and filter string
results = index.similarity_search(
query_vector=[0.2, 0.33, 0.19, 0.52],
columns=["id", "text"],
# this is a single filter string similar to SQL WHERE clause syntax
filters="language = 'en' AND country = 'us'",
num_results=2
)
REST API
Lihat dokumentasi referensi REST API: POST /api/2.0/vector-search/indexes/{index_name}/query.
Untuk aplikasi produksi, Databricks merekomendasikan penggunaan perwakilan layanan alih-alih token akses pribadi. Selain peningkatan keamanan dan manajemen akses, penggunaan prinsip layanan dapat meningkatkan kinerja hingga 100 milidetik per kueri.
Contoh kode berikut menggambarkan cara melakukan kueri pada indeks menggunakan service principal.
export SP_CLIENT_ID=...
export SP_CLIENT_SECRET=...
export INDEX_NAME=...
export WORKSPACE_URL=https://...
export WORKSPACE_ID=...
# Set authorization details to generate OAuth token
export AUTHORIZATION_DETAILS='{"type":"unity_catalog_permission","securable_type":"table","securable_object_name":"'"$INDEX_NAME"'","operation": "ReadVectorIndex"}'
# If you are using an route_optimized embedding model endpoint, then you need to have additional authorization details to invoke the serving endpoint
# export EMBEDDING_MODEL_SERVING_ENDPOINT_ID=...
# export AUTHORIZATION_DETAILS="$AUTHORIZATION_DETAILS"',{"type":"workspace_permission","object_type":"serving-endpoints","object_path":"/serving-endpoints/'"$EMBEDDING_MODEL_SERVING_ENDPOINT_ID"'","actions": ["query_inference_endpoint"]}'
# Generate OAuth token
export TOKEN=$(curl -X POST --url $WORKSPACE_URL/oidc/v1/token -u "$SP_CLIENT_ID:$SP_CLIENT_SECRET" --data 'grant_type=client_credentials' --data 'scope=all-apis' --data-urlencode 'authorization_details=['"$AUTHORIZATION_DETAILS"']' | jq .access_token | tr -d '"')
# Get index URL
export INDEX_URL=$(curl -X GET -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" --url $WORKSPACE_URL/api/2.0/vector-search/indexes/$INDEX_NAME | jq -r '.status.index_url' | tr -d '"')
# Query vector search index.
curl -X GET -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" --url https://$INDEX_URL/query --data '{"num_results": 3, "query_vector": [...], "columns": [...], "debug_level": 1}'
# Query vector search index.
curl -X GET -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" --url https://$INDEX_URL/query --data '{"num_results": 3, "query_text": "...", "columns": [...], "debug_level": 1}'
Contoh kode berikut mengilustrasikan cara mengkueri indeks menggunakan token akses pribadi (PAT).
export TOKEN=...
export INDEX_NAME=...
export WORKSPACE_URL=https://...
# Query vector search index with `query_vector`
curl -X GET -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" --url $WORKSPACE_URL/api/2.0/vector-search/indexes/$INDEX_NAME/query --data '{"num_results": 3, "query_vector": [...], "columns": [...], "debug_level": 1}'
# Query vector search index with `query_text`
curl -X GET -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" --url $WORKSPACE_URL/api/2.0/vector-search/indexes/$INDEX_NAME/query --data '{"num_results": 3, "query_text": "...", "columns": [...], "debug_level": 1}'
SQL
Penting
Fungsi AI saat ini berada dalam Pratinjau Publik.
Untuk menggunakan fungsi AI ini, lihat vector_search
fungsi.
Menggunakan filter pada kueri
Sebuah kueri dapat menetapkan filter berdasarkan kolom mana pun dalam tabel Delta.
similarity_search
hanya mengembalikan baris-baris yang sesuai dengan filter yang ditentukan.
Tabel berikut mencantumkan filter yang didukung.
Operator penyaring | Perilaku | Contoh |
---|---|---|
NOT |
Standar: Menonaktifkan filter. Kunci harus diakhir dengan "NOT". Sebagai contoh, "warna NOT" dengan nilai "merah" cocok dengan dokumen di mana warnanya bukan merah. Dioptimalkan penyimpanan: Lihat != operator (tanda bangeq). |
Standar: {"id NOT": 2} {“color NOT”: “red”} Dioptimalkan untuk penyimpanan: "id != 2" "color != 'red'" |
< |
Standar: Memeriksa apakah nilai bidang kurang dari nilai filter. Kunci harus diakhiri dengan "<". Misalnya, "harga <" dengan nilai 200 cocok dengan dokumen di mana harga lebih kecil dari 200. Dioptimalkan penyimpanan: Lihat < operator (tanda lt). |
Standar: {"id <": 200} Dioptimalkan untuk penyimpanan: "id < 200" |
<= |
Standar: Memeriksa apakah nilai bidang kurang dari atau sama dengan nilai filter. Kunci harus diakhir dengan " <=". Misalnya, "price <=" dengan nilai 200 cocok dengan dokumen di mana harganya kurang dari atau sama dengan 200. Dioptimalkan untuk penyimpanan: Lihatlah <= (lt eq sign) operator. |
Standar: {"id <=": 200} Dioptimalkan untuk penyimpanan: "id <= 200" |
> |
Standar: Memeriksa apakah nilai bidang lebih besar dari nilai filter. Kunci harus diakhiri dengan ">". Misalnya, "harga >" dengan nilai 200 cocok dengan dokumen di mana harganya lebih besar dari 200. Dioptimalkan penyimpanan: Lihat > operator (tanda gt). |
Standar: {"id >": 200} Dioptimalkan untuk penyimpanan: "id > 200" |
>= |
Standar: Memeriksa apakah nilai bidang lebih besar dari atau sama dengan nilai filter. Kunci harus diakhir dengan " >=". Misalnya, "price >=" dengan nilai 200 cocok dengan dokumen di mana harganya lebih besar dari atau sama dengan 200. Dioptimalkan untuk penyimpanan: Lihat >= operator (gt eq sign). |
Standar: {"id >=": 200} Dioptimalkan untuk penyimpanan: "id >= 200" |
OR |
Standar: Memeriksa apakah nilai bidang cocok dengan salah satu nilai filter. Kunci harus berisi OR untuk memisahkan beberapa subkey. Misalnya, color1 OR color2 dengan nilai ["red", "blue"] cocok dengan dokumen di mana color1 adalah red atau color2 adalah blue .Dioptimalkan untuk penyimpanan: Lihat or operator. |
Standar: {"color1 OR color2": ["red", "blue"]} Dioptimalkan untuk penyimpanan: "color1 = 'red' OR color2 = 'blue'" |
LIKE |
Standar: Cocok dengan token yang dipisahkan spasi putih dalam string. Lihat contoh kode di bawah ini. Dioptimalkan untuk penyimpanan: Lihat like operator. |
Standar: {"column LIKE": "hello"} Dioptimalkan untuk penyimpanan: "column LIKE 'hello'" |
Operator filter tidak ditentukan |
Standar: Filter memeriksa untuk kecocokan yang tepat. Jika beberapa nilai ditentukan, nilai tersebut cocok dengan salah satu nilai. Dioptimalkan penyimpanan: Lihat = operator dan in predikat (tanda eq). |
Standar: {"id": 200} {"id": [200, 300]} Dioptimalkan untuk penyimpanan: "id = 200" "id IN (200, 300)" |
to_timestamp (titik akhir yang dioptimalkan untuk penyimpanan saja) |
Optimalisasi penyimpanan: Filter berdasarkan tanda waktu. Lihat to_timestamp fungsi |
Dioptimalkan untuk penyimpanan: "date > TO_TIMESTAMP('1995-01-01')" |
Lihat contoh kode berikut:
Titik akhir standar Python SDK
# Match rows where `title` exactly matches `Athena` or `Ares`
results = index.similarity_search(
query_text="Greek myths",
columns=["id", "text"],
filters={"title": ["Ares", "Athena"]},
num_results=2
)
# Match rows where `title` or `id` exactly matches `Athena` or `Ares`
results = index.similarity_search(
query_text="Greek myths",
columns=["id", "text"],
filters={"title OR id": ["Ares", "Athena"]},
num_results=2
)
# Match only rows where `title` is not `Hercules`
results = index.similarity_search(
query_text="Greek myths",
columns=["id", "text"],
filters={"title NOT": "Hercules"},
num_results=2
)
Titik akhir yang dioptimalkan untuk penyimpanan Python SDK
# Match rows where `title` exactly matches `Athena` or `Ares`
results = index.similarity_search(
query_text="Greek myths",
columns=["id", "text"],
filters='title IN ("Ares", "Athena")',
num_results=2
)
# Match rows where `title` or `id` exactly matches `Athena` or `Ares`
results = index.similarity_search(
query_text="Greek myths",
columns=["id", "text"],
filters='title = "Ares" OR id = "Athena"',
num_results=2
)
# Match only rows where `title` is not `Hercules`
results = index.similarity_search(
query_text="Greek myths",
columns=["id", "text"],
filters='title != "Hercules"',
num_results=2
)
REST API
Lihat POST /api/2.0/vector-search/indexes/{index_name}/query.
Suka
LIKE
Contoh
{"column LIKE": "apple"}
: mencocokkan string "apel" dan "apel pir" tetapi tidak cocok dengan "nanas" atau "pir". Perhatikan bahwa ini tidak cocok dengan "nanas" meskipun mengandung substring "apel" --- itu mencari kecocokan tepat terhadap token yang dipisahkan oleh spasi seperti dalam "apel pir".
{"column NOT LIKE": "apple"}
melakukan yang sebaliknya. Ini cocok dengan "nanas" dan "pir" tetapi tidak cocok dengan "apel" atau "pir apel".
Contoh buku catatan
Contoh di bagian ini menunjukkan penggunaan pencarian vektor Python SDK. Untuk informasi referensi, lihat referensi Python SDK.
Contoh LangChain
Lihat Cara Menggunakan LangChain dengan Pencarian Vektor Mosaic AI untuk menggunakan Pencarian Vektor Mosaic AI sebagai integrasi dengan paket LangChain.
Buku catatan berikut ini memperlihatkan cara mengonversi hasil pencarian kesamaan Anda ke dokumen LangChain.
Pencarian vektor dengan notebook Python SDK
Contoh notebook untuk memanggil model embeddings
Notebook berikut menunjukkan cara mengonfigurasi titik akhir Mosaic AI Model Serving untuk menghasilkan embedding.