Topics

Site-wide search implementeren voor meertalige websites met Cloudflare AI Search

  • column

We hebben het geïmplementeerd op onze eigen site met een configuratie van Astro SSG + headless CMS.
De implementatiestappen op zich waren vrij eenvoudig, maar omdat onze site meertalig is opgebouwd, liepen we tegen enkele hobbels aan.

Wat is Cloudflare AI Search?

Voorheen bekend als AutoRAG, hernoemd in september 2025. Veel zoekresultaten betreffen de oude naam en oude API, dus let op.

Dat doet het in deze reeks stappen.

Crawlen → Markdown-conversie → Chunksplitsing → Inbedding → Vectoren + trefwoordindexconstructie

Er zijn twee API-systemen: search die zoekresultaten retourneert, en chat/completions die antwoorden genereert met RAG. We gebruiken vandaag alleen de eerste.

Configuratiepunten

Maak een instantie als volgt aan.

  • Selecteer WebCrawl als gegevensbron
  • Openbare URL's voor verkenning
  • Analysetype ingesteld op sitemap
  • Content selector ingesteld op main-element
  • Analysemodus: statische site
  • sitemap.xml opgegeven in specifieke sitemap
  • Ingebedde model ingesteld op @cf/baai/bge-m3 (voor Japanse sites)

Verder zijn de standaardinstellingen in orde.

Authenticatie en omgevingsvariabelen

Maak een API-token aan vanuit uw account.
Let op: niet alleen 'AI Search: lezen', maar ook 'Bewerken' en 'Uitvoeren' zijn vereist.
Het gemaakte token wordt gelezen via de omgevingsvariabele AI_SEARCH_TOKEN.

Opzet: 1 API-route + 1 component

Zoeken werkt via een Astro API-route (werkend als Pages Functions) die een REST API aanroept. Omdat API-tokens niet aan de browser kunnen worden blootgesteld, is proxying aan serverzijde noodzakelijk. Omdat Pages Functions geen binding voor AI Search heeft, gebruiken we native fetch in plaats van de SDK.

// Astro の API ルート(Pages Functions として動く)
const res = await fetch(
  `https://api.cloudflare.com/client/v4/accounts/${id}/ai-search/instances/${name}/search`,
  {
    method: 'POST',
    headers: { Authorization: `Bearer ${token}` },
    body: JSON.stringify({
      query,
      ai_search_options: {
        retrieval: {
          retrieval_type: 'hybrid',
          max_num_results: 50
        },
      },
    }),
  }
);

We hebben slechts 2 bestanden geïmplementeerd: een API-route en een zoek-UI component. Als toevoeging aan SSG was dit vrij lichtgewicht.

Zoekresultaten beperken tot de weergegeven taal op meertalige sites

Voor een normale site-zoekfunctie zou dit volstaan, maar bij meertaligheid wordt sitemap.xml in alle talen gelezen, waardoor zoekresultaten vermengd raken.

De oplossing is het definiëren van aangepaste metagegevens locale en filteren op filters bij het zoeken. Dit zorgt ervoor dat alleen de huidige taal in de zoekresultaten verschijnt.
Let op: dit kan niet worden bepaald aan de hand van het HTML lang-attribuut of og:locale.

<meta name="locale" content="ja_JP">

SEO-sitemap en zoeksitemap van elkaar scheiden

AI Search (Website-gegevensbron) crawlt via sitemap.

De openbare sitemap van onze site sluit echter opzettelijk bepaalde talen uit vanuit SEO-overwegingen. Dit resulteerde in een probleem waarbij de zoekresultaten voor die talen altijd 0 items waren.

Omdat we @astrojs/sitemap gebruiken voor sitemap-generatie, hebben we een aparte sitemap voor zoeken met alle talen gegenereerd.

Hoe zijn zoekresultaten geordend?

Het verschilt behoorlijk van wat je je voorstelt als je "AI-zoekopdracht" hoort.

AI Search verdeelt Japanse tekst in chunks van ongeveer 300-450 tekens.
Tot 50 gerelateerde chunks worden opgehaald, en de pagina's die deze chunks bevatten, verschijnen in de resultaten.
Pagina's met chunks die als zeer relevant worden beoordeeld, staan hoger. Omdat meerdere chunks uit één pagina kunnen worden geselecteerd, is het aantal zoekresultaten minder dan 50.

De aggregatie naar paginaniveau wordt aan de front-end gedaan. En in deze hele reeks processen wordt generatieve AI geen enkele keer gebruikt.

Samenvatting

Voor implementatie geldt als voorwaarde dat het domeinzone in Cloudflare ligt en dat het met Pages / Workers wordt beheerd, maar de implementatie is eenvoudig en zeer bruikbaar als je eenvoudige on-site zoekopdrachten wilt instellen.

Aan de andere kant, als je de infrastructuur niet wilt aanraken en alleen zoekopdrachten achteraf wilt toevoegen, of als je alle resultaten wilt tonen, of als je beheerfuncties voor operatoren zoals zoekopdrachtenlogboekanalyse, suggesties en synoniementwoordenboeken nodig hebt, is de traditionele ASP-aanpak sterker.

Dat gezegd hebbende, als een ASP implementeren te zwaar is, maar je toch zoekopdrachten wilt hebben, is dit een zeer aantrekkelijke optie voor sites van die omvang.

Auteur van dit artikel

Vanuit DTP de wereld van het web in gestapt en merkte al snel dat hij markering, frontend, directie en accessibility allemaal beheerst — een echte 'meester van techniek'. Sinds de oprichting van Liberogic een multitalent en inmiddels een levend naslagwerk in het bedrijf. Tegenwoordig is hij geïnteresseerd in de vraag "Kunnen we accessibility-implementatie meer aan AI overlaten?" en experimenteert hij graag met efficiëntie via prompts. Zowel technisch als mentaal nog volop in ontwikkeling.

Futa

IAAP-gecertificeerd webtoegankelijkheidsspecialist (WAS) / Opmaakingenieur / Frontend-ingenieur / Webdirecteur

Artikelen van deze medewerker bekijken

Ons sterke punt is ons betrouwbare teamstructuur en snelle responsiviteit

Bij Liberogic worden ervaren teamleden actief ingezet voor projectvoering, wat door klanten zeer wordt gewaardeerd.
We wijzen vakbekwaam projectmanagers en directors aan en streven ernaar projecten soepel te laten verlopen. We voorkomen onnodig kostenverhogingen door volledig inzet te vermijden en wijzen middelen toe waar ze het meest geschikt zijn. Onze snelheid bij taakanalyse en bij het opmaken en indienen van offertes is goed bekend.

* Wij voeren niet actief SES-achtige permanente werkzaamheden uit, dus graag van tevoren dank voor uw begrip.

U kunt vrijwel alle grote projectmanagementtools en chattoolsgebruiken, zoals Slack, Teams, Redmine, Backlog, Asana, Jira, Notion, Google Workspace, Zoom en Webex.

Neem contact met ons op voor advies over uw webvragen.

Casestudies