Skip to content

Embedding và Vector Retrieval

Mở đầu

Máy tính hiểu "mèo và chó giống nhau, khác xe hơi" thế nào? Với người là common sense, với máy "mèo", "chó", "xe hơi" chỉ là 3 chuỗi text không liên quan. Embedding giải bài toán này — biến text thành vector số, để máy hiểu được "xa-gần" về semantic.

Bạn sẽ học:

  • Hiểu trực giác: Embedding là gì, sao vector "mèo" + "chó" gần nhau
  • Tính similarity: cosine, Euclidean
  • Index principle: vector DB tìm trong triệu vector trong vài ms thế nào
  • Tech selection: vector DB mainstream
  • End-to-end pipeline: text → vector → retrieval
ChươngNội dung
1Embedding concept
2Similarity calculation
3Vector index
4Vector database
5End-to-end pipeline

0. Toàn cảnh: cầu nối text → số

NLP có thách thức nền tảng: máy chỉ biết số, không biết chữ.

Cách sớm: gán mỗi từ 1 ID (One-Hot), vd "mèo"=001, "chó"=010, "xe hơi"=100. Vấn đề chí mạng: mọi từ cách đều nhau. "Mèo" tới "chó" = "mèo" tới "xe hơi" → trái trực giác.

Embedding cách mạng: map mỗi từ thành dense low-dim vector, từ semantic gần tự gom nhóm. Trong space đó, "mèo" + "chó" sát nhau, "xe hơi" xa — máy "hiểu" semantic.

Từ One-Hot đến Embedding

  • One-Hot: dim = vocab size (vạn dim), mỗi vector 1 số 1, còn 0, sparse + không semantic
  • Embedding: dim thường 768~1536, mỗi số có nghĩa, dense + giàu semantic
  • Đột phá: Word2Vec (2013) chứng minh "nghĩa từ định nghĩa được bằng context", mở kỷ nguyên Embedding

1. Embedding concept: text → toạ độ

Core idea: dùng nhóm số (vector) biểu diễn nghĩa của 1 từ/câu.

Tưởng 2D coordinate. Đặt "mèo" ở (0.2, 0.7), "chó" (0.3, 0.6), "xe hơi" (0.9, 0.1). "Mèo" + "chó" gần, "xe hơi" xa. Đây là trực giác — semantic similarity = khoảng cách space.

词嵌入空间可视化

语义相近的词语在向量空间中距离更近,形成自然聚类

维度 1维度 2老虎兔子国王王后王子公主动物皇室

💡 嵌入模型将文本映射到高维向量空间(通常 768~1536 维)。这里我们将其简化为二维来展示核心思想:语义相近的词语,向量距离也更近

3 tính chất Embedding

  1. Semantic clustering: từ nghĩa giống tự gom (động vật, thức ăn, công nghệ)
  2. Analogy: phép vector biểu thị quan hệ semantic, kinh điển: king - man + woman ≈ queen
  3. Dimension meaning: mỗi dim implicit encode 1 feature (là động vật? size? sentiment?)
EncodingDimSemanticApp
One-HotVocab (~50000)KhôngNLP cổ
Word2Vec100~300Word levelSimilarity, analogy
BERT Embedding768ContextSentence, QA
OpenAI text-embedding-31536~3072DeepRAG, semantic search

2. Similarity: 2 vector "gần" cỡ nào?

Có vector, câu hỏi: đo similarity 2 vector thế nào? Như đo 2 thành phố — đo đường thẳng, hoặc direction.

向量相似度计算器

拖动向量端点,观察不同相似度指标的实时变化

AB
余弦相似度
0.3969
-1 (相反) ~ 1 (相同)
欧氏距离
1.71
0 (完全重合) ~ ∞ (无穷远)
点积
0.96
dot(A, B) = |A||B|cosθ

💡余弦相似度只关注方向,不关注长度,适合文本语义比较;欧氏距离同时考虑方向和大小,适合需要绝对距离的场景。

2 metric chính

  • Cosine Similarity: đo direction 2 vector, range [-1, 1]. 1 = cùng chiều, 0 = vuông góc, -1 = ngược. Chọn đầu cho text vì không bị ảnh hưởng bởi length.
  • Euclidean Distance: đường thẳng giữa 2 endpoint, range [0, ∞). 0 = trùng, càng lớn càng khác. Hợp scenario cần "absolute size".
MetricTrực giácRangeUse
CosineDirection, ignore length[-1, 1]Text semantic, recommendation
EuclideanDirect distance[0, ∞)Image feature, clustering
Dot productDirection × length(-∞, +∞)Vector đã normalize, tính nhanh
ManhattanĐi dọc axis[0, ∞)High-dim sparse vector

3. Vector index: retrieve trong triệu vector trong ms

Giả sử có 1M document, mỗi cái 1536-dim vector. User hỏi, cần tìm 10 gần nhất. Cách đơn giản: tính từng cái — 1M phép vector 1536-dim, quá chậm.

Vector index giải: đánh đổi space-time, prebuild index → speed từ O(n) → ~O(log n).

向量索引策略对比

对比暴力搜索与近似最近邻搜索的效率差异

查询点
数据点总数
60
访问节点数
0
搜索效率
0%
找到最近 K 个
0
策略时间复杂度精确度适用场景
暴力搜索O(n)100%小数据集 (<10K)
ANN (IVF)O(n/k)~95%大数据集 (>100K)
HNSWO(log n)~98%高性能检索

