Skip to main content

FTS5 Tam Metin Arama

Synapse, milisaniyenin altında tam metin bellek araması için SQLite FTS5'i nasıl kullanır.


FTS5 Tam Metin Arama

Synapse, hızlı ve esnek bellek araması için FTS5 (Full-Text Search 5) kullanır. Bu sayfa, nasıl çalıştığını ve etkili nasıl kullanılacağını açıklar.

FTS5 Nedir?

FTS5, bir SQLite uzantısıdır (uzantılar yoluyla PostgreSQL'de de mevcuttur) ve tam metin arama yetenekleri sağlar. Şunları yapar:

  • Hızlı anahtar kelime araması için metin içeriğini indeksler
  • Boolean operatörleri destekler (AND, OR, NOT)
  • Tırnak işaretleriyle deyim eşleştirme destekler
  • * ile ön ek eşleştirme destekler
  • Sonuçları alaka düzeyine göre sıralar

Synapse, tüm bellek içeriğini indekslemek için FTS5 kullanır ve binlerce bellekte milisaniyenin altında arama sağlar.

Synapse FTS5'i Nasıl Kullanır

POST /memory yaptığınızda:

  1. Bellek içeriği memories tablosunda saklanır
  2. İçerik aynı zamanda FTS5 sanal tablosuna eklenir
  3. FTS5 içeriği otomatik olarak tokenleştirir ve indeksler

GET /memory/search?q=... yaptığınızda:

  1. Synapse sorguyu FTS5 sözdizimi kullanarak ayrıştırır
  2. FTS5 indeksine karşı bir MATCH yürütür
  3. mind_id'ye göre filtreler (kiracı izolasyonu)
  4. Sıralanmış sonuçları döndürür

Sorgu Sözdizimi

Basit anahtar kelime arama

?q=docker

"docker" içeren bellekleri döndürür.

Birden çok anahtar kelime (örtük AND)

?q=docker+swarm
?q=docker%20swarm

HEM "docker" HEM de "swarm" içeren bellekleri döndürür.

Deyim eşleştirme

?q="docker+swarm"
?q=%22docker%20swarm%22

Tam "docker swarm" deyimini içeren bellekleri döndürür.

Ön ek eşleştirme

?q=docker*

"docker" ile başlayan kelimeleri (örn. "dockers", "dockerfile", "dockerize") içeren bellekleri döndürür.

Boolean OR

?q=docker+OR+kubernetes

"docker" VEYA "kubernetes" içeren bellekleri döndürür.

Boolean NOT

?q=docker+-swarm
?q=docker+NOT+swarm

"docker" içeren ama "swarm" içermeyen bellekleri döndürür.

Gruplama

?q=(docker+OR+kubernetes)+-test

"docker" veya "kubernetes" içeren ama "test" içermeyen bellekleri döndürür.

Pratik Örnekler

Bir proje hakkındaki bellekleri bul

curl -H "Authorization: Bearer YOUR_MIND_KEY" \
     "https://synapse.schaefer.zone/memory/search?q=synapse+deployment"

Tam deyimi bul

curl -H "Authorization: Bearer YOUR_MIND_KEY" \
     "https://synapse.schaefer.zone/memory/search?q=%22docker+swarm%22"

Test belleklerini hariç tut

curl -H "Authorization: Bearer YOUR_MIND_KEY" \
     "https://synapse.schaefer.zone/memory/search?q=production+-test"

Teknolojiye göre bul

curl -H "Authorization: Bearer YOUR_MIND_KEY" \
     "https://synapse.schaefer.zone/memory/search?q=(postgres+OR+sqlite)+-mysql"

Sıralama

FTS5, sonuçları BM25 algoritmasını kullanarak alaka düzeyine göre sıralar. Faktörler:

  • Terim sıklığı (terim ne sıklıkta görünüyor)
  • Ters belge sıklığı (daha nadir terimler daha yüksek sıralanır)
  • Belge uzunluğu (terimi içeren daha kısa belgeler daha yüksek sıralanır)
  • Sütun ağırlığı (başlık > içerik)

Sonuçlar sıralama düzeninde döndürülür (en alakalı önce).

Performans

İşlem Gecikme
100 bellek arama < 5ms
1.000 bellek arama < 10ms
10.000 bellek arama < 25ms
100.000 bellek arama < 100ms

FTS5, okuma ağırlıklı iş yükleri için yüksek oranda optimize edilmiştir.

Sınırlamalar

Kök ayırma (Stemming)

FTS5 varsayılan olarak kök ayırma yapmaz. "running" ve "run" farklı terimlerdir.

Geçici çözüm: Ön ek eşleştirme kullanın: ?q=run*

Yazım hatası toleransı

FTS5 bulanık eşleştirme desteklemez. Bir yazım hatası sonuç döndürmez.

Geçici çözüm: Kavramsal eşleştirme için anlamsal arama (/memory/semantic-search) kullanın.

Durum kelimeleri (Stop words)

Yaygın kelimeler (the, a, an, is) indekslenir ama arama için yararlı olmayabilir. FTS5 bunu otomatik olarak ele alır.

FTS5 ve Anlamsal Arama

Yön FTS5 Anlamsal Arama
Hız Milisaniyenin altında 50-100ms
Eşleştirme Tam anahtar kelimeler Kavramsal
Yazım hatası toleransı Yok Bazı
Kök ayırma Yok Örtük
Gömme gerektirir Hayır Evet
En uygun Belirli terimler Kavramlar

Anahtar kelimeleri bildiğinizde FTS5 kullanın. X'in farklı şekilde tanımlandığı "X hakkındaki bellekler" istediğinizde anlamsal arama kullanın.

En İyi Uygulamalar

Sonraki Adımlar