# Ragmux

> Ragmux, uygulamanız ile OpenAI, Anthropic, Gemini, DeepSeek ve Ollama gibi sağlayıcılar arasında duran, kendi sunucunuzda çalışan tek binary'lik bir AI gateway'idir. Tek bir OpenAI uyumlu API sunar, bir doküman havuzu bağlanmış projelerde her isteğe RAG bağlamını kendisi ekler ve sağlayıcı kimlik bilgisini uygulamadan uzakta, şifreli tutar. Kullanıcılar, bağlantılar, projeler, dokümanlar, vektörler ve metriklerin tamamı pgvector'lü tek bir PostgreSQL'de durur — Redis yok, ayrı bir vektör veritabanı yok.

- Rolüm: Founder & Developer
- Sınıf: Amiral Gemileri
- Durum: Devam ediyor
- Başlangıç: 2026-09-18
- Teknolojiler: Go, PostgreSQL, pgvector, ParadeDB, Docker, OpenAI, Anthropic Claude, Google Gemini, DeepSeek, Ollama, Prometheus, OpenTelemetry, Cohere, Voyage AI
- Yetenekler: API Gateway Design, Provider Abstraction, RAG Pipeline Engineering, Hybrid Search, Vector Search, Rate Limiting, Cost Accounting, Secret Management, SSRF Defence, Horizontal Scaling, Observability, Open Source Maintenance
- Web sitesi: https://ragmux.com
- Kaynak kodu: https://github.com/ragmux/ragmux
- Kaynak: https://www.muhammetsafak.com.tr/portfolyo/ragmux/
- Dil: tr-TR
- Yazar: Muhammet Şafak

---
Ragmux, kendi verisiyle çalışan bir LLM özelliği kurarken retrieval'ın etrafında kalan işi — sağlayıcı anahtarının nerede duracağı, hangi uygulamanın hangi modeli kullanacağı, harcamanın nerede kesileceği — uygulamanın dışına taşımak için geliştirdiğim açık kaynak bir Go gateway'idir. Uygulama tek bir OpenAI uyumlu uca konuşur (`/v1/chat/completions` ve `/v1/models`, JSON ve SSE akışıyla); resmî SDK'larda değişen tek şey `base_url` ile `api_key` olur. İsteğin hangi sağlayıcıya gideceğini, hangi sistem prompt'unu taşıyacağını ve hangi doküman havuzundan bağlam alacağını **projenin bağlantısı** belirler — istemcinin gönderdiği `model` alanı yönlendirme yapmaz, yalnızca cevapta ve her akış parçasında olduğu gibi geri yankılanır, böylece o alanı karşılaştıran SDK'lar kırılmaz.

RAG tarafında PDF, DOCX, HTML, Markdown ve düz metin ayrıştırılır; chunk'lar bölüm ve sayfa sınırlarına saygı duyar, yani bir chunk hiçbir zaman iki bölüme ya da iki sayfaya yayılmaz ve her chunk tek bir başlık yolu taşır. Aranan şey hibrit olarak bulunur: vektör ve tam metin sıralamaları karşılıklı sıra birleşimiyle (reciprocal rank fusion) kaynaştırılır — bir ürün adının, hata kodunun ya da embedding modelinin bilmediği bir tanımlayıcının tam metin tarafından yakalanması için. Ek olarak ParadeDB BM25 arka ucu, kendi modelinizle ya da Cohere/Voyage API'leriyle yeniden sıralama ve mesafe eşiği vardır; hepsi opsiyoneldir ve bir retrieval başarısızlığı isteği düşürmez, kaydedilir ve istek bağlamsız devam eder. Sağlayıcı tarafında Anthropic ve Gemini istekleri, akışları ve araç çağrıları OpenAI şemasına çevrilir; Gemini'nin JSON Schema kabul etmeyen `parameters` alanı için şemalar bilinçli ve kayıplı biçimde sadeleştirilir — `additionalProperties` gibi anahtarlar düşürülür, `$ref` sekiz derinliğe kadar açılır, döngüsel referans metne indirgenir.

Güvenlik ve işletme tarafı ürünün gövdesinin yarısıdır. Sağlayıcı kimlik bilgileri AES-256-GCM ile, bağlantı kimliği ilişkilendirilmiş veri olarak mühürlenerek saklanır; yanlış bir `SECRET_KEY` ilk istekte değil açılışta, veritabanına mühürlenmiş bir kanaryayı okuyamadığı anda yakalanır. Sağlayıcı adresleri güvenilmeyen hedef sayılır ve özel ağlara çıkış varsayılan olarak reddedilir. Bu yasağa sağlayıcı adresleri için tanınan istisna ise **görsel indirmeye uygulanmaz**, çünkü bir `base_url`'ü editör yazar, bir görsel URL'ini ise anahtarı elinde tutan herkes. Üç anahtar türü var: `sk-proj-` projenin kendi anahtarı, `sk-user-` ve `sk-mgmt-` ise kapsam taşıyan kullanıcı anahtarları. Yönetim yüzeyinde bir anahtar hiçbir zaman sahibinin rolünü aşamaz — yetki, kapsamların o anki rolle kesişimidir ve her istekte veritabanından okunur; `/v1` tarafında rol hiç okunmaz, hesabın etkin olması ve anahtarın o projeye yetkili olması yeterlidir. Maliyet her istek için tahmin edilir ama **bilgidir**; harcama para eşiğiyle değil token tavanı ve günlük/aylık token bütçesiyle kesilir. Sayaçlar süreç değişkeni değil satır olduğu için birkaç kopya tek bir PostgreSQL'e bakarak aynı bütçeyi paylaşır, doküman işleme kiralama (lease) ile kopyalar arasında paylaştırılır, temizlik işi advisory lock ile tek bir lidere düşer ve akış için oturum yapışkanlığı gerekmez. Lisans AGPL-3.0-or-later.
