# Pencarian Teks Penuh FTS5 SUMMARY: Bagaimana Synapse menggunakan SQLite FTS5 untuk pencarian memori teks penuh sub-milidetik. Pencarian Teks Penuh FTS5 Synapse menggunakan FTS5 (Full-Text Search 5) untuk pencarian memori yang cepat dan fleksibel. Halaman ini menjelaskan cara kerjanya dan cara menggunakannya secara efektif. Apa itu FTS5? FTS5 adalah ekstensi SQLite (juga tersedia di PostgreSQL melalui ekstensi) yang menyediakan kemampuan pencarian teks penuh. FTS5: - Mengindeks konten teks untuk pencarian kata kunci yang cepat - Mendukung operator boolean (AND, OR, NOT) - Mendukung pencocokan frasa dengan tanda kutip - Mendukung pencocokan prefix dengan - Memberi peringkat hasil berdasarkan relevansi Synapse menggunakan FTS5 untuk mengindeks semua konten memori, memungkinkan pencarian sub-milidetik di ribuan memori. Bagaimana Synapse Menggunakan FTS5 Saat Anda : 1. Konten memori disimpan di tabel 2. Konten juga dimasukkan ke tabel virtual FTS5 3. FTS5 secara otomatis menokenisasi dan mengindeks konten Saat Anda : 1. Synapse mengurai kueri menggunakan sintaks FTS5 2. Menjalankan terhadap indeks FTS5 3. Memfilter berdasarkan (isolasi tenant) 4. Mengembalikan hasil yang diberi peringkat Sintaks Kueri Pencarian kata kunci sederhana [CODE BLOCK] Mengembalikan memori yang mengandung "docker". Beberapa kata kunci (AND implisit) [CODE BLOCK] Mengembalikan memori yang mengandung "docker" DAN "swarm". Pencocokan frasa [CODE BLOCK] Mengembalikan memori yang mengandung frasa persis "docker swarm". Pencocokan prefix [CODE BLOCK] Mengembalikan memori yang mengandung kata yang dimulai dengan "docker" (mis. "dockers", "dockerfile", "dockerize"). Boolean OR [CODE BLOCK] Mengembalikan memori yang mengandung "docker" ATAU "kubernetes". Boolean NOT [CODE BLOCK] Mengembalikan memori yang mengandung "docker" tetapi TIDAK "swarm". Pengelompokan [CODE BLOCK] Mengembalikan memori yang mengandung "docker" atau "kubernetes", tetapi tidak "test". Contoh Praktis Mencari memori tentang sebuah proyek [CODE BLOCK] Mencari frasa persis [CODE BLOCK] Mengecualikan memori uji [CODE BLOCK] Mencari berdasarkan teknologi [CODE BLOCK] Peringkat FTS5 memberi peringkat hasil berdasarkan relevansi menggunakan algoritma BM25. Faktor: - Frekuensi istilah (seberapa sering istilah muncul) - Inverse document frequency (istilah yang lebih langka berperingkat lebih tinggi) - Panjang dokumen (dokumen lebih pendek dengan istilah tersebut berperingkat lebih tinggi) - Bobot kolom (title > content) Hasil dikembalikan dalam urutan peringkat (paling relevan pertama). Performa | Operasi | Latensi | |-----------|---------| | Mencari 100 memori | < 5ms | | Mencari 1.000 memori | < 10ms | | Mencari 10.000 memori | < 25ms | | Mencari 100.000 memori | < 100ms | FTS5 sangat dioptimalkan untuk beban kerja yang banyak dibaca. Batasan Stemming FTS5 tidak melakukan stemming secara default. "running" dan "run" adalah istilah yang berbeda. Solusi: Gunakan pencocokan prefix: Toleransi typo FTS5 tidak mendukung pencocokan fuzzy. Typo akan mengembalikan tidak ada hasil. Solusi: Gunakan pencarian semantik () untuk pencocokan konseptual. Stop words Kata umum (the, a, an, is) diindeks tetapi mungkin tidak berguna untuk pencarian. FTS5 menangani ini secara otomatis. FTS5 vs Pencarian Semantik | Aspek | FTS5 | Pencarian Semantik | |--------|------|-----------------| | Kecepatan | Sub-milidetik | 50-100ms | | Pencocokan | Kata kunci persis | Konseptual | | Toleransi typo | Tidak ada | Sebagian | | Stemming | Tidak ada | Implisit | | Memerlukan embeddings | Tidak | Ya | | Terbaik untuk | Istilah spesifik | Konsep | Gunakan FTS5 ketika Anda tahu kata kuncinya. Gunakan pencarian semantik ketika Anda ingin "memori tentang X" di mana X dideskripsikan secara berbeda. Praktik Terbaik > [!TIP] > - Gunakan istilah spesifik — "docker swarm" lebih baik dari "container orchestration" > - Kutip frasa — memastikan pencocokan frasa > - Gunakan prefix untuk variasi — menangkap "deploy", "deployment", "deploying" > - Kecualikan kebisingan — memfilter memori uji > - Kombinasikan dengan tag — mempersempit hasil Langkah Berikutnya - Pencarian Semantik - Memory API - Praktik Terbaik Memori