Brute-force vs ANN

  • Flat (brute-force): so từng cái, 100% accurate nhưng chậm. Data <100k OK.
  • IVF (Inverted File Index): chia vector space thành regions (clustering), query chỉ search region gần. Như thư viện phân theme.
  • HNSW (Hierarchical Navigable Small World): graph multi-layer, từ coarse-grained đến fine-grained. Như world map → country map → street map.
  • PQ (Product Quantization): nén high-dim vector thành short code, đánh đổi accuracy lấy memory. Hợp data cực lớn.
IndexBuild speedQuery speedRecallMemoryScale
FlatKhông cầnChậm100%Cao<100k
IVFTrungNhanh95%+Trung100k-10M
HNSWChậmRất nhanh99%+Cao100k-10M
PQTrungNhanh90%+Rất thấp>10M
IVF-PQTrungNhanh92%+Thấp>100M

4. Vector DB: storage engine cho vector

Có vector + index, cần nơi store + manage. Traditional DB (MySQL, PostgreSQL) tốt cho structured data, nhưng yếu cho similarity search high-dim. Vector DB thiết kế riêng cho scenario này.

主流向量数据库对比

点击卡片查看详细信息,了解不同向量数据库的特点与适用场景

P
Pinecone
全托管云服务
云原生Serverless
性能
易用性
扩展性
M
Milvus
开源分布式
开源分布式高性能
性能
易用性
扩展性
W
Weaviate
开源 AI 原生
开源GraphQL模块化
性能
易用性
扩展性
C
Chroma
轻量级嵌入式
开源轻量Python
性能
易用性
扩展性
pg
pgvector
PostgreSQL 扩展
SQLPostgreSQL扩展
性能
易用性
扩展性
场景推荐
&#x1F680;
快速原型
Chroma / Pinecone
&#x1F3E2;
企业级部署
Milvus / Weaviate
&#x1F4BE;
已有 PG 数据库
pgvector
&#x1F916;
RAG 应用
Chroma / Weaviate

Capability core

  1. High-efficient storage: format optimize cho high-dim float vector
  2. ANN retrieval: built-in HNSW, IVF
  3. Metadata filter: search + filter theo tag/time
  4. Realtime update: dynamic CRUD, không rebuild index
  5. Horizontal scaling: distributed, scale tỷ vector
DBTypeFeatureScenario
PineconeManaged cloudZero-ops, ready-to-usePrototype, mid-prod
MilvusOpen distributedHigh-perf, scalableLarge prod
ChromaOpen lightweightEmbedded, API cleanLocal dev, small project
WeaviateOpen cloud-nativeBuilt-in vectorize, GraphQLCần auto-vectorize
QdrantOpen high-perfRust, filter mạnhCần filter phức tạp
pgvectorPG extensionReuse PG infraTeam đã có PostgreSQL

5. End-to-end pipeline

Nối các component → hệ vector retrieval đầy đủ.

Có 2 luồng: offline write (doc → vector → store) và online query (question → vector → search).

嵌入生成流水线

逐步体验从文本到向量的完整转换过程

1
分词 (Tokenize)
2
编码 (Encode)
3
模型推理 (Model)
4
池化 (Pooling)
5
归一化 (Normalize)

Offline write

  1. Doc loading: load text từ source (PDF, web, DB)
  2. Preprocessing: clean, denoise, normalize (bỏ HTML tag, char đặc biệt)
  3. Chunking: cắt text dài thành chunk (200~500 tokens)
  4. Vectorize: gọi embedding model (vd OpenAI text-embedding-3-small) → vector
  5. Store: lưu vector + text + metadata vào vector DB

Online query

  1. Receive query: user gõ câu hỏi
  2. Query vectorize: cùng model embed
  3. Similarity search: trong DB tìm Top-K similar chunk
  4. Postprocess: rerank, dedup, metadata filter
  5. Return: relevant chunk → caller (hoặc LLM gen answer)
StageKey choiceKhuyến nghị
Embedding modelAccuracy vs cost vs speedOpenAI text-embedding-3-small (tốt giá)
ChunkingGranularity vs semanticRecursive chunking, 200~500 tokens
Vector DBScale vs ops costProject nhỏ: Chroma, prod: Pinecone/Milvus
SimilaritySemantic vs exactCosine (chọn đầu cho text)
Top-KRecall vs noiseRetrieve 20, rerank Top 5

Tổng kết

Embedding + vector retrieval = cầu nối "ngôn ngữ người" ↔ "máy hiểu", và là infrastructure cho RAG, semantic search, recommendation.

Key:

  1. Bản chất Embedding: map text vào high-dim space, semantic similarity → khoảng cách space
  2. Similarity: cosine cho direction (text), Euclidean cho absolute distance
  3. Index = key performance: HNSW + IVF làm retrieval ms với triệu vector
  4. Vector DB: project nhỏ Chroma/pgvector, prod Pinecone/Milvus
  5. End-to-end: từ doc loading đến retrieval, mỗi stage ảnh hưởng kết quả

2026 update

  • OpenAI text-embedding-3-large: 3072 dim, best public quality
  • Cohere embed-v4: multimodal, strong on non-English
  • BGE-M3 (open-source): tốt VN dev cần multilingual
  • Matryoshka embeddings: dim adaptive (256/512/1024)
  • Hybrid search: combine BM25 + vector (Pinecone, Weaviate)
  • VN dev: cho RAG tiếng Việt, dùng BAAI/bge-m3 hoặc Cohere

Tài liệu