πŸ”€ Π’ΠΎΠΊΠ΅Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ эмбСддинги

Π€ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ тСкста для LLM

ВокСнизация опрСдСляСт ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ, ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈ качСство Π½Π° нСанглийских языках β€” русский тСкст Π² GPT-4 стоит Π² 2-3Γ— Π΄ΠΎΡ€ΠΎΠΆΠ΅ английского ΠΏΡ€ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ смыслС.

πŸ’‘ 1. ВокСнизация β€” ΠΏΠΎΡ‡Π΅ΠΌΡƒ это Π²Π°ΠΆΠ½ΠΎ

LLM Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с тСкстом Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. ВСкст β†’ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ β†’ Ρ†Π΅Π»Ρ‹Π΅ числа β†’ embeddings.

ΠžΡ‚ качСства Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ зависит:

  • Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ (мСньшС Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² = быстрСС)
  • Π‘Ρ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ (ΠΎΠΏΠ»Π°Ρ‚Π° Π·Π° Ρ‚ΠΎΠΊΠ΅Π½Ρ‹, Π½Π΅ Π·Π° символы)
  • ΠšΠ°Ρ‡Π΅ΡΡ‚Π²ΠΎ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… языках (плохая токСнизация = ΠΏΠ»ΠΎΡ…ΠΎ Π½Π° Π½Π΅-английском)

πŸ”€ 2. BPE (Byte Pair Encoding) β€” стандарт

Алгоритм

1. НачинаСм с Π±ΡƒΠΊΠ² (ΠΈΠ»ΠΈ Π±Π°ΠΉΡ‚ΠΎΠ²) ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ²
2. Находим ΡΠ°ΠΌΡƒΡŽ Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΏΠ°Ρ€Ρƒ сосСдних Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ²
3. ОбъСдиняСм Π² Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½
4. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅ΠΌ V Ρ€Π°Π· (V = Ρ€Π°Π·ΠΌΠ΅Ρ€ словаря)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

ΠšΠΎΡ€ΠΏΡƒΡ: "low low low low lower lower newest newest newest newest"
Π¨Π°Π³ 1: l, o, w, e, r, n, s, t (Π±ΡƒΠΊΠ²Ρ‹)
Π¨Π°Π³ 2: lo (частая ΠΏΠ°Ρ€Π°)
Π¨Π°Π³ 3: low (частая ΠΏΠ°Ρ€Π° lo+w)
...
Π€ΠΈΠ½Π°Π»: "low" = 1 Ρ‚ΠΎΠΊΠ΅Π½, "er" = 1 Ρ‚ΠΎΠΊΠ΅Π½, "newest" = 1 Ρ‚ΠΎΠΊΠ΅Π½

Byte-level BPE (GPT-2/3/4, Llama)

  • Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π±Π°ΠΉΡ‚ΠΎΠ², Π½Π΅ символов
  • Π›ΡŽΠ±ΠΎΠΉ тСкст (любой язык, эмодзи) ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½
  • НС Π±Ρ‹Π²Π°Π΅Ρ‚ β€œunknown tokens”

🧩 3. Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹

ΠœΡƒΠ»ΡŒΡ‚ΠΈΡΠ·Ρ‹Ρ‡Π½ΠΎΡΡ‚ΡŒ

Для русского тСкста смотритС символов Π½Π° Ρ‚ΠΎΠΊΠ΅Π½ β€” Ρ‡Π΅ΠΌ мСньшС, Ρ‚Π΅ΠΌ Π΄ΠΎΡ€ΠΎΠΆΠ΅ inference ΠΏΡ€ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΎΠ±ΡŠΡ‘ΠΌΠ΅ смысла.

Tiktoken (OpenAI: GPT-4, GPT-5)

  • Byte-level BPE
  • ~100K ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ
  • Английский: ~4 символа = 1 Ρ‚ΠΎΠΊΠ΅Π½
  • Русский: ~1.5-2 символа = 1 Ρ‚ΠΎΠΊΠ΅Π½ (Ρ…ΡƒΠΆΠ΅!)
  • cl100k_base (GPT-4), o200k_base (GPT-5)

SentencePiece (Google: Llama, T5, GLM)

  • BPE ΠΈΠ»ΠΈ Unigram
  • ~32K-128K ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ
  • НС Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ словами
  • Π―Π·Ρ‹ΠΊΠΎ-нСзависимый

Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°

Π―Π·Ρ‹ΠΊΠ‘ΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π½Π° Ρ‚ΠΎΠΊΠ΅Π½ (GPT-4)
English4.0
French3.8
Russian1.7
Chinese0.6
Japanese0.5
Korean0.7

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: русский/китайский/японский Π² 2-8Γ— Π΄ΠΎΡ€ΠΎΠΆΠ΅ Π·Π° Ρ‚ΠΎΡ‚ ΠΆΠ΅ тСкст.

ΠœΠ½ΠΎΠ³ΠΎΡΠ·Ρ‹Ρ‡Π½Ρ‹Π΅ Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹

  • GPT-5 o200k: ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ для Π½Π΅-английских языков
  • Qwen tokenizer: ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΠΎΠ΄ китайский
  • GLM tokenizer: ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΠΎΠ΄ китайский + английский
  • DeepSeek: ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΠΎΠ΄ китайский

🏷️ 4. Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹:

