跳轉至

建立 2026-09-15 更新 2026-09-15

基礎觀念

這一頁講所有向量資料庫共用的核心:資料怎麼變成向量、查詢時比什麼、索引為什麼能變快,以及 RAG 怎麼接上。看完就能對照各產品文件裡的 dimensionmetrictop_kfilter

影音彙整見 基礎觀念影音

嵌入向量是什麼

嵌入模型讀一段文字(或一張圖),輸出一串浮點數,例如長度 384 的陣列。意思接近的句子,在這個空間裡的距離也會比較近。

因此查詢「如何退貨」有機會命中「商品寄回流程」,即使兩個句子沒有共同關鍵字。前提是:寫入與查詢必須用同一個嵌入模型,維度才對得上。

常見來源:

類型 例子 何時用
本機小模型 all-MiniLM-L6-v2(384 維) 試作、沒有雲端 API key
雲端 API OpenAI text-embedding-3-small 品質與維運較省事
多模態 CLIP 圖文互相搜

維度是索引的一部分。換模型通常等於重建整個 index,不能把 384 維的向量塞進 1536 維的欄位。

距離與相似度

資料庫會要你在建立 index/collection 時選定度量,之後不能隨便改。文字 embedding 多數已正規化,cosine 是預設首選。

名稱 常見寫法 意義
餘弦相似度 cosine 比方向、忽略長度。適合文字。
歐氏距離 L2、Euclidean 比直線距離。影像特徵常用。
內積 IP、dot product 數值越大越像。正規化後與 cosine 等價。

查詢時你拿到的 score 語意依度量而變:cosine/IP 通常越大越好;L2 則是越小越好。讀文件時先確認這一點,再設門檻。

索引:為什麼需要 ANN

暴力搜尋(flat)會把查詢向量跟每一筆都算距離,結果最準,資料一多就慢。近似最近鄰(ANN)先把向量編成圖或分桶,只探訪一部分鄰居。

實務上會遇到的兩種:

  • HNSW:多層小世界圖。建立較慢、記憶體較多,查詢快、召回率高。多數產品的預設。
  • IVF(倒排檔):先分群再搜幾個群集。記憶體較省,要先有足夠資料才能「訓練」群集。FAISS 教學裡很常見。

你需要記得的權衡只有一句:近似索引用少許召回率換延遲。開發時可用 flat 驗答案,上線再換 HNSW,並用 recall@k 評估。

中繼資料過濾

向量負責「像不像」,中繼資料負責「准不准」。例如:語意上像「防水外套」,但只要 price < 3000in_stock = true

各產品名稱不同(Pinecone metadata、Qdrant payload、pgvector 就是普通欄位),能力是同一件事。過濾若發生在 ANN 之前(pre-filter),結果比較可控;若只在事後過濾,可能 top-k 被濾光。這是生產環境最常踩的坑之一。

RAG 怎麼接上向量庫

文件 → 切塊(chunk)→ embedding → upsert
使用者問題 → embedding → query(top_k, filter) → 命中段落 + 問題 → LLM

切塊不要太大(超出模型 context)也不要太碎(失去上下文)。重疊(overlap)可減少句子被切斷。向量庫不管切塊策略,但檢索品質很大程度取決於它。

本站各產品怎麼對應這些觀念

觀念 去哪裡看
託管、少設定 Pinecone
本機原型 ChromaFAISS
過濾/混合搜尋 QdrantWeaviate
大規模自架 Milvus
已有 Postgres pgvector
索引細節 FAISS

官方學習資源

官方 YouTube/權威講解

IBM Technology:What is a Vector Database? 用圖像說明 embedding 與索引。Pinecone 官方頻道 有「什麼是向量資料庫」短片。Weaviate:What's in a Vector Database? 則從產品功能對照「只會存向量」與「完整向量資料庫」的差別。內嵌與解說見 基礎觀念影音

延伸閱讀

Pinecone 文章 What is a Vector Database 把資料庫 vs 純索引(如 FAISS)講得很清楚,可與本頁對照。