Login
Back to Blog
Text-Embedding-3-Small API Eğitimi - OpenAI Gömme Modeli Kılavuzu

Text-Embedding-3-Small API Eğitimi - OpenAI Gömme Modeli Kılavuzu

C
Crazyrouter Team
January 26, 2026
11 viewsTürkçeTutorial
Share:

Anlamsal bir arama motoru veya RAG (Retrieval-Augmented Generation) sistemi mi oluşturuyorsunuz? Text-embedding-3-small, metni sayısal vektörlere dönüştüren, güçlü benzerlik araması ve içerik getirme imkânı sağlayan OpenAI'nin en yeni gömme modelidir.

Bu rehberde şunları öğreneceksiniz:

  • Metin gömmeleri nedir ve neden önemlidir
  • Text-embedding-3-small API'si nasıl kullanılır
  • Python ve Node.js ile eksiksiz kod örnekleri
  • Depolama için optimize edilmiş özel boyutlar
  • Fiyat karşılaştırması ve maliyet optimizasyonu

Text-Embedding-3-Small Nedir?#

Text-embedding-3-small, Ocak 2024'te yayımlanan, OpenAI'nin kompakt gömme modelidir. Metni anlamsal anlamı yakalayan, 1536 boyutlu vektörlere dönüştürerek şunları mümkün kılar:

  • Anlamsal Arama: Sadece anahtar kelimelere değil, anlama dayalı olarak ilgili dokümanları bulun
  • RAG Sistemleri: LLM yanıtları için bağlam getirin
  • Benzerlik Eşleştirme: Öneriler için metin benzerliğini karşılaştırın
  • Kümeleme: Benzer dokümanları gruplayın
  • Sınıflandırma: Metni içeriğe göre kategorize edin

Model Özellikleri#

ÖzellikDeğer
Model Adıtext-embedding-3-small
Varsayılan Boyut1536
Özel Boyutlar256, 512, 1024, 1536
Maksimum Girdi Tokenı8,191
ÇıktıNormalleştirilmiş vektör

Hızlı Başlangıç#

Ön Koşullar#

  1. Crazyrouter sitesine kaydolun
  2. Panelden API anahtarınızı alın
  3. Python 3.8+ veya Node.js 16+

Python Örneği#

python
from openai import OpenAI

client = OpenAI(
    api_key="your-crazyrouter-api-key",
    base_url="https://crazyrouter.com/v1"
)

# Tek bir metin için gömme üret
response = client.embeddings.create(
    model="text-embedding-3-small",
    input="Machine learning is transforming industries worldwide."
)

embedding = response.data[0].embedding
print(f"Dimensions: {len(embedding)}")  # Output: 1536
print(f"First 5 values: {embedding[:5]}")

Node.js Örneği#

javascript
import OpenAI from 'openai';

const client = new OpenAI({
    apiKey: 'your-crazyrouter-api-key',
    baseURL: 'https://crazyrouter.com/v1'
});

async function getEmbedding(text) {
    const response = await client.embeddings.create({
        model: 'text-embedding-3-small',
        input: text
    });

    return response.data[0].embedding;
}

// Usage
const embedding = await getEmbedding('Machine learning is amazing');
console.log(`Dimensions: ${embedding.length}`);  // Output: 1536

cURL Örneği#

bash
curl -X POST https://crazyrouter.com/v1/embeddings \
  -H "Authorization: Bearer your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "text-embedding-3-small",
    "input": "Hello world"
  }'

Yanıt:

json
{
  "object": "list",
  "model": "text-embedding-3-small",
  "usage": {
    "prompt_tokens": 2,
    "total_tokens": 2
  },
  "data": [
    {
      "object": "embedding",
      "index": 0,
      "embedding": [-0.0020785425, -0.049085874, 0.02094679, ...]
    }
  ]
}

Toplu Gömme#

Daha iyi verimlilik için birden fazla metni tek bir API çağrısında işleyin:

python
from openai import OpenAI

client = OpenAI(
    api_key="your-crazyrouter-api-key",
    base_url="https://crazyrouter.com/v1"
)

# Toplu gömme - birden fazla metni aynı anda işle
texts = [
    "Python is a programming language",
    "JavaScript runs in browsers",
    "Machine learning uses neural networks"
]

response = client.embeddings.create(
    model="text-embedding-3-small",
    input=texts
)

