Bagikan melalui


Cara membuat dan melakukan query pada indeks pencarian vektor

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

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.

  1. Di bilah sisi kiri, klik Compute.

  2. Klik tab Vector Search dan klik Create.

    Buat formulir endpoint

  3. Formulir buat titik akhir terbuka. Masukkan nama untuk titik akhir ini.

    Buat dialog titik akhir pencarian vektor.

  4. Di bidang Jenis , pilih Standar atau Penyimpanan Dioptimalkan. Lihat Opsi titik akhir.

  5. (Opsional) Di bawah Pengaturan tingkat lanjut, pilih kebijakan anggaran. Lihat Pencarian Vektor Mosaik AI: Kebijakan anggaran.

  6. 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

  1. Di bilah sisi kiri, klik Katalog untuk membuka UI Penjelajah Katalog.

  2. Arahkan ke tabel Delta yang ingin Anda gunakan.

  3. Klik tombol Create di kanan atas, dan pilih Indeks pencarian vektor dari menu tarik-turun.

    Tombol Buat indeks

  4. Gunakan pemilih dalam dialog untuk mengkonfigurasi indeks.

    dialog untuk membuat 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.

  5. 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

  1. Di Catalog Explorer, navigasikan ke indeks pencarian vektor.

  2. Pada tab Gambaran Umum , di bagian Penyerapan Data , klik Sinkronkan sekarang.

    Tombol Sinkronkan sekarang untuk menyinkronkan indeks pencarian vektor dari Catalog Explorer. .

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

Dapatkan buku catatan

Contoh notebook untuk memanggil model embeddings

Notebook berikut menunjukkan cara mengonfigurasi titik akhir Mosaic AI Model Serving untuk menghasilkan embedding.

Memanggil model penyematan OpenAI menggunakan buku catatan Mosaic AI Model Serving

Dapatkan buku catatan

Memanggil model embeddings GTE menggunakan notebook Mosaic AI Model Serving

Dapatkan buku catatan

Daftarkan dan layani notebook model embedding OSS

Dapatkan buku catatan