Kullanım alanlarına dön
Bilgi Tabanı

RAG chatbot API'si — üretimde Claude destekli bilgi tabanı asistanı

Çoğu dahili bilgi tabanı ölü dokümantasyondur — kimse hiçbir şeyi bulamaz. Claude destekli bir RAG chatbot'u bunları kaynak gösteren ve bilmediğinde reddeden gerçek bir asistana dönüştürür. Üretim kalıbı burada.

Son inceleme tarihi: .

Varsayılan modern bilgi tabanı chatbot mimarisi

Geleneksel bilgi tabanı araması bağlantılar döndürür; kullanıcı bunları okur. RAG bunu, kaynak atıfları içeren tek seferlik bir konuşma yanıtına dönüştürür. İyi uygulandığında kullanıcılar 5 belgeyi incelemek yerine 2 saniyede yanıt alır. Kötü uygulandığında chatbot halüsinasyon görür ve CTO projenizi bir yıllığına yasaklar. Bu sayfa aradaki farkı açıklar.

Üretim için minimum uygulanabilir yığın

  1. Vektör deposu: Zaten Postgres kullanıyorsanız pgvector; yönetilen hizmet için Pinecone veya Qdrant
  2. Gömme modelleri: text-embedding-3-large, doğrudan OpenAI'ye çağrılır — Kunavo gömme modelleri sunmaz ve her durumda gömme çağrısı üretim çağrısından ayrı bir istektir
  3. Getirme: hibrit (vektör + karşılıklı sıra füzyonlu BM25)
  4. Üretim: sistem isteminde cache_control ile Claude Sonnet 5
  5. Arayüz: akış yanıtları, alıntı oluşturma, "Bilmiyorum" geri dönüşü
rag_chat.py
from openai import OpenAI
client = OpenAI(api_key="sk-kn-...", base_url="https://api.kunavo.com/v1")

def chat(question: str, history: list[dict]) -> dict:
    chunks = hybrid_retrieve(question, k=5)  # vector + BM25
    context = "\n\n---\n\n".join(
        f"[doc:{c['id']}] {c['text']}" for c in chunks
    )
    resp = client.chat.completions.create(
        model="claude-sonnet-5",
        messages=[
            {"role": "system", "content": [{
                "type": "text",
                "text": (
                    "Answer only from Context. Cite [doc:N] for each claim. "
                    "If Context doesn't answer, say 'I don't have that.' "
                    "Be concise, no throat-clearing."
                ),
                "cache_control": {"type": "ephemeral"},
            }]},
            *history,
            {"role": "user", "content": f"# Context\n{context}\n\n# Q\n{question}"},
        ],
        max_tokens=600,
    )
    answer = resp.choices[0].message.content
    cited_ids = parse_citations(answer)  # extract [doc:N] references
    return {"answer": answer, "sources": [c for c in chunks if c["id"] in cited_ids]}

Üretim ölçeğinde maliyet

  • İlk dizinleme: her biri 500 token olan 5.000 belge için yaklaşık $0,25
  • Günde 1.000 sorgu: önbellekleme ile aylık yaklaşık $210
  • Günde 10.000 sorgu: aylık yaklaşık $2.100
  • Sonnet yerine Haiku 4.5 kullanılırsa: yaklaşık 4 kat daha ucuz, yaklaşık %85 yanıt kalitesi

Mimari ayrıntıların tamamı RAG uygulama kılavuzunda. Dile özgü ayar notları Japonca RAG derinlemesine incelemesinde ve İspanyolca RAG kılavuzunda.

Halüsinasyonları gerçekten önleyen üç yaklaşım

  • Her iddiadan alıntı yapın: model çıktısında [doc:42] etiketleri kullanın. Alıntılanan kimlik getirilen kümede yoksa model halüsinasyon görmüştür — engelleyin ve loglayın
  • Sistem isteminde açık ret: "Bağlam yanıt vermiyorsa 'Buna sahip değilim.' deyin." Bu olmadan model dünya bilgisinden tamamlar
  • 600 token çıktı sınırı: kısa yanıtlar genellikle doğru yanıtlardır. Ekstra uydurmaların sızdığı yer daha uzun çıktılardır

1. haftada ve 4. haftada gönderilecekler

HaftaKilometre taşı
1100 belge, tek parçalama stratejisi, temel vektör araması, 10 soruluk değerlendirme kümesi, yaklaşık %70 recall@5
2Tam derlem, hibrit getirme, 100 soruluk değerlendirme kümesi, zorunlu alıntılar, dahili beta
3Başarısız sorulara göre parçalamayı ayarlayın, dahili kullanıcılara sunun, CSAT'i ölçün
4İzleme + maliyet panosu, günlük harcama sınırı, herkese açık beta veya üretim lansmanı

/app/signup adresinden başlayın

$10'lık bir yükleme yaklaşık 100 bin belgenin ilk dizinlemesini ve 1.500 test sorgusunu karşılar — işlevsel bir prototip için fazlasıyla yeterlidir ve bakiye asla sona ermez. Ardından üretim yaklaşımları için eksiksiz RAG kılavuzunu okuyun.

SSS

Bir RAG sohbet robotunda sorgu başına maliyet ne kadardır?

İstem önbellekleme etkinken Claude Sonnet 4.6 ile sorgu başına yaklaşık $0,007, Claude Haiku 4.5 ile ise yaklaşık $0,001 — Claude Haiku 4.5, maliyetin yedide birine kalitenin yaklaşık %85'ini sunar.

Bir RAG sohbet robotunun halüsinasyon üretmesini nasıl önleyebilirim?

İşin büyük kısmını üç yöntem sağlar: modelin her iddia için bir [doc:N] kimliğine atıf yapmasını zorunlu kılın, system prompt'a açık bir yanıt vermeme talimatı ekleyin ve yanıtı max_tokens=600 ile sınırlandırın. Ardından yanıtı göstermeden önce atıf yapılan her kimliğin erişilen kümede bulunduğunu doğrulayın.

Bir RAG dizini hangi parça boyutunu kullanmalı?

Parça başına 1.000–1.500 karakter, 100–200 karakter çakışma kullanın; RecursiveCharacterTextSplitter ile parçalara ayırın ve text-embedding-3-large ile embedding oluşturun.

RAG erişimi için yalnızca vektör araması yeterli mi?

Hayır. Hibrit erişim, vektör benzerliğini BM25 anahtar kelime aramasıyla birleştirir; ardından iki sonucu karşılıklı sıralama füzyonuyla birleştirip en iyi 5 parçayı seçer.