# Her gömmeye eriş
for i, data in enumerate(response.data):
    print(f"Text {i}: {len(data.embedding)} dimensions")

# Output:
# Text 0: 1536 dimensions
# Text 1: 1536 dimensions
# Text 2: 1536 dimensions

Özel Boyutlar#

Daha küçük boyutlar kullanarak depolama maliyetlerini azaltın. Model, kaliteyi korurken boyut küçültmeyi destekler:

python
# 1536 yerine 512 boyut kullan
response = client.embeddings.create(
    model="text-embedding-3-small",
    input="Your text here",
    dimensions=512  # Seçenekler: 256, 512, 1024, 1536
)

embedding = response.data[0].embedding
print(f"Dimensions: {len(embedding)}")  # Output: 512

Boyut Karşılaştırması#

BoyutDepolama (vektör başına)Kullanım Senaryosu
2561 KBMobil uygulamalar, sınırlı depolama
5122 KBDengeli performans
10244 KBYüksek doğruluk ihtiyaçları
15366 KBMaksimum doğruluk

Anlamsal Arama Sistemi Kurma#

İşte anlamsal bir arama sistemi kurmanın eksiksiz bir örneği:

python
import numpy as np
from openai import OpenAI

client = OpenAI(
    api_key="your-crazyrouter-api-key",
    base_url="https://crazyrouter.com/v1"
)

def get_embedding(text):
    """Tek bir metin için gömme al"""
    response = client.embeddings.create(
        model="text-embedding-3-small",
        input=text
    )
    return response.data[0].embedding

def cosine_similarity(a, b):
    """İki vektör arasındaki kosinüs benzerliğini hesapla"""
    return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))

# Doküman veritabanı
documents = [
    "Python is great for data science and machine learning",
    "JavaScript is essential for web development",
    "Docker containers simplify deployment",
    "Kubernetes orchestrates container workloads",
    "PostgreSQL is a powerful relational database"
]

# Tüm dokümanlar için gömmeleri önceden hesapla
doc_embeddings = [get_embedding(doc) for doc in documents]

# Arama fonksiyonu
def search(query, top_k=3):
    query_embedding = get_embedding(query)

    # Benzerlikleri hesapla
    similarities = [
        cosine_similarity(query_embedding, doc_emb)
        for doc_emb in doc_embeddings
    ]

    # En iyi sonuçları al
    results = sorted(
        zip(documents, similarities),
        key=lambda x: x[1],
        reverse=True
    )[:top_k]

    return results

# Örnek arama
results = search("How to deploy applications?")
for doc, score in results:
    print(f"Score: {score:.4f} - {doc}")

# Output:
# Score: 0.8234 - Docker containers simplify deployment
# Score: 0.7891 - Kubernetes orchestrates container workloads
# Score: 0.6543 - PostgreSQL is a powerful relational database

Vektör Veritabanlarıyla Entegrasyon#

Pinecone Entegrasyonu#

python
import pinecone
from openai import OpenAI

# İstemcileri başlat
client = OpenAI(
    api_key="your-crazyrouter-api-key",
    base_url="https://crazyrouter.com/v1"
)

pinecone.init(api_key="your-pinecone-key")
index = pinecone.Index("your-index")

def embed_and_upsert(texts, ids):
    """Metinleri göm ve Pinecone'da sakla"""
    response = client.embeddings.create(
        model="text-embedding-3-small",
        input=texts
    )

    vectors = [
        (id, data.embedding)
        for id, data in zip(ids, response.data)
    ]

    index.upsert(vectors=vectors)

def search_pinecone(query, top_k=5):
    """Sorgu gömmesiyle Pinecone'da ara"""
    response = client.embeddings.create(
        model="text-embedding-3-small",
        input=query
    )

    results = index.query(
        vector=response.data[0].embedding,
        top_k=top_k
    )

    return results

ChromaDB Entegrasyonu#

python
import chromadb
from openai import OpenAI

client = OpenAI(
    api_key="your-crazyrouter-api-key",
    base_url="https://crazyrouter.com/v1"
)

# ChromaDB'yi başlat
chroma_client = chromadb.Client()
collection = chroma_client.create_collection("documents")

def get_embeddings(texts):
    """Birden fazla metin için gömmeleri al"""
    response = client.embeddings.create(
        model="text-embedding-3-small",
        input=texts
    )
    return [data.embedding for data in response.data]

# Doküman ekle
documents = ["doc1 content", "doc2 content", "doc3 content"]
embeddings = get_embeddings(documents)

