Retrieve API mengembalikan segmen teks dari basis pengetahuan berdasarkan kemiripan semantik. Jika pencarian semantik menghasilkan terlalu banyak hasil yang tidak relevan, gunakan SearchFilters untuk menerapkan filter berbasis metadata pada hasil semantik tersebut. Pendekatan ini efektif untuk data terstruktur seperti tabel dengan bidang yang terdefinisi dengan baik.
Cara kerja SearchFilters
Tanpa SearchFilters, Retrieve API mengembalikan semua segmen teks yang secara semantik mirip, termasuk kecocokan yang tidak relevan. Dengan SearchFilters, sistem terlebih dahulu melakukan pencarian semantik, lalu menyaring hasilnya berdasarkan kondisi bidang tertentu.
Tanpa SearchFilters:

Name: "San Zhang" dari hasil semantik.

Sintaksis
SearchFilters merupakan array subgrup. Setiap subgrup adalah objek JSON yang berisi satu atau lebih pasangan field: value. Subgrup selalu dikombinasikan menggunakan logika AND.
Name = "San Zhang" AND Sex = "Male" (dalam subgrup 1) AND Position = "Engineer" (subgrup 2).
Jenis kueri yang didukung
Referensi operator
| Jenis kueri | Operator | Jenis bidang yang didukung | Deskripsi |
|---|---|---|---|
| Nilai tunggal | *(nilai langsung)* | string, numerik (long, double) | Mencocokkan satu nilai eksak. Contoh: {"Name": "San Zhang"} |
| Nilai ganda | *(array JSON)* | array string, array numerik | Mencocokkan salah satu nilai dalam array (mirip dengan IN di SQL). Contoh: {"Name": "[\"San Zhang\",\"Si Li\"]"} |
| Kesamaan | eq | string, numerik | Sama dengan. Contoh: {"Name": {"eq": "San Zhang"}} |
| Kesamaan | neq | string, numerik | Tidak sama dengan. Contoh: {"Name": {"neq": "San Zhang"}} |
| Interval | gt | numerik | Lebih besar dari. Contoh: {"Age": {"gt": 20}} |
| Interval | gte | numerik | Lebih besar dari atau sama dengan. Contoh: {"Age": {"gte": 20}} |
| Interval | lt | numerik | Lebih kecil dari. Contoh: {"Age": {"lt": 30}} |
| Interval | lte | numerik | Lebih kecil dari atau sama dengan. Contoh: {"Age": {"lte": 30}} |
| Fuzzy | like | string | Pencocokan pola wildcard. Contoh: {"Position": {"like": "E%r"}} |
| Tag | tags | array string | Filter berdasarkan tag dokumen (hanya untuk basis pengetahuan pencarian dokumen). Contoh: {"tags": "[\"tag1\",\"tag2\"]"} |
Karakter wildcard untuk kueri fuzzy
| Karakter | Deskripsi | Contoh |
|---|---|---|
% | Mencocokkan nol atau lebih karakter | E%r cocok dengan Engineer |
_ | Mencocokkan tepat satu karakter | E_gineer cocok dengan Engineer |
Logika kueri tag
- Beberapa tag dalam satu subgrup menggunakan logika OR: file yang cocok dengan salah satu tag akan dikembalikan.
- Untuk menerapkan logika AND antar tag, tempatkan setiap tag dalam subgrup terpisah.
Prasyarat
Anda memerlukan:
- (Hanya untuk RAM user) Kebijakan AliyunBailianDataFullAccess dan keanggotaan ruang kerja. Tidak diperlukan untuk Akun Alibaba Cloud.
- ID ruang kerja
- Model Studio SDK yang telah diinstal dan dikonfigurasi
- AccessKey dan rahasia AccessKey dikonfigurasi sebagai variabel lingkungan
RAM user hanya dapat mengelola basis pengetahuan di ruang kerja yang telah mereka ikuti. Akun Alibaba Cloud dapat mengelola semua ruang kerja.
Persiapan data contoh
Contoh menggunakan EmployeeInformation.xlsx (3 catatan). Buat basis pengetahuan dengan:
| Pengaturan | Nilai |
|---|---|
| Knowledge base type | Data Query |
| Data source | Upload Data Table |
| Fields | Name (string), Sex (string), Position (string), Age (double) |
| Index settings | Semua bidang digunakan untuk pengambilan dan respons model |

