{"title":"Anlamsal Arama (Gömmeler)","slug":"semantic-search","category":"concepts","summary":"Vektör gömmeleri kullanarak kavramsal bellek arama — yalnızca anahtar kelimelerle değil, anlamla bulun.","audience":["human","llm"],"tags":["concept","semantic","embeddings","vector-search"],"difficulty":"advanced","updated":"2026-06-27","word_count":495,"read_minutes":2,"lang":"tr","translated":true,"requested_lang":"tr","content_markdown":"\n# Anlamsal Arama (Gömmeler)\n\nSynapse, vektör gömmeleri kullanarak anlamsal aramayı destekler. FTS5'ten (anahtar kelime eşleştirme) farklı olarak anlamsal arama bellekleri **anlama** göre bulur — hiçbir anahtar kelime eşleşmese bile.\n\n## Nasıl Çalışır\n\n```\n1. Memory stored → embedding generated → vector stored\n2. Search query → embedding generated → vector compared\n3. Cosine similarity → top N results returned\n```\n\n### Gömmeler nedir?\n\nGömmeler, metnin sayısal vektör temsilleridir. Benzer anlama sahip metinlerin benzer vektörleri vardır. Synapse, her belleğin içeriği için bir vektör (örn. 1536 boyut) üretir.\n\n### Kosinüs benzerliği\n\nAnlamsal olarak benzer bellekleri bulmak için Synapse, sorgu vektörü ile her bellek vektörü arasındaki kosinüs benzerliğini hesaplar. Daha yüksek benzerlik = daha alakalı.\n\n## Anlamsal Arama Ne Zaman Kullanılır\n\n### Anlamsal aramayı şu durumda kullanın:\n\n- Saklandığından farklı şekilde tanımlanan \"X hakkındaki bellekler\" istediğinizde\n- FTS5 sonuç döndürmediğinde (anahtar kelime eşleşmesi yok)\n- Kavramsal gruplandırma istediğinizde (örn. tüm \"dağıtım\" bellekleri, bazıları \"release\" dese bile)\n- Sorgu bir soru olduğunda: \"kimlik doğrulamayı nasıl ele alıyoruz?\"\n\n### FTS5'i şu durumda kullanın:\n\n- Tam anahtar kelimeleri biliyorsanız\n- Boolean mantığı (AND, OR, NOT) gerekiyorsa\n- Milisaniyenin altında yanıt gerekiyorsa\n- Deyim eşleştirme istiyorsanız\n\n## Uç Nokta\n\n### GET /memory/semantic-search\n\n```bash\ncurl -H \"Authorization: Bearer YOUR_MIND_KEY\" \\\n     \"https://synapse.schaefer.zone/memory/semantic-search?q=container+orchestration\"\n```\n\nYanıt:\n\n```json\n{\n  \"results\": [\n    {\n      \"id\": \"mem_001\",\n      \"category\": \"project\",\n      \"key\": \"project_synapse_deployment\",\n      \"content\": \"Synapse deployed using Docker Swarm on vps1...\",\n      \"tags\": [\"docker\", \"swarm\", \"deployment\"],\n      \"similarity\": 0.89\n    },\n    {\n      \"id\": \"mem_042\",\n      \"category\": \"fact\",\n      \"key\": \"kubernetes_cluster\",\n      \"content\": \"We use Kubernetes for production orchestration...\",\n      \"tags\": [\"kubernetes\", \"orchestration\"],\n      \"similarity\": 0.84\n    }\n  ]\n}\n```\n\n## Örnekler\n\n### Dağıtım belleklerini bul\n\n```bash\n# FTS5 might miss some — semantic catches all\ncurl .../memory/semantic-search?q=deployment+process\n```\n\n\"deployment\", \"release\", \"publishing\", \"rolling out\" vb. hakkındaki bellekleri döndürür.\n\n### Kimlik doğrulama desenlerini bul\n\n```bash\ncurl .../memory/semantic-search?q=how+do+users+log+in\n```\n\nLogin, auth, JWT, oturum yönetimi, OAuth vb. hakkındaki bellekleri döndürür.\n\n### Benzer bellekleri bul\n\n```bash\n# Find memories similar to a specific one\ncurl .../memory/related/mem_001\n```\n\nAnlamsal benzerlik kullanır (paylaşılan etiketler VE gömme vektörleri aracılığıyla).\n\n## Gömme Üretimi\n\n### Gömmeler ne zaman üretilir?\n\n- **Bellek saklandığında** — gömme hizmeti yapılandırılmışsa, gömme senkron olarak üretilir\n- **Toplu üretim** — `POST /memory/embed-batch`, gömmesi eksik olan bellekler için gömme üretir\n- **Asenkron güncellemeler** — içerik güncellendiğinde gömme yeniden üretilir\n\n### Gömme sağlayıcıları\n\nSynapse, yapılandırılabilir gömme sağlayıcılarını destekler:\n\n- **OpenAI** (`text-embedding-3-small`, `text-embedding-3-large`)\n- **Yerel modeller** (Ollama veya benzeri ile)\n- **Özel** (gömme arayüzünü uygulayın)\n\nOrtam değişkenleriyle yapılandırın:\n\n```bash\nEMBEDDINGS_PROVIDER=openai\nEMBEDDINGS_API_KEY=sk-...\nEMBEDDINGS_MODEL=text-embedding-3-small\n```\n\n### Toplu üretim\n\nGömmesi eksik birçok belleği olan mind'ler için:\n\n```bash\n# Generate embeddings for up to 100 memories\ncurl -X POST https://synapse.schaefer.zone/memory/embed-batch \\\n  -H \"Authorization: Bearer YOUR_MIND_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"limit\": 100}'\n\n# Check progress\ncurl -H \"Authorization: Bearer YOUR_MIND_KEY\" \\\n     https://synapse.schaefer.zone/memory/embed-batch-status\n```\n\n## Performans\n\n| İşlem | Gecikme |\n|-----------|---------|\n| Gömme üretimi (OpenAI) | 100-200ms |\n| Anlamsal arama (1k bellek) | 50-100ms |\n| Anlamsal arama (10k bellek) | 200-500ms |\n| Toplu üretim (100 bellek) | 10-20s |\n\n> [!NOTE]\n> Anlamsal arama, vektör hesaplaması nedeniyle FTS5'ten daha yavaştır. Bilinen anahtar kelimeler için FTS5, kavramsal sorgular için anlamsal arama kullanın.\n\n## Sınırlamalar\n\n### Gömme maliyeti\n\nOpenAI kullanıyorsanız, gömme üretimi paraya mal olur (text-embedding-3-small için 1M token başına ~$0.02). Ortalama 100 token olan 10.000 bellek için ~$0.02 — ihmal edilebilir.\n\n### Soğuk başlangıç\n\nGömmeler yapılandırılmadan önce saklanan belleklerin gömmesi olmaz. Geri doldurmak için `POST /memory/embed-batch` çalıştırın.\n\n### Sağlayıcı bağımlılığı\n\nGömme sağlayıcısı çökerse, anlamsal arama zarif bir şekilde başarısız olur (boş sonuçlar veya hata döndürür). FTS5 hala çalışır.\n\n## Gömmeler Mevcut Değilse\n\nGömme hizmeti yapılandırılmamışsa:\n\n- `GET /memory/semantic-search` 503 Service Unavailable döndürür\n- `POST /memory` hala çalışır (sadece gömme üretilmez)\n- FTS5 arama hala çalışır\n\n## En İyi Uygulamalar\n\n> [!TIP]\n> - **Kavramsal sorgular için anlamsal kullanın** — \"X'i nasıl ele alıyoruz?\"\n> - **Belirli terimler için FTS5 kullanın** — \"docker swarm\"\n> - **Gömmeleri düzenli olarak geri doldurun** — `POST /memory/embed-batch`\n> - **Sağlayıcı sağlığını izleyin** — anlamsal arama buna bağlıdır\n> - **Etiketlerle birleştirin** — anlamsal + etiket filtresi sonuçları daraltır\n\n## Sonraki Adımlar\n\n- [FTS5 Arama](/docs/concepts/fts5-search)\n- [Memory API](/docs/api/memory)\n- [Mimari](/docs/concepts/architecture)\n","content_html":"<h1>Anlamsal Arama (Gömmeler)</h1>\n<p>Synapse, vektör gömmeleri kullanarak anlamsal aramayı destekler. FTS5&#39;ten (anahtar kelime eşleştirme) farklı olarak anlamsal arama bellekleri <strong>anlama</strong> göre bulur — hiçbir anahtar kelime eşleşmese bile.</p>\n<h2>Nasıl Çalışır</h2>\n<pre><code class=\"hljs language-plaintext\">1. Memory stored → embedding generated → vector stored\n2. Search query → embedding generated → vector compared\n3. Cosine similarity → top N results returned</code></pre><h3>Gömmeler nedir?</h3>\n<p>Gömmeler, metnin sayısal vektör temsilleridir. Benzer anlama sahip metinlerin benzer vektörleri vardır. Synapse, her belleğin içeriği için bir vektör (örn. 1536 boyut) üretir.</p>\n<h3>Kosinüs benzerliği</h3>\n<p>Anlamsal olarak benzer bellekleri bulmak için Synapse, sorgu vektörü ile her bellek vektörü arasındaki kosinüs benzerliğini hesaplar. Daha yüksek benzerlik = daha alakalı.</p>\n<h2>Anlamsal Arama Ne Zaman Kullanılır</h2>\n<h3>Anlamsal aramayı şu durumda kullanın:</h3>\n<ul>\n<li>Saklandığından farklı şekilde tanımlanan &quot;X hakkındaki bellekler&quot; istediğinizde</li>\n<li>FTS5 sonuç döndürmediğinde (anahtar kelime eşleşmesi yok)</li>\n<li>Kavramsal gruplandırma istediğinizde (örn. tüm &quot;dağıtım&quot; bellekleri, bazıları &quot;release&quot; dese bile)</li>\n<li>Sorgu bir soru olduğunda: &quot;kimlik doğrulamayı nasıl ele alıyoruz?&quot;</li>\n</ul>\n<h3>FTS5&#39;i şu durumda kullanın:</h3>\n<ul>\n<li>Tam anahtar kelimeleri biliyorsanız</li>\n<li>Boolean mantığı (AND, OR, NOT) gerekiyorsa</li>\n<li>Milisaniyenin altında yanıt gerekiyorsa</li>\n<li>Deyim eşleştirme istiyorsanız</li>\n</ul>\n<h2>Uç Nokta</h2>\n<h3>GET /memory/semantic-search</h3>\n<pre><code class=\"hljs language-bash\">curl -H <span class=\"hljs-string\">&quot;Authorization: Bearer YOUR_MIND_KEY&quot;</span> \\\n     <span class=\"hljs-string\">&quot;https://synapse.schaefer.zone/memory/semantic-search?q=container+orchestration&quot;</span></code></pre><p>Yanıt:</p>\n<pre><code class=\"hljs language-json\"><span class=\"hljs-punctuation\">{</span>\n  <span class=\"hljs-attr\">&quot;results&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-punctuation\">[</span>\n    <span class=\"hljs-punctuation\">{</span>\n      <span class=\"hljs-attr\">&quot;id&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;mem_001&quot;</span><span class=\"hljs-punctuation\">,</span>\n      <span class=\"hljs-attr\">&quot;category&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;project&quot;</span><span class=\"hljs-punctuation\">,</span>\n      <span class=\"hljs-attr\">&quot;key&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;project_synapse_deployment&quot;</span><span class=\"hljs-punctuation\">,</span>\n      <span class=\"hljs-attr\">&quot;content&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;Synapse deployed using Docker Swarm on vps1...&quot;</span><span class=\"hljs-punctuation\">,</span>\n      <span class=\"hljs-attr\">&quot;tags&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-punctuation\">[</span><span class=\"hljs-string\">&quot;docker&quot;</span><span class=\"hljs-punctuation\">,</span> <span class=\"hljs-string\">&quot;swarm&quot;</span><span class=\"hljs-punctuation\">,</span> <span class=\"hljs-string\">&quot;deployment&quot;</span><span class=\"hljs-punctuation\">]</span><span class=\"hljs-punctuation\">,</span>\n      <span class=\"hljs-attr\">&quot;similarity&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-number\">0.89</span>\n    <span class=\"hljs-punctuation\">}</span><span class=\"hljs-punctuation\">,</span>\n    <span class=\"hljs-punctuation\">{</span>\n      <span class=\"hljs-attr\">&quot;id&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;mem_042&quot;</span><span class=\"hljs-punctuation\">,</span>\n      <span class=\"hljs-attr\">&quot;category&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;fact&quot;</span><span class=\"hljs-punctuation\">,</span>\n      <span class=\"hljs-attr\">&quot;key&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;kubernetes_cluster&quot;</span><span class=\"hljs-punctuation\">,</span>\n      <span class=\"hljs-attr\">&quot;content&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;We use Kubernetes for production orchestration...&quot;</span><span class=\"hljs-punctuation\">,</span>\n      <span class=\"hljs-attr\">&quot;tags&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-punctuation\">[</span><span class=\"hljs-string\">&quot;kubernetes&quot;</span><span class=\"hljs-punctuation\">,</span> <span class=\"hljs-string\">&quot;orchestration&quot;</span><span class=\"hljs-punctuation\">]</span><span class=\"hljs-punctuation\">,</span>\n      <span class=\"hljs-attr\">&quot;similarity&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-number\">0.84</span>\n    <span class=\"hljs-punctuation\">}</span>\n  <span class=\"hljs-punctuation\">]</span>\n<span class=\"hljs-punctuation\">}</span></code></pre><h2>Örnekler</h2>\n<h3>Dağıtım belleklerini bul</h3>\n<pre><code class=\"hljs language-bash\"><span class=\"hljs-comment\"># FTS5 might miss some — semantic catches all</span>\ncurl .../memory/semantic-search?q=deployment+process</code></pre><p>&quot;deployment&quot;, &quot;release&quot;, &quot;publishing&quot;, &quot;rolling out&quot; vb. hakkındaki bellekleri döndürür.</p>\n<h3>Kimlik doğrulama desenlerini bul</h3>\n<pre><code class=\"hljs language-bash\">curl .../memory/semantic-search?q=how+<span class=\"hljs-keyword\">do</span>+<span class=\"hljs-built_in\">users</span>+<span class=\"hljs-built_in\">log</span>+<span class=\"hljs-keyword\">in</span></code></pre><p>Login, auth, JWT, oturum yönetimi, OAuth vb. hakkındaki bellekleri döndürür.</p>\n<h3>Benzer bellekleri bul</h3>\n<pre><code class=\"hljs language-bash\"><span class=\"hljs-comment\"># Find memories similar to a specific one</span>\ncurl .../memory/related/mem_001</code></pre><p>Anlamsal benzerlik kullanır (paylaşılan etiketler VE gömme vektörleri aracılığıyla).</p>\n<h2>Gömme Üretimi</h2>\n<h3>Gömmeler ne zaman üretilir?</h3>\n<ul>\n<li><strong>Bellek saklandığında</strong> — gömme hizmeti yapılandırılmışsa, gömme senkron olarak üretilir</li>\n<li><strong>Toplu üretim</strong> — <code>POST /memory/embed-batch</code>, gömmesi eksik olan bellekler için gömme üretir</li>\n<li><strong>Asenkron güncellemeler</strong> — içerik güncellendiğinde gömme yeniden üretilir</li>\n</ul>\n<h3>Gömme sağlayıcıları</h3>\n<p>Synapse, yapılandırılabilir gömme sağlayıcılarını destekler:</p>\n<ul>\n<li><strong>OpenAI</strong> (<code>text-embedding-3-small</code>, <code>text-embedding-3-large</code>)</li>\n<li><strong>Yerel modeller</strong> (Ollama veya benzeri ile)</li>\n<li><strong>Özel</strong> (gömme arayüzünü uygulayın)</li>\n</ul>\n<p>Ortam değişkenleriyle yapılandırın:</p>\n<pre><code class=\"hljs language-bash\">EMBEDDINGS_PROVIDER=openai\nEMBEDDINGS_API_KEY=sk-...\nEMBEDDINGS_MODEL=text-embedding-3-small</code></pre><h3>Toplu üretim</h3>\n<p>Gömmesi eksik birçok belleği olan mind&#39;ler için:</p>\n<pre><code class=\"hljs language-bash\"><span class=\"hljs-comment\"># Generate embeddings for up to 100 memories</span>\ncurl -X POST https://synapse.schaefer.zone/memory/embed-batch \\\n  -H <span class=\"hljs-string\">&quot;Authorization: Bearer YOUR_MIND_KEY&quot;</span> \\\n  -H <span class=\"hljs-string\">&quot;Content-Type: application/json&quot;</span> \\\n  -d <span class=\"hljs-string\">&#x27;{&quot;limit&quot;: 100}&#x27;</span>\n\n<span class=\"hljs-comment\"># Check progress</span>\ncurl -H <span class=\"hljs-string\">&quot;Authorization: Bearer YOUR_MIND_KEY&quot;</span> \\\n     https://synapse.schaefer.zone/memory/embed-batch-status</code></pre><h2>Performans</h2>\n<table>\n<thead>\n<tr>\n<th>İşlem</th>\n<th>Gecikme</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Gömme üretimi (OpenAI)</td>\n<td>100-200ms</td>\n</tr>\n<tr>\n<td>Anlamsal arama (1k bellek)</td>\n<td>50-100ms</td>\n</tr>\n<tr>\n<td>Anlamsal arama (10k bellek)</td>\n<td>200-500ms</td>\n</tr>\n<tr>\n<td>Toplu üretim (100 bellek)</td>\n<td>10-20s</td>\n</tr>\n</tbody></table>\n<div class=\"callout callout-note\">Anlamsal arama, vektör hesaplaması nedeniyle FTS5'ten daha yavaştır. Bilinen anahtar kelimeler için FTS5, kavramsal sorgular için anlamsal arama kullanın.</div><h2>Sınırlamalar</h2>\n<h3>Gömme maliyeti</h3>\n<p>OpenAI kullanıyorsanız, gömme üretimi paraya mal olur (text-embedding-3-small için 1M token başına ~$0.02). Ortalama 100 token olan 10.000 bellek için ~$0.02 — ihmal edilebilir.</p>\n<h3>Soğuk başlangıç</h3>\n<p>Gömmeler yapılandırılmadan önce saklanan belleklerin gömmesi olmaz. Geri doldurmak için <code>POST /memory/embed-batch</code> çalıştırın.</p>\n<h3>Sağlayıcı bağımlılığı</h3>\n<p>Gömme sağlayıcısı çökerse, anlamsal arama zarif bir şekilde başarısız olur (boş sonuçlar veya hata döndürür). FTS5 hala çalışır.</p>\n<h2>Gömmeler Mevcut Değilse</h2>\n<p>Gömme hizmeti yapılandırılmamışsa:</p>\n<ul>\n<li><code>GET /memory/semantic-search</code> 503 Service Unavailable döndürür</li>\n<li><code>POST /memory</code> hala çalışır (sadece gömme üretilmez)</li>\n<li>FTS5 arama hala çalışır</li>\n</ul>\n<h2>En İyi Uygulamalar</h2>\n<div class=\"callout callout-ok\"></div><h2>Sonraki Adımlar</h2>\n<ul>\n<li><a href=\"/docs/concepts/fts5-search\">FTS5 Arama</a></li>\n<li><a href=\"/docs/api/memory\">Memory API</a></li>\n<li><a href=\"/docs/concepts/architecture\">Mimari</a></li>\n</ul>\n","urls":{"html":"/docs/concepts/semantic-search","text":"/docs/concepts/semantic-search?format=text","json":"/docs/concepts/semantic-search?format=json","llm":"/docs/concepts/semantic-search?format=llm"},"translations_available":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"]}