collection.add(
    embeddings=embeddings,
    documents=documents,
    ids=["doc1", "doc2", "doc3"]
)

# Sorgu
query_embedding = get_embeddings(["search query"])[0]
results = collection.query(
    query_embeddings=[query_embedding],
    n_results=3
)

Mevcut Gömme Modelleri#

Crazyrouter, birden fazla OpenAI gömme modeline erişim sağlar:

ModelBoyutFiyat OranıEn Uygun Kullanım
text-embedding-3-small15360.01Genel kullanım, en iyi değer
text-embedding-3-large30720.065Yüksek hassasiyet gerektiren durumlar
text-embedding-ada-00215360.05Eski sistem uyumluluğu

Fiyat Karşılaştırması#

SağlayıcıModel1M token başına fiyat
OpenAI Resmitext-embedding-3-small$0.020
Crazyroutertext-embedding-3-small$0.002
OpenAI Resmitext-embedding-3-large$0.130
Crazyroutertext-embedding-3-large$0.013

Fiyat Uyarısı: Gösterilen fiyatlar örnek amaçlıdır ve değişebilir. Gerçek faturalandırma, istek zamanındaki gerçek zamanlı fiyatlara göre yapılır.

Maliyet Tasarrufu Örneği:

Aylık 10M token işleyen bir RAG sistemi için:

  • OpenAI Resmi: $200/ay
  • Crazyrouter: $20/ay
  • Tasarruf: %90

En İyi Uygulamalar#

1. İsteklerinizi Toplu Gönderin#

python
# İyi - birden fazla metin için tek API çağrısı
response = client.embeddings.create(
    model="text-embedding-3-small",
    input=["text1", "text2", "text3"]  # 2048 metne kadar
)

# Kötü - birden fazla API çağrısı
for text in texts:
    response = client.embeddings.create(
        model="text-embedding-3-small",
        input=text
    )

2. Gömmeleri Önbelleğe Alın#

python
import hashlib
import json

embedding_cache = {}

def get_embedding_cached(text):
    # Önbellek anahtarı oluştur
    cache_key = hashlib.md5(text.encode()).hexdigest()

    if cache_key in embedding_cache:
        return embedding_cache[cache_key]

    response = client.embeddings.create(
        model="text-embedding-3-small",
        input=text
    )

    embedding = response.data[0].embedding
    embedding_cache[cache_key] = embedding

    return embedding

3. Uygun Boyutları Kullanın#

  • 256 boyut: Mobil uygulamalar, IoT cihazları
  • 512 boyut: Depolama kısıtlı web uygulamaları
  • 1024 boyut: Standart uygulamalar
  • 1536 boyut: Maksimum doğruluk gereksinimleri

Sıkça Sorulan Sorular#

Text-embedding-3-small ile text-embedding-3-large arasındaki fark nedir?#

Text-embedding-3-small, 1536 boyutlu vektörler üretir ve maliyet verimliliği için optimize edilmiştir. Text-embedding-3-large ise 3072 boyutlu, daha yüksek doğruluk sağlayan vektörler üretir, ancak 6.5 kat daha pahalıdır. Çoğu uygulama için text-embedding-3-small mükemmel sonuçlar sunar.

Gömme ürettikten sonra boyutu küçültebilir miyim?#

Evet, daha küçük vektörler üretmek için dimensions parametresini kullanabilirsiniz. Bu, tam boyutlu vektör üretip sonradan kısaltmaktan daha verimlidir.

Tek bir istekte kaç metni gömebilirim?#

Tek bir API isteğinde 2048 metne kadar gömme yapabilirsiniz. Büyük veri kümeleri için isteklerinizi 2048'lik gruplar halinde toplu olarak gönderin.

Gömmeler normalleştirilmiş mi?#

Evet, text-embedding-3-small birim uzunlukta (normalize) vektörler döndürür, dolayısıyla daha hızlı hesaplama için kosinüs benzerliği yerine noktasal çarpım (dot product) kullanabilirsiniz.

Başlarken#

  1. Crazyrouter üzerinde kayıt olun
  2. Panelden API anahtarınızı alın
  3. SDK'yı kurun: pip install openai veya npm install openai
  4. Yukarıdaki kod örnekleriyle gömme işlemine başlayın

İlgili Yazılar:

Sorularınız için: support@crazyrouter.com

Related Articles