<BOS>    β€” Beginning of Sequence (Π½Π°Ρ‡Π°Π»ΠΎ)
<EOS>    β€” End of Sequence (ΠΊΠΎΠ½Π΅Ρ† Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ)
<PAD>    β€” Padding (Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ для batching)
<UNK>    β€” Unknown (нСизвСстный Ρ‚ΠΎΠΊΠ΅Π½ β€” Ρ€Π΅Π΄ΠΊΠΎ Π² byte-level)
<system> β€” Role marker (system role Π² Ρ‡Π°Ρ‚Π΅)
<user>   β€” Role marker (user role)
<assistant> β€” Role marker (assistant role)
<tool>   β€” Tool call marker

πŸ“ 5. Embeddings β€” Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ прСдставлСния

Token Embeddings

token_id β†’ Embedding Matrix [vocab_size Γ— d_model] β†’ d_model Π²Π΅ΠΊΡ‚ΠΎΡ€
  • ΠžΠ±ΡƒΡ‡Π°Π΅ΠΌΠ°Ρ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° (ΠΊΠ°ΠΊ lookup table)
  • ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½ ΠΈΠΌΠ΅Π΅Ρ‚ свой Π²Π΅ΠΊΡ‚ΠΎΡ€
  • Π Π°Π·ΠΌΠ΅Ρ€: vocab_size Γ— d_model Γ— bytes (fp16)
  • Llama-70B: 32000 Γ— 8192 Γ— 2 = ~524 MB

Positional Embeddings

  • Π”ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΊ token embeddings
  • Π‘ΠΌ. 01-transformer: RoPE, ALiBi, learned

Π˜Ρ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Embedding

final = token_embedding + positional_embedding

Или для RoPE: rotary примСняСтся ΠΊ Q, K, Π½Π΅ ΠΊ embedding.

πŸ” 6. Embedding-ΠΌΠΎΠ΄Π΅Π»ΠΈ (для RAG)

АрхитСктура

Text β†’ Tokenize β†’ BERT-like encoder β†’ Pooling β†’ Dense projection β†’ Embedding vector

Π‘Ρ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΠΈ Pooling

  • CLS: Π²Π·ΡΡ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€ [CLS] Ρ‚ΠΎΠΊΠ΅Π½Π° (Π½Π°Ρ‡Π°Π»Π°)
  • Mean: срСднСС всСх Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ²
  • Last hidden: послСдний слой

Π’ΠΈΠΏΡ‹

  • Symmetric: query ΠΈ doc ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ (similarity = cosine)
  • Asymmetric: query ΠΈ doc ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ (bi-encoder, cross-encoder)

Asymmetric (Dual Encoder)

Query encoder:  query β†’ q_vec
Doc encoder:    doc β†’ d_vec
Score: q_vec Β· d_vec (dot product)
  • Быстрый поиск: pre-compute doc embeddings
  • ΠœΠΈΠ½ΡƒΡ: query ΠΈ doc Π² Ρ€Π°Π·Π½Ρ‹Ρ… пространствах

Cross-Encoder (Re-ranker)

[CLS] query [SEP] doc [SEP] β†’ BERT β†’ score
  • Π’ΠΎΡ‡Π½ΠΎ (Π²ΠΈΠ΄ΠΈΡ‚ query ΠΈ doc вмСстС)
  • МСдлСнно (N forward passes для N Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²)
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для re-ranking top-K послС dense retrieval

🧠 7. ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ embeddings

Word2Vec / GloVe: статичСскиС (ΠΎΠ΄Π½ΠΎ слово = ΠΎΠ΄ΠΈΠ½ Π²Π΅ΠΊΡ‚ΠΎΡ€ всСгда) BERT / GPT: ΠΊΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ (ΠΎΠ΄Π½ΠΎ слово = Ρ€Π°Π·Π½Ρ‹Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π² контСкстС)

"bank" Π² "river bank" β†’ Π²Π΅ΠΊΡ‚ΠΎΡ€ A
"bank" Π² "bank account" β†’ Π²Π΅ΠΊΡ‚ΠΎΡ€ B (β‰  A)

Для RAG ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ embeddings (BGE, E5, OpenAI).

βœ… 8. ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°: Π²Ρ‹Π±ΠΎΡ€ embedding-ΠΌΠΎΠ΄Π΅Π»ΠΈ

Π Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ vs ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ

Π‘ΠΎΠ»ΡŒΡˆΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ embedding β€” Ρ‚ΠΎΡ‡Π½Π΅Π΅ поиск, Π½ΠΎ Π΄ΠΎΡ€ΠΎΠΆΠ΅ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ retrieval. Для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° RAG достаточно 1024-1536.

ЧСклист

  1. Π―Π·Ρ‹ΠΊ: ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ русский/Π½ΡƒΠΆΠ½Ρ‹Π΅ языки?
  2. Π Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ: 384-3072 (большС = Ρ‚ΠΎΡ‡Π½Π΅Π΅, Π½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ ΠΈ Π΄ΠΎΡ€ΠΎΠΆΠ΅ storage)
  3. Max sequence: 512-8192 tokens
  4. MTEB score: ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒ Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³
  5. Hosting: API, self-hosted, local?
  6. Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ: latency per embedding

Π’ΠΎΠΏΠΎΠ²Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ (2025)

Use caseModel
Best quality, APIOpenAI text-embedding-3-large
Best quality, openBGE-large-en-v1.5 / multilingual-e5-large
Fast, cheapOpenAI text-embedding-3-small
Multilingualmultilingual-e5-large, Cohere embed-v3
Self-hosted, efficientBGE-small, all-MiniLM-L6-v2