Mengajar AI untuk Mengkonfigurasi Carian: Percubaan dalam Mengautomasikan Perkaitan Algolia
Bagaimana jika kami memberitahu anda carian yang dikonfigurasikan AI lebih baik daripada yang saya lakukan sebagai pekerja baharu di Algolia?
TL; DR
Kami membina alat CLI eksperimen yang menggunakan AI untuk menganalisis data Algolia anda dan menjana konfigurasi perkaitan. Ia menghasilkan cadangan kualiti yang hampir pakar dalam ~10 saat, mengendalikan atribut yang boleh dicari, kedudukan tersuai, aspek dan pilihan pengisihan.
Masalah konfigurasi
Di Algolia, kami telah menyelesaikan bahagian carian yang sukar. Muat naik katalog anda, dan anda boleh mencarinya dengan segera, dengan hasil sepantas kilat. Kesilapan menaip? Dikendalikan. Infrastruktur? Skala secara automatik. Cari-sebagai-anda-menaip? Ia hanya berfungsi. Kami telah menghabiskan masa bertahun-tahun untuk menyempurnakan algoritma dan infrastruktur kompleks yang diperlukan untuk carian terkini, jadi anda tidak perlu memikirkannya.
Tetapi inilah masalahnya: walaupun dengan semua kerumitan itu dikendalikan, mencipta Besar Carian masih memerlukan keputusan. Atribut manakah yang patut dicari? Bagaimanakah populariti harus mempengaruhi kedudukan? Apakah pilihan pengisihan yang diperlukan oleh pengguna?
Ini bukan batasan teknikal—ia adalah perbezaan antara carian generik dan carian yang memahami perniagaan anda. Amazon tahu untuk mengutamakan item Perdana. Faktor Netflix dan YouTube dalam sejarah tontonan anda. Carian anda perlu memahami perkara yang penting kepada pengguna anda.
Cabarannya ialah menetapkan konfigurasi ini dengan betul boleh berlanjutan hingga berhari-hari. Anda perlu memahami konsep, membaca dokumentasi, mencuba dan mengulang—semuanya sebelum anda boleh membina UI untuk menunjukkan nilai sebenar pengguna akhir anda. Dan, mari kita hadapi, konfigurasi perkaitan tidak Menyeronokkan. Ia boleh menjadi membosankan, terdedah kepada ralat, dan mudah untuk tergesa-gesa atau terlepas pandang.
Kesilapan biasa yang sering kita lihat:
- Atribut yang boleh dicari: Atribut untuk memadankan pertanyaan dengan. Lupa untuk menetapkannya dan semuanya boleh dicari—termasuk URL imej dan ID dalaman, yang menghasilkan bunyi bising. Kadangkala, anda menambah terlalu banyak atau memasukkan yang tidak berkaitan yang hanya berguna untuk paparan atau penapisan. Perintah itu juga penting, tetapi itu sering diabaikan.
- Kedudukan tersuai: Metrik kualiti yang menjadikan sesetengah rekod lebih penting daripada yang lain. Ramai pelanggan gagal menambah sebarang isyarat perniagaan. Tanpa kedudukan tersuai, anda tidak boleh memutuskan perkara yang harus didahulukan antara dua item yang sepadan dengan "sarung iPhone" secara sama rata—buku terlaris atau yang tidak dibeli oleh sesiapa pun?
- Aspek: Atribut kategori yang boleh diperhalusi oleh pengguna carian mereka (jenama, jenis, dsb.) Sama ada terlalu sedikit, dan pengguna tidak boleh menapis dengan berkesan, atau terlalu banyak, dan UI menjadi menggembirakan. Lupa untuk menentukan yang mana yang harus dicari atau ditapis sahaja, dan anda mendapat senarai penambahbaikan yang tidak lengkap, atau isu prestasi.
- Pilihan pengisihan: Cara alternatif untuk mengisih indeks (cth, populariti menurun, harga menaik dan menurun, dsb.) Mudah diabaikan sepenuhnya kerana ia memerlukan pemahaman konsep indeks replika. Banyak perkara boleh menjadi salah—menggunakan tetapan customRanking dan bukannya menyusun mengikut (kriteria kedudukan pertama sebelum formula Algolia terbina dalam), atau menawarkan pengisihan populariti "Rendah hingga Tinggi" apabila hanya "Paling Popular" yang masuk akal.
Corak carian adalah sistematik
Berikut ialah satu perkara yang anda sedar selepas menghabiskan masa bertahun-tahun di Algolia dan melihat banyak indeks dan konfigurasi perkaitan yang berbeza: corak berulang. Sebilangan besar laman web e-dagang memerlukan pilihan pengisihan yang serupa. Kebanyakan platform media meletakkan kedudukan kandungan dengan cara yang boleh diramalkan. Amalan terbaik yang kami dokumentasikan bukan rawak—ia adalah kebijaksanaan terkumpul daripada beribu-ribu pelaksanaan.
Kesedaran ini membawa kepada persoalan: jika corak ini begitu konsisten, bolehkah AI mempelajarinya? Bolehkah kami mengekod kepakaran kami ke dalam sesuatu yang menganalisis data anda dan mencadangkan konfigurasi yang betul secara automatik?
Membina pembantu konfigurasi AI
Kami membina alat CLI yang menggunakan LLM untuk menganalisis data anda dan menjana konfigurasi Algolia. Pendekatannya mudah:
- Anda menyalurkan set data anda kepada model AI
- Model ini menggunakan amalan terbaik Algolia melalui gesaan yang direka dengan teliti dan menjana cadangan konfigurasi dengan penjelasan
- Alat ini mengesahkan output untuk mengurangkan halusinasi
⚠️Nota privasi: Alat ini menghantar data kepada OpenAI/Anthropic. Hanya gunakan set data yang tidak sensitif.
Analisis AI
Berikut ialah cadangan yang kami dapat semasa menganalisis set data e-dagang standard, menggunakan model Claude Haiku 3.5 Anthropic:
Atribut Boleh Dicari
- Nama
- Jenama
- Keterangan
- kategori.lvl0
- kategori.lvl1
- kategori.lvl2
- Warna
- Bahan
Alasan ejen itu tepat. Ia mengenal pasti atribut yang betul yang akan dicari oleh pengguna (dengan nama sebagai keutamaan tertinggi memandangkan ia adalah pengecam utama untuk produk, jenama sebagai sangat penting untuk penemuan produk, dsb.)
Ia juga secara eksplisit mengecualikan atribut berangka seperti harga, penilaian, inventori, atribut teknikal seperti objectID, produk_url, imej_url, atau atribut boolean seperti dalam_stock, yang pengguna tidak cari dengan pertanyaan.
Kedudukan Tersuai
- Desc(Penarafan_Bayesian)
- Desc(Penarafan_Kiraan)
- Desc(Inventori)
Perhatikan bagaimana ia memilih penarafan Bayesian berbanding penarafan mentah. Rasional yang dikongsi adalah betul-betul seperti yang diajar:
"Ini ialah metrik yang diproses yang memberikan penarafan yang dinormalisasi, diselaraskan secara statistik Mewakili isyarat kualiti yang lebih canggih berbanding penarafan mentah Membantu memaparkan produk berkualiti tinggi dengan pemarkahan yang lebih dipercayai Nilai berkisar antara 4.4 hingga 4.7 dalam sampel, menunjukkan pembezaan yang bermakna"
Inilah yang akan disyorkan oleh pakar—mengelakkan kesilapan biasa menggunakan penilaian mentah yang boleh dimainkan dengan beberapa ulasan 5 bintang.
Atribut untuk Faceting
- Kategori
- Dicari(Jenama)
- Warna
- Bahan
- Di_Saham
- Penarafan
- Harga
Aspek boleh dibuat boleh dicari apabila ia mempunyai banyak nilai yang berbeza, yang tidak boleh dipaparkan sekaligus dalam UI. Ejen dengan betul mengenal pasti jenama itu harus boleh dicari (kardinaliti tinggi), manakala warna dan bahan tidak perlu.
Pilihan Pengisihan
- Desc(Harga)
- ASC(Harga)
- Desc(Penarafan_Bayesian)
- Desc(Penarafan_Kiraan)
- Desc(Inventori)
Satu lagi contoh penaakulan bernuansa, ejen memutuskan untuk menyediakan dua pilihan untuk harga (Tinggi ke Rendah Dan Rendah ke Tinggi, yang merupakan pilihan pengisihan biasa dalam carian e-dagang) tetapi hanya pilihan menurun untuk penarafan_Bayesian (Adalah berguna untuk melihat produk yang paling popular terlebih dahulu, tetapi tidak sebaliknya), penarafan_Kiraan (Menunjukkan penglibatan pengguna) dan inventori (berguna untuk memeriksa kelimpahan produk).
Menyelam mendalam teknikal
Strategi dorongan
Mendapatkan keputusan yang baik memerlukan kejuruteraan segera yang teliti. Mari kita lihat gesaan atribut boleh dicari kami:
const prompt = `
Analyze these sample records and determine which attributes should be searchable in an Algolia search index.
Sample records:
${JSON.stringify(sampleRecords, null, 2)}
Step 1: Identify potential searchable attributes from the sample records
Step 2: Order attributes by search importance and user intent
Step 3: Determine modifier configuration (ordered vs unordered)
Step 4: Format final result with appropriate modifiers
CRITICAL RULES:
- Only suggest attributes that actually exist in the provided sample records, don't invent ones
- Only suggest attributes truly suitable for search. If no attributes are clearly searchable, return an empty array.
Rules for selecting searchable attributes:
INCLUDE text attributes that users search for:
- Names, titles, descriptions, summaries
- Brands, manufacturers, creators, authors
- Categories, types, genres
- Features, ingredients, cast, tags
- Locations, addresses
- Any text users might query
EXCLUDE attributes that are:
- URLs, IDs, dates, timestamps, booleans
- Numeric values for ranking/sorting
- Display-only or internal metadata
Rules for ordering attributes by search importance:
Order matters - first attributes have higher search relevance.
1. Primary identifiers (name, title) rank highest
2. Secondary identifiers (brand, creator) come next
3. Content attributes (description, features) follow
4. Consider user search patterns for this data type
Rules for equal ranking attributes:
To make matches in multiple attributes rank equally, combine them in comma-separated strings:
- "title,alternate_title" - treats both title fields equally
- "name,display_name" - treats both name fields equally
- "brand,manufacturer" - treats both brand fields equally
Rules for modifier configuration:
- Use "unordered(attribute)" for most cases (position doesn't matter)
- Use "ordered(attribute)" only when early words are more important
- For array attributes: ordered may make sense when early entries are more important (cast of actors) but not for equal importance (tags)
- Default to unordered unless position specifically matters
- Note: ordered modifier cannot be used with comma-separated attributes
Explain your answer step-by-step.
`;
Beberapa cerapan utama daripada merangka dan memperhalusi gesaan ini:
- Bersikap eksplisit: Anda harus tepat apabila memberitahu ejen perkara yang perlu disertakan dan dikecualikan. Memberi contoh sangat membantu, tetapi anda perlu memastikan anda mengekstrak prinsip untuk memastikan arahan anda generik dan mengelak daripada terlalu sesuai dengan set data tertentu yang anda analisis.
- Minta penaakulan: Penjelasan langkah demi langkah meningkatkan kualiti output. Dalam dokumentasi mereka, Anthropic menjelaskan bahawa "Memberi Claude ruang untuk berfikir boleh meningkatkan prestasinya secara mendadak. Teknik ini, dikenali sebagai rantaian pemikiran (Katil) dorongan, menggalakkan Claude untuk memecahkan masalah langkah demi langkah, yang membawa kepada output yang lebih tepat dan bernuansa.". Ambil perhatian bahawa CoT tidak khusus untuk Claude, tetapi perbatuan anda mungkin berbeza-beza bergantung pada setiap LLM.
- Tetapkan sempadan: Menjadi jelas tentang perkara yang tidak boleh dilakukan dan membenarkan model anda mengatakan "Saya tidak tahu" adalah beberapa cara penting untuk mengurangkan halusinasi.
Mengendalikan halusinasi
Walaupun dengan dorongan yang teliti, LLM kadangkala mencadangkan sifat yang tidak wujud.
Kami menambah fasa pengesahan untuk menanggalkan sebarang atribut yang tidak terdapat dalam set data.
const { object, usage } = await generateObject({
model,
maxTokens: 1000,
temperature: 0.1,
schema,
prompt,
});
// Validate that all suggested attributes actually exist in the records
const searchableAttributes = validateAttributes(
object.searchableAttributes,
sampleRecords,
);
CLI masih akan memberitahu anda atribut yang telah ditapis, yang berguna untuk mengenali corak dalam halusinasi: set data berkualiti rendah, bilangan atribut yang terhad atau kuasa model yang tidak mencukupi.
Pengurusan tetingkap konteks
Tetingkap konteks LLM ialah jumlah kandungan (diterjemahkan dalam token) bahawa model tertentu boleh mempertimbangkan sekaligus. Semakin lama gesaan, semakin dekat anda ke had.
Dalam eksperimen, kami sentiasa lulus rekod penuh, bukan hanya nama atribut. Ini penting kerana nama atribut sahaja tidak selalu memberikan konteks yang mencukupi. Tetapi ini mewujudkan cabaran dengan saiz segera:
Walaupun ini boleh dikendalikan secara berkumpulan, wawasan di sini ialah anda sebenarnya tidak memerlukan semua rekod, hanya sampel perwakilan. Malah 10 rekod secara konsisten menghasilkan cadangan berkualiti, sambil mengawal penggunaan token.
Dicadangkan oleh LinkedIn
Perbandingan model
Walaupun kami pada mulanya membina CLI dengan Claude 3.5 Haiku sebagai model lalai, adalah penting untuk membandingkan prestasi model yang berbeza apabila diberi tugas yang sama.
Kami mencuba:
- Claude Haiku, Model terpantas Anthropic sehingga hari ini
- Soneta Claude, Model berprestasi tinggi namun berpatutan Anthropic
- GPT-4.1 nano, Model GPT-4.1 OpenAI yang terpantas dan paling kos efektif
Claude Haiku muncul sebagai titik manis—hampir sama baiknya dengan Sonnet, pada 27% daripada kos.
Tiada perbezaan kualiti yang ketara antara 10 dan 100 rekod.
Apabila AI bergelut: pengajaran daripada kegagalan
Masalah halusinasi
AI suka membantu, tetapi ini kadangkala menghalang ketepatan. Sebagai contoh, dalam satu ujian, GPT-4.1 nano mencadangkan aspek pada kategori apabila set data tidak mengandungi atribut sedemikian.
Saya perhatikan bahawa halusinasi sedemikian berlaku lebih kerap dengan model yang dioptimumkan kelajuan, dan bertambah buruk dengan data berkualiti rendah.
Langkah pengesahan ada di sini untuk menangkap kesilapan sedemikian, tetapi ia menunjukkan bahawa AI tidak boleh dipercayai secara membuta tuli: ia memerlukan pengendalian dan penambahbaikan kes tepi dari semasa ke semasa.
Kualiti data penting
Skema dan kekaburan yang tidak konsisten boleh membawa kepada cadangan pelik:
- Rekod dengan atribut yang berbeza mengelirukan ejen, terutamanya kerana ia hanya mendapat subset set data
- Atribut pendua (cth, penarafan dan penarafan_dinormalisasi) memerlukan gesaan eksplisit supaya hanya satu yang diambil
Apabila kami menguji dengan set data yang mempunyai skema yang tidak konsisten, halusinasi meningkat secara mendadak. Ini membuktikan keperluan untuk pemeriksaan kesihatan sebelum analisis—AI tidak boleh menyelesaikan isu data asas.
Cabaran nuansa
Sesetengah corak lebih baik dikendalikan dengan kod atau campur tangan manusia:
- Aspek hierarki: Rentak padanan corak menerangkan categories.lvl0, categories.lvl1 kepada ejen
- Peraturan perniagaan yang kompleks: Kadangkala, tiada corak yang jelas muncul sebagai betul secara universal untuk kedudukan tersuai
- Kes tepi: Aspek Boolean ialah calon yang baik untuk ditandakan sebagai penapisSahaja, tetapi ini berfungsi dengan buruk jika dimaksudkan untuk digunakan dengan widget togol
Satu lagi kes penggunaan yang menarik ialah apabila ejen terpaksa berurusan dengan berbilang atribut yang serupa untuk kedudukan tersuai. Dalam set data produk, kami menambah penilaian_Bayesian Atribut kepada Nuansa Atribut Penarafan, yang merupakan purata semua penilaian, menggunakan penarafan_Kiraan. Inilah yang kami cadangkan dalam dokumentasi Agolia, kerana algoritma kedudukan menggunakan pemecahan seri: ia membandingkan rekod pada setiap kriteria, dalam susunan yang ditentukan, tetapi hanya bergerak ke seterusnya jika ia tidak dapat memecahkan seri.
Tetapi tangkapannya ialah, kami meninggalkan penarafan dan penarafan_Kira dalam rekod untuk berpegang pada apa yang biasanya kita lihat dalam set data pelanggan—bukan perkara biasa untuk meninggalkan lebih banyak data daripada yang anda perlukan. Dan bergantung pada model dan ketepatan gesaan, di sinilah kualiti cadangan akan berbeza secara drastik.
Apabila anda mempunyai data berulang, anda mesti sangat jelas dalam menggesa untuk mengelakkan ejen termasuk kedua-duanya—dan walaupun begitu, sukar untuk menjamin ia akan mematuhinya. Ini seterusnya menunjukkan bahawa menyimpan hanya data berkaitan carian dalam rekod anda menjadi kritikal apabila memprosesnya dengan alat sistematik seperti pembantu AI.
Membandingkan AI dengan konfigurasi manusia
Untuk menguji keberkesanan, saya memutuskan untuk menjalankan alat itu—kali ini menggunakan Claude Sonnet untuk ketepatan optimum—pada indeks yang saya cipta semasa saya menjadi pekerja baharu di Algolia. Ini adalah tahun 2018, dan ketika Piala Dunia FIFA akan bermula, saya mengindeks setiap perlawanan dengan maklumat tentang pasukan yang bermain, pada hari apa, di stadium apa, saluran TV yang menyiarkannya, fasa kejohanan itu, dan saya mengemas kini markah secara langsung apabila perlawanan akan berakhir.
Ini adalah pelaksanaan Algolia pengeluaran "sebenar" pertama saya, dan saya mengkonfigurasinya seperti yang saya jangkakan oleh mana-mana pelanggan: mengikuti dokumentasi, menetapkan ujian, sehingga perkara "kelihatan baik".
AI sebenarnya lebih baik daripada saya.
Atribut yang boleh dicari
Kedudukan tersuai
Atribut untuk aspek
Pilihan pengisihan
Konfigurasi saya penuh dengan kesilapan rookie:
- Saya membuat atribut hasil (Skor akhir) boleh dicari—tetapi siapa yang mencari "5-0"?
- Saya mempunyai tetapan kedudukan tersuai yang pelik pada selesai (Boolean, menunjukkan permainan telah berakhir) dan tarikhmasa (rentetan, yang tidak betul untuk kedudukan tersuai) yang merupakan rasional yang saya tidak dapat jelaskan hari ini
- Saya tidak mempunyai pengubah suai aspek, jadi tiada satu pun aspek saya boleh dicari, manakala terdapat 32 pasukan kebangsaan bermain, 15 penyiar TV dan 12 stadium—banyak untuk dimuatkan dalam skrin mudah alih!
- Saya terlupa sama sekali untuk menambah pilihan pengisihan
Berikut ialah cara AI memperbaikinya:
- Ia mengecualikan hasil dengan betul daripada atribut yang boleh dicari
- Ia dengan bijak mengelakkan kedudukan tersuai kerana ketiadaan sebarang atribut yang berdaya maju dalam set data, menganggap bahawa ia akan lebih sesuai untuk mencari atau menapis/faceting.
- Ia menambah pengubah suai aspek yang betul (Boleh dicari untuk rumah_pasukan, tandang_pasukan, saluran dan stadium)
- Ia mencadangkan pengisihan tarikh dan masa untuk "Permainan yang akan datang" dan "Susunan kronologi", dan nama untuk mengatur permainan mengikut kumpulan (yang disimpulkan berdasarkan nilai atribut)
Semua yang betul tentang konfigurasi manual saya juga diambil oleh ejen, hanya lebih baik, dengan membetulkan kesilapan pemula saya.
Ambil perhatian bahawa banyak penambahbaikan boleh dibuat lagi di peringkat set data (cth, menyediakan senarai semua pasukan dan bukannya rumah_pasukan dan di tempat lawan_pasukan untuk aspek yang lebih baik, menyimpan markah sebagai nombor, dsb.), yang akan menghasilkan tetapan perkaitan yang lebih baik. Di sini sekali lagi, AI melakukan yang terbaik dengan data yang dimilikinya.
Cubalah sendiri
Kod ini tersedia di GitHub untuk anda cuba: https://github.com/algolia/generative-relevance
# Install and setup
npm install
echo "ANTHROPIC_API_KEY=your_key" > .env
# Analyze your data
npm start -- analyze your-data.json --verbose
# Compare with existing index
npm start -- compare YOUR_APP_ID YOUR_API_KEY your_index --verbose
# Try different models
npm start -- analyze data.json --compare-models claude-3-5-haiku-latest,gpt-4.1-nano
- Cuba berbilang set data - Lihat cara AI mengendalikan struktur data yang berbeza
- Bandingkan dengan indeks sedia ada anda - Adakah AI mencadangkan penambahbaikan yang berkaitan?
- Uji lebih banyak model - PR dialu-alukan untuk menambah lebih banyak model OpenAI, Mistral, Gemini, dsb.
Lebih penting lagi, kami mahukan maklum balas anda! Kami amat berminat dengan:
- Kualiti cadangan pada data sebenar anda
- Kes tepi di mana AI bergelut
- Idea untuk penambahbaikan
Lihat apa-apa yang boleh kami perbaiki? Buka isu dan beritahu kami.
Mengenai kepakaran manusia
Walaupun AI mengendalikan corak sistematik dengan baik, pertimbangan manusia masih penting untuk:
- Peraturan khusus perniagaan: Terdapat isyarat yang hanya anda fahami dalam strategi perniagaan anda
- Peraturan industri: Keperluan pematuhan yang tidak jelas daripada data
- Pertimbangan budaya: Tingkah laku carian mungkin berbeza-beza bergantung pada pasaran
- Keputusan strategik: Sekiranya anda mengoptimumkan penukaran atau penemuan?
AI bukan sihir—ia melakukan apa yang anda minta. Gunakan ini sebagai asas yang membawa anda hampir ke garisan penamat, supaya anda boleh menumpukan usaha anda pada perkara yang hanya anda boleh lakukan.
Gambaran yang lebih besar
Eksperimen ini mengajar saya bahawa AI cemerlang dalam pengetahuan sistematik. Apabila amalan terbaik konsisten dan didokumentasikan dengan baik, AI boleh menggunakannya dengan berkesan. Ia tidak akan menangkap setiap nuansa kes penggunaan khusus anda, tetapi ia menyediakan asas yang kukuh untuk diperhalusi dan bukannya bermula dari awal.
Masa depan bukan AI menggantikan pakar carian, tetapi membantu setiap pengguna Algolia mengkonfigurasi carian seperti pakar. Dengan mengkomodifikasikan bahagian rutin konfigurasi, kami boleh membebaskan masa pembangun untuk menumpukan pada perkara yang menjadikan carian mereka unik: memahami pengguna mereka dan mencipta pengalaman yang luar biasa.
Data Analyst for Tech Startups | Driving Growth through Analytics & Optimization | SQL • Python • BigQuery • Looker Studio | Remote
3blnThe AI’s ability to spot rookie mistakes (like searchable ‘5-0’ scores 😅) shows how systematic patterns can be automated.