Login
Back to Blog
Text-Embedding-3-Small API оқулығы - OpenAI Embedding моделі бойынша нұсқаулық

Text-Embedding-3-Small API оқулығы - OpenAI Embedding моделі бойынша нұсқаулық

C
Crazyrouter Team
January 26, 2026
15 viewsҚазақшаTutorial
Share:

Семантикалық іздеу жүйесін немесе RAG (Retrieval-Augmented Generation) жүйесін құрып жатырсыз ба? Text-embedding-3-small – мәтінді сандық векторларға түрлендіретін, ұқсастық бойынша күшті іздеуді және контентті таңдауды мүмкін ететін OpenAI-дың ең жаңа embedding моделі.

Осы нұсқаулықта сіз мыналарды үйренесіз:

  • Text embeddings деген не және олардың маңыздылығы
  • Text-embedding-3-small API-ын қалай қолдану керек
  • Python және Node.js тілдеріндегі толық код мысалдары
  • Сақтауды оңтайландыру үшін custom өлшемдер
  • Бағаларды салыстыру және шығындарды оңтайландыру

Text-Embedding-3-Small деген не?#

Text-embedding-3-small – 2024 жылдың қаңтарында шығарылған OpenAI-дың ықшам embedding моделі. Ол мәтінді мағыналық мәнді ұстайтын 1536 өлшемді векторларға түрлендіреді, бұл келесілерге мүмкіндік береді:

  • Семантикалық іздеу: Тек кілт сөздерге емес, мағынасына қарай тиісті құжаттарды табу
  • RAG жүйелері: LLM жауаптары үшін контекстті шығарып алу
  • Ұқсастықты салыстыру: Ұсынымдар үшін мәтіндер арасындағы ұқсастықты салыстыру
  • Кластерлеу: Ұқсас құжаттарды топтарға біріктіру
  • Классификация: Мазмұнына қарай мәтінді санаттарға бөлу

Модель сипаттамалары#

SpecificationValue
Model Nametext-embedding-3-small
Default Dimensions1536
Custom Dimensions256, 512, 1024, 1536
Max Input Tokens8,191
OutputNormalized vector

Жылдам бастау#

Алдын ала талаптар#

  1. Crazyrouter сайтына тіркеліңіз
  2. Дашбордтан API кілтіңізді алыңыз
  3. Python 3.8+ немесе Node.js 16+

Python мысалы#

python
from openai import OpenAI

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

# Бір мәтін үшін embedding генерациялау
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 мысалы#

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 мысалы#

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"
  }'

Жауап:

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, ...]
    }
  ]
}

Топтық (batch) embedding#

Бірнеше мәтінді бір API шақыруында өңдеп, өнімділікті арттырыңыз:

python
from openai import OpenAI

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

# Batch embedding - бірнеше мәтінді бірден өңдеу
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
)

# Әр embedding-ке қол жеткізу
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

Custom өлшемдер#

Сақтау шығындарын азайту үшін кіші өлшемдерді қолданыңыз. Модель өлшемді азайтуды сапаны сақтай отырып қолдайды:

python
# 1536 орнына 512 өлшемді қолданыңыз
response = client.embeddings.create(
    model="text-embedding-3-small",
    input="Your text here",
    dimensions=512  # Options: 256, 512, 1024, 1536
)

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

Өлшемдерді салыстыру#

DimensionsStorage (per vector)Use Case
2561 KBМобильді қосымшалар, шектеулі сақтау орны
5122 KBТеңгерімді өнімділік
10244 KBЖоғары дәлдік қажет жағдайлар
15366 KBЕң жоғарғы дәлдік

Семантикалық іздеу жүйесін құру#

Міне, семантикалық іздеу жүйесін құрудың толық мысалы:

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):
    """Бір мәтін үшін embedding алу"""
    response = client.embeddings.create(
        model="text-embedding-3-small",
        input=text
    )
    return response.data[0].embedding

def cosine_similarity(a, b):
    """Екі вектор арасындағы косинустық ұқсастықты есептеу"""
    return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))

# Құжаттар дерекқоры
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"
]

# Барлық құжаттар үшін embedding-терді алдын ала есептеу
doc_embeddings = [get_embedding(doc) for doc in documents]

# Іздеу функциясы
def search(query, top_k=3):
    query_embedding = get_embedding(query)

    # Ұқсастықтарды есептеу
    similarities = [
        cosine_similarity(query_embedding, doc_emb)
        for doc_emb in doc_embeddings
    ]

    # Ең жақсы нәтижелерді алу
    results = sorted(
        zip(documents, similarities),
        key=lambda x: x[1],
        reverse=True
    )[:top_k]

    return results

# Іздеудің мысалы
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

Векторлық дерекқорлармен интеграция#

Pinecone-пен интеграция#

