基礎觀念
這一頁講所有向量資料庫共用的核心:資料怎麼變成向量、查詢時比什麼、索引為什麼能變快,以及 RAG 怎麼接上。看完就能對照各產品文件裡的 dimension、metric、top_k 與 filter。
影音彙整見 基礎觀念影音。
嵌入向量是什麼
嵌入模型讀一段文字(或一張圖),輸出一串浮點數,例如長度 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 < 3000 且 in_stock = true。
各產品名稱不同(Pinecone metadata、Qdrant payload、pgvector 就是普通欄位),能力是同一件事。過濾若發生在 ANN 之前(pre-filter),結果比較可控;若只在事後過濾,可能 top-k 被濾光。這是生產環境最常踩的坑之一。
RAG 怎麼接上向量庫
切塊不要太大(超出模型 context)也不要太碎(失去上下文)。重疊(overlap)可減少句子被切斷。向量庫不管切塊策略,但檢索品質很大程度取決於它。
本站各產品怎麼對應這些觀念
| 觀念 | 去哪裡看 |
|---|---|
| 託管、少設定 | Pinecone |
| 本機原型 | Chroma、FAISS |
| 過濾/混合搜尋 | Qdrant、Weaviate |
| 大規模自架 | 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)講得很清楚,可與本頁對照。