向量庫
向量庫(vector store / vector database)存放嵌入後的塊,並提供近似最近鄰搜尋。你丟進一個查詢向量,它回傳最相近的 k 筆,以及每筆的原文與 metadata。
它實際在做什麼
精確的最近鄰在百萬筆以上會太慢。向量庫用 ANN 索引(HNSW、IVF 等)在「夠快」和「夠準」之間取捨。對 RAG 來說,漏掉真正相關的那一塊,後面的 LLM 再強也救不回來,所以召回(recall)通常比毫秒級延遲更重要。
除了向量,現代後端常同時支援:
- metadata 過濾:只搜某個產品線、某個權限、某段日期。
- 關鍵字/全文:與向量一起做混合搜尋。
- 刪改:文件更新時要能依來源 id 刪舊塊、寫新塊。
怎麼選
| 類型 | 例子 | 何時用 |
|---|---|---|
| 行程內/單機 | FAISS、Chroma、LanceDB | 本機原型、資料量小 |
| 開源伺服器 | Qdrant、Milvus、Weaviate、pgvector | 要自管、要 SQL 同庫 |
| 託管服務 | Pinecone、Azure AI Search、Vertex Vector Search | 少維運、要混合搜尋與 SLA |
入門在筆電上用 Chroma 或 FAISS 即可驗證管線。上線再看資料量、權限、是否要混合搜尋與多租戶。框架(LangChain、LlamaIndex)把這些後端收成相近的 API,換庫通常不必重寫整套業務邏輯,但嵌入模型與距離度量必須一致。
索引不是「存了就永遠對」
文件改了,舊向量不會自動更新。要有明確的重建或增量更新流程:用來源 id 當鍵、先刪後寫,或定期全量重建。權限變了也一樣:metadata 裡的 ACL 過期,檢索就可能把不該看的段落送進提示。