python
import pinecone
from openai import OpenAI

# Клиенттерді инициализациялау
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):
    """Мәтіндерге embedding жасап, Pinecone-ға сақтау"""
    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):
    """Сұрау embedding-імен Pinecone-де іздеу"""
    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-пен интеграция#

python
import chromadb
from openai import OpenAI

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

# ChromaDB-ны инициализациялау
chroma_client = chromadb.Client()
collection = chroma_client.create_collection("documents")

def get_embeddings(texts):
    """Бірнеше мәтін үшін embedding-терді алу"""
    response = client.embeddings.create(
        model="text-embedding-3-small",
        input=texts
    )
    return [data.embedding for data in response.data]

# Құжаттарды қосу
documents = ["doc1 content", "doc2 content", "doc3 content"]
embeddings = get_embeddings(documents)

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

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

Қолжетімді Embedding модельдер#

Crazyrouter бірнеше OpenAI embedding моделдеріне қолжетімділік береді:

ModelDimensionsPrice RatioBest For
text-embedding-3-small15360.01Жалпы қолдану, ең тиімді баға
text-embedding-3-large30720.065Жоғары дәлдік қажет жағдайлар
text-embedding-ada-00215360.05Мұра жүйелермен үйлесімділік

Бағаларды салыстыру#

ProviderModelPrice per 1M tokens
OpenAI Officialtext-embedding-3-small$0.020
Crazyroutertext-embedding-3-small$0.002
OpenAI Officialtext-embedding-3-large$0.130
Crazyroutertext-embedding-3-large$0.013

Баға туралы ескерту: Көрсетілген бағалар демонстрация үшін берілген және өзгеруі мүмкін. Нақты төлем сұрау сәтіндегі нақты уақыттағы бағаларға негізделеді.

Шығынды үнемдеу мысалы:

Айына 10M токен өңдейтін RAG жүйесі үшін:

  • OpenAI Official: $200/ай
  • Crazyrouter: $20/ай
  • Үнемдеу: 90%

Ең жақсы тәжірибелер#

1. Сұрауларды batch түрінде жіберіңіз#

python
# Дұрыс - бірнеше мәтін үшін бір API шақыру
response = client.embeddings.create(
    model="text-embedding-3-small",
    input=["text1", "text2", "text3"]  # 2048 мәтінге дейін
)

# Дұрыс емес - әр мәтін үшін бөлек API шақыру
for text in texts:
    response = client.embeddings.create(
        model="text-embedding-3-small",
        input=text
    )

2. Embedding-терді кэштеңіз#

python
import hashlib
import json

embedding_cache = {}

def get_embedding_cached(text):
    # Кэш кілтін жасау
    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. Қолайлы өлшемдерді қолданыңыз#

  • 256 өлшем: Мобильді қосымшалар, IoT құрылғылар
  • 512 өлшем: Сақтау орны шектеулі веб-қосымшалар
  • 1024 өлшем: Стандартты қосымшалар
  • 1536 өлшем: Ең жоғары дәлдік талап етілетін жағдайлар

Жиі қойылатын сұрақтар#

Text-embedding-3-small мен text-embedding-3-large арасындағы айырмашылық қандай?#

Text-embedding-3-small 1536 өлшемді векторлар шығарады және шығын тиімділігі үшін оңтайланған. Text-embedding-3-large 3072 өлшемді векторлар береді, дәлдігі жоғарырақ, бірақ құны 6.5 есе қымбат. Көпшілік қолданбалар үшін text-embedding-3-small өте жақсы нәтиже береді.

Embedding-терді жасағаннан кейін өлшемді азайта аламын ба?#

Иә, dimensions параметрін қолдану арқылы бірден кіші векторларды генерациялай аласыз. Бұл толық векторларды жасап, кейін оларды қысқартқаннан гөрі тиімді.

Бір сұрауда қанша мәтінге embedding жасай аламын?#

Бір API сұрауында 2048 мәтінге дейін embedding жасай аласыз. Үлкен деректер жиынтығы үшін сұрауларды 2048 элементтен тұратын топтарға бөліңіз.

Embedding-векторлар нормалданған ба?#

Иә, text-embedding-3-small бірлік ұзындықтағы нормалданған векторларды қайтарады, сондықтан есептеуді жылдамдату үшін cosine similarity орнына жәй dot product қолдана аласыз.

Бастау#

  1. Тіркеліңіз: Crazyrouter
  2. API кілтіңізді алыңыз дашбордтан
  3. SDK орнатыңыз: pip install openai немесе npm install openai
  4. Жоғарыдағы код мысалдарымен embedding жасауды бастаңыз

Қатысты мақалалар:

Сұрақтарыңыз болса, support@crazyrouter.com поштасына жазыңыз

Related Articles