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 ​