Başlangıç

Satın almadan yayına: bir zip, üç komut ve bir script etiketi. Çalıştıracak sunucu, yönetecek API anahtarı ve sorgu başına ödenecek ücret yok — arama ziyaretçinin kendi cihazında çalışıyor.

1. Satın alma ve zip

Lisans satın aldığınızda ödeme sayfasından teşekkür sayfasına yönlendirilirsiniz. O sayfa lisans anahtarınızı gösterir ve indirme bağlantısını verir. Anahtar şu biçimdedir:

LE-XXXX-XXXX-XXXX-XXXX

Anahtarı saklayın. Sistemde hesap ya da parola yok; kimliğiniz bu anahtar. Güncellemeleri indirmek için de aynı anahtarı kullanacaksınız. Kaybederseniz e-posta atın, siparişinizden bulup geri veririz.

İndirdiğiniz zip şunları içerir:

lightembed-1.0.0.zip
├── model-tr-1.0.0.bin          size özel parmak izli model
├── lightembed-cli-1.0.0.tgz    komut satırı aracı
├── lightembed-client-1.0.0.tgz tarayıcı istemcisi ve arama kutusu
├── LICENCE.txt                 lisans metni ve anahtarınız
└── docs/                       bu sayfanın çevrimdışı kopyası

2. Kurulum

Paketler npm kayıt defterinde yayınlanmıyor; zip'in içinden kuruluyor:

unzip lightembed-1.0.0.zip -d lightembed
cd lightembed
npm install ./lightembed-cli-1.0.0.tgz ./lightembed-client-1.0.0.tgz

Bu kurulum ağa çıkmaz — paketlerin hiçbir bağımlılığı yok, arama motoru (WebAssembly) da CLI paketinin içinde geliyor. Doğrulamak için:

npx lightembed inspect ./model-tr-1.0.0.bin

3. İçeriğinizi indeksleyin

Elinizde bir içerik dizini varsa:

npx lightembed index ./icerik \
  --model ./model-tr-1.0.0.bin \
  --out ./public/lightembed \
  --base-url https://siteniz.com

Elinizde yalnızca yayındaki site varsa, önce onu indirin:

npx lightembed crawl https://siteniz.com/dokumanlar/ --out ./icerik

crawl, sitenin URL yapısını diske olduğu gibi yansıtır; böylece sonuç bağlantıları gerçek sayfalara gider. robots.txt'e uyar, istekleri sırayla ve aralıklı gönderir, ve hiçbir sayfa indiremezse sessizce boş bir dizin bırakmak yerine hata verir.

En çok dikkat isteyen ayar: --content-selector. HTML indekslerken sayfanın hangi bölümünün içerik sayılacağını bu seçer (main, .article, #icerik gibi). Yanlış yazarsanız indeks makale yerine menü ve altbilgi metnini tutar — arama "çalışmaz" değil, "saçmalar". Bu yüzden hiçbir dosyada eşleşmeyen bir selector hata verir.

4. Sayfanıza aramayı ekleyin

Hazır bileşen — bir script etiketi ve bir eleman:

<script type="module" src="/lightembed/widget.mjs"></script>
<lightembed-search src="/lightembed" hotkey="cmd+k" placeholder="Belgelerde ara…">
</lightembed-search>

Ya da kendiniz sürün:

import { createSearch } from 'lightembed-client';

const search = await createSearch('/lightembed');

// Odaklanınca ısıt: indirme kullanıcı yazarken gerçekleşir, böylece ilk arama
// onuncu arama gibi hissettirir.
input.addEventListener('focus', () => search.warm());

const hits = await search.query('vergi iadesi nasıl alınır', { topK: 5 });

public/lightembed/ dizinini herhangi bir statik sunucuya kopyalayabilirsiniz. Sunucu gerektiren hiçbir şey yok.

Ne, ne zaman iniyor

AnBayt (gzip)
Sayfa açılışı8,2 KB — manifest, widget ve istemci
Ziyaretçi arama kutusuna odaklanıncamotor 48 KB + model 2,58 MB + indeks
Sonraki her arama0

Hiç aramayan bir ziyaretçi 8,2 KB öder. Arayan bir kez öder, o da yazarken.

5. Güncelleme

İçerik değiştikçe lightembed index komutunu tekrar çalıştırın. Yeni bir model sürümü çıktığında:

npx lightembed update --key LE-XXXX-XXXX-XXXX-XXXX
npm install ./lightembed-update/lightembed-cli-<yeni>.tgz

Komut, lisansınızın kapsadığı en yeni sürümü indirip ./lightembed-update/ içine açar. Model dosyasını yenisiyle değiştirin. İlk 12 ay bütün güncellemeler dahildir; sonrası isteğe bağlı $10/yıl, ve yenilemeseniz de elinizdeki sürüm süresiz çalışmaya devam eder.

Model değişince indeksi yeniden kurmak gerekir mi:

Model değişimiİndeks
1.2.0 → 1.2.1geçerli kalır
1.2.0 → 1.3.0geçerli kalır
1.2.0 → 2.0.0yeniden kurulmalı

Major sürüm gömme uzayını taşır. Yeni uzayda gömülmüş bir sorguyu eski uzayda gömülmüş belgelerle karşılaştırmak, başka hiçbir belirtisi olmayan, kendinden emin ve yanlış sonuçlar üretir — bu yüzden istemci sessizce bozulmak yerine aramayı reddedip yeniden indekslemenizi söyler.

Sorun giderme

"index was built with model X but Y is loaded" — indeksin yanındaki model dosyası onu kuran model değil. lightembed index'i tekrar çalıştırın ya da doğru modeli geri koyun.

Sonuçlar ilgili ama aradığım tam terim yok. Terim bir kod bloğunun içindeyse --include-code'a bakın. Değilse aramanın anahtar kelime yarısı onu yakalamalıydı; --lexical-weight değerini yükseltmeyi deneyin (parça numarası ve hata kodu arayan siteler için 12, soru soranlar için 00,5).

İlk aramada yavaş. warm()'ı daha erken çağırın — odaklanmada ya da arama düğmesinin üzerine gelindiğinde.

Çözülmeyen her şey için: mertcobanov@gmail.com. 14 gün içindeyseniz iade de sorgusuz.