Kihagyás

08 - Embeddings

Az embeddingek numerikus vektorokként reprezentálják a tartalmat, így a szemantikailag hasonló elemek matematikailag összehasonlíthatók.

Alapját adják a semantic searchnek, clusteringnek, recommendationnek, deduplicationnek és a RAG retrievalnek.

Alap mentális modell

Egy embedding model az inputot vektorrá alakítja:

"How do I reset my password?"
        |
        v
embedding model
        |
        v
[0.12, -0.31, 0.88, ...]

Egy hasonló jelentésű másik mondatnak a vector space közeli régiójába kell kerülnie:

"I forgot my password and need a new one"

A konkrét számok ember számára nem jelentenek sokat. A relatív pozíciójuk a fontos.

Miért hasznosak az embeddingek?

A keyword search egyező kifejezéseket keres. Az embedding search a jelentést próbálja megragadni.

Példa:

Query:
"car will not start"

Document:
"vehicle ignition troubleshooting"

A két szövegben alig lehet közös szó, mégis egy jó embedding model közel helyezheti őket egymáshoz.

Similarity

Egy similarity function vektorokat hasonlít össze. Gyakori megoldás a cosine similarity, dot product és Euclidean distance.

A vector dimensionöket általában nem kézzel manipuláljuk. A fontos application-level koncepció:

query embedding
       |
compare against stored embeddings
       |
rank nearest items

Semantic search pipeline

Egy egyszerűsített keresőrendszer:

Documents
   |
chunk / prepare
   |
embedding model
   |
store vectors + metadata

User query
   |
embedding model
   |
vector similarity search
   |
Top matching documents

Ez a RAG egyik alapvető building blockja.

Az embedding nem summary

Az embedding nem olvasható, tömörített szöveg, amelyből később visszafejthető az eredeti dokumentum.

Inkább összehasonlításhoz hasznos koordinátaként gondolj rá, nem compressed document storage-ként.

Az eredeti contentet vagy annak referenciáját továbbra is tárolni kell.

Az embeddingek model-specifikusak

Különböző embedding modellek vektorait általában nem érdemes ugyanabban az indexben keverni.

Embedding model váltásakor a dokumentumokat jellemzően újra kell embedelni.

Így az embedding-model választás a data architecture része lesz.

Dimensions

Az embedding vektorok több száz vagy több ezer numerikus dimenziót tartalmazhatnak.

A több dimension nem jelent automatikusan jobb retrievalt. A quality a modelltől, domaintől, adattól és evaluationtől függ.

A chunking számít

Tegyük fel, hogy egy teljes 100 oldalas kézikönyvet egyetlen vektorként embedelünk. Egy kis bekezdésre vonatkozó query gyengén match-elhet, mert a vector az egész dokumentumot reprezentálja.

Ezért a contentet gyakran kisebb egységekre bontjuk:

Manual
  |
  +--> chunk 1 -> vector
  +--> chunk 2 -> vector
  +--> chunk 3 -> vector

A chunking strategy erősen befolyásolja a retrieval qualityt, és RAG-nál részletesebben visszatérünk rá.

A metadata továbbra is fontos

Sok alkalmazásnál a vector similarity önmagában nem elég.

Példa document record:

{
  "id": "doc-123",
  "team": "payments",
  "version": "7.2",
  "language": "en",
  "embedding": [0.12, -0.31, 0.88]
}

A search kombinálhatja a semantic similarityt filterekkel:

semantic match
AND team = payments
AND version = 7.2

Ez gyakran biztonságosabb és pontosabb a pure vector searchnél.

Similarity nem egyenlő truth-val

A legközelebbi vector csak a keresett halmaz leginkább hasonló eleme. Nem garantálja, hogy a dokumentum:

  • megválaszolja a kérdést,
  • helyes,
  • aktuális,
  • engedélyezett az adott user számára.

A retrieval resultokat továbbra is application-level filteringgel és evaluationnel kell kezelni.

Tegyük fel, hogy egy developer ezt kérdezi:

"Why is our build failing after the Java upgrade?"

Az alkalmazás embedelheti a queryt, majd chunkokat kereshet például:

  • Java migration guide,
  • build troubleshooting notes,
  • Maven/Tycho documentation,
  • previous incident summaries.

A retrieved text ezután átadható egy LLM-nek szintézisre.

query
  |
embedding
  |
semantic retrieval
  |
relevant text
  |
LLM
  |
answer

További use case-ek

Clustering

Szemantikailag kapcsolódó dokumentumok vagy support ticketek csoportosítása előre definiált label nélkül.

Recommendations

A user korábbi interakcióihoz hasonló product, article, job vagy content keresése.

Deduplication

Közel duplikált content felismerése eltérő megfogalmazás esetén is.

Classification support

Egy input embedding összehasonlítása ismert category example-ökkel vagy centroidokkal.

Vector database-ek

Egy vector database vagy vector-capable search engine embeddingeket tárol és hatékony nearest-neighbor searchöt végez.

A fontos foundation koncepció nem az, melyik terméket használjuk, hanem a responsibility split:

embedding model -> vectors létrehozása
vector store     -> vectors indexelése és keresése
application      -> filtering, validation, original content retrieval
LLM              -> opcionálisan reasoning a retrieved content felett

A semantic search és a keyword search különböző problémákat old meg.

Egy erős retrieval system kombinálhatja:

keyword/BM25 score
        +
vector similarity
        +
metadata filters
        +
reranking

Ezt hybrid retrievalnek nevezzük, és RAG-nál fontos lesz.

Evaluation

Ne feltételezd, hogy a semantic search jó csak azért, mert néhány demo query látványosan működik.

Készíts kis retrieval evaluation setet:

query -> expected relevant documents

Majd mérd, hogy a helyes dokumentumok valóban a lista elején jelennek-e meg.

Developer takeaway

Az embeddingek a semantic similarityt software által kereshető és rangsorolható formává alakítják.

Erősek, de nem helyettesítik a source documenteket, permissionöket, metadatát, keyword searchöt vagy evaluationt. Egy retrieval signalnak tekintsd őket egy nagyobb rendszeren belül.