Contoh kode lengkap
Contoh Python dan Java berikut mencakup semua jenis kueri.
Sebelum menjalankan kode contoh, konfigurasikan AccessKey dan rahasia AccessKey Anda sebagai variabel lingkungan.
- Python
- Java
SearchFiltersFullExample.py
SearchFiltersFullExample.py
Contoh jenis kueri
Setiap jenis kueri mencakup sintaksis JSON dan contoh permintaan/respons.
Ganti placeholder berikut dengan nilai aktual Anda:
| Placeholder | Deskripsi | Contoh |
|---|---|---|
<knowledge-base-id> | ID indeks basis pengetahuan | 27ubwxxxxx |
<workspace-id> | ID ruang kerja | llm-4u5xpd1xdjxxxxxx |
Kueri subgrup
Setiap elemen dalam array searchFilters adalah subgrup yang menggabungkan kondisi filter. Semua subgrup harus cocok (logika AND).
Filter catatan di mana Name adalah "San Zhang" DAN Sex adalah "Female":
nodes kosong.
- Python
- Java
SubGroupQueryExample.py
SubGroupQueryExample.py
Permintaan contoh
Permintaan contoh
Respons contoh
Respons contoh
Kueri nilai tunggal
Teruskan satu nilai untuk suatu bidang guna mencocokkan catatan dengan nilai eksak tersebut.
Filter catatan di mana Name adalah "San Zhang":
- Python
- Java
SingleQueryExample.py
SingleQueryExample.py
Permintaan contoh
Permintaan contoh
Respons contoh
Respons contoh
Kueri nilai ganda
Teruskan beberapa nilai untuk suatu bidang guna mencocokkan catatan yang mengandung salah satu nilai yang ditentukan, mirip dengan operator IN di SQL. Serialisasi array nilai sebagai string JSON.
Filter catatan di mana Name adalah "San Zhang" atau "Si Li":
- Python
- Java
MultiQueryExample.py
MultiQueryExample.py
Permintaan contoh
Permintaan contoh
Respons contoh
Respons contoh
Kueri rentang
Gunakan kueri rentang untuk menemukan catatan di mana bidang numerik berada dalam interval tertentu. Gabungkan kueri rentang dengan jenis kueri lain dengan menempatkannya dalam subgrup terpisah.
Filter catatan di mana Position adalah "Engineer" (nilai tunggal) DAN Age berada di antara 20 dan 25 (rentang):
- Python
- Java
RangeQueryExample.py
RangeQueryExample.py
Permintaan contoh
Permintaan contoh
Respons contoh
Respons contoh
Kueri fuzzy
Gunakan pola wildcard untuk mencocokkan sebagian bidang string, mirip dengan operator LIKE di SQL. Bungkus pola dalam objek {"like": "<pattern>"} dan serialisasi sebagai string JSON.
Filter catatan di mana Name adalah "San Zhang" DAN Position dimulai dengan "E" dan diakhiri dengan "r":
- Python
- Java
WildcardQueryExample.py
WildcardQueryExample.py
Permintaan contoh
Permintaan contoh
Respons contoh
Respons contoh
Kueri tag
Filter berdasarkan tag dokumen dalam basis pengetahuan pencarian dokumen. Tag mempersempit pengambilan ke segmen teks dari file yang sesuai dengan nilai tag tertentu.
Persiapan contoh: Basis pengetahuan pencarian dokumen berisi tiga file resume dengan tag berikut:
| File | Tag |
|---|---|
| Resume San Zhang | University A, Sports Specialist Student |
| Resume Si Li | University B |
| Resume Wu Wang | University B, Student Union President |
Contoh 1: Logika OR (beberapa tag dalam satu subgrup)
Kembalikan segmen teks dari file yang ditag University A ATAU Student Union President:
Beberapa tag dalam satu subgrup menggunakan logika OR. Untuk menerapkan logika AND, tempatkan setiap tag dalam subgrup terpisah (lihat Contoh 2).
Python -- TagQueryExample.py
Python -- TagQueryExample.py
Java -- TagQueryExample.java
Java -- TagQueryExample.java
Permintaan contoh
Permintaan contoh
Respons contoh
Respons contoh
University A) dan Resume Wu Wang (ditag Student Union President).
Contoh 2: Logika AND (tag dalam subgrup terpisah)
Kembalikan segmen teks dari file yang ditag University A DAN Sports Specialist Student:
Python -- TagQueryExample2.py
Python -- TagQueryExample2.py
Java -- TagQueryExample2.java
Java -- TagQueryExample2.java
Permintaan contoh
Permintaan contoh
Respons contoh
Respons contoh
Referensi
| Resource | Deskripsi |
|---|---|
| Buat dan gunakan basis pengetahuan | Panduan pengguna basis pengetahuan |
| Retrieve API | Ambil segmen teks dari basis pengetahuan |
| Berikan izin API kepada RAM user | Siapkan akses RAM user untuk Retrieve API |
| Kode error | Pemecahan masalah kegagalan pemanggilan API |