向量資料庫是什麼?

快速解答

向量資料庫是一種專門用來儲存嵌入向量的資料庫,嵌入向量是AI模型為了代表意義而產生的數字列表,它能在幾毫秒內找出與查詢最接近的儲存項目。這是聊天文件功能與語意搜尋背後的搜尋步驟。當文字量太大,無法整份送進模型時,就需要它。

向量資料庫只回答一個問題,而且速度極快

給它一組數字,它就會回傳最接近的儲存列表。這就是它全部的功能。

這些列表就是嵌入向量。嵌入模型會把一段文字、一則商品描述或一張圖片,轉換成幾百到幾千個數字,並讓意義相近的內容彼此靠近,什麼是AI嵌入向量說明了具體做法。向量資料庫就是這些列表累積夠多之後存放的地方。它會為每個列表附上ID與一些中繼資料,建立索引,並回答最近鄰搜尋:「這是一個查詢向量,給我最接近的十個。」

困難的地方在於「快」這個字。把一個查詢向量拿去跟一百萬個各含1,536個數字的儲存向量比對,就是15億次乘法運算,而且每敲一個字就要做一次,根本無法擴展。所以向量資料庫會使用近似最近鄰索引,其中最常見的是HNSW,這是2016年Malkov與Yashunin論文提出的圖結構,只需檢視幾百個候選項目而不是全部一百萬個,而且幾乎每次都能給出正確答案。這個「幾乎」就是取捨:犧牲一點準確度,換來上千倍的速度提升。

既有的資料庫比對文字,向量資料庫比對意義

關聯式資料庫會找出值相符的資料列:WHERE customer_id = 4127。全文檢索索引會找出含有特定字詞的文件:退款 AND 政策。向量資料庫則會找出意義相近的項目:查詢「我要怎麼拿回我的錢」會回傳標題為「退貨與退款」的段落,即使兩者完全沒有共同的字詞。

關聯式資料庫全文檢索向量資料庫
提問方式哪些資料列符合這個值?哪些文件包含這些字詞?哪些項目的意義與這個相近?
索引欄位上的B樹詞彙的反向索引向量上的圖結構或分群(HNSW、IVF)
精確嗎?是是通常是近似值
擅長ID、日期、金額、資料表關聯名稱、代碼、精確詞組同義詞、改寫、跨語言、圖片
不擅長意義意義精確字串、計數、依數值篩選
範例Postgres、MySQL、SQLiteElasticsearch、LucenePinecone、Weaviate、Qdrant、Milvus、Chroma、pgvector

最後一列顯示這個分類其實很模糊。pgvector為一般的Postgres加上向量欄位與HNSW索引,而Elasticsearch自2019年的7.0版起就有向量欄位,自2022年的8.0版起更有HNSW搜尋。「向量資料庫」往往是你已經在用的資料庫裡的一項功能,而不是全新的產品,獨立產品之間比拼的是規模與維運的成熟度,而不是做出Postgres做不到的事。

聊天文件功能其實就是「向量搜尋加上末端的模型」

檢索增強生成(什麼是RAG有詳細說明)包含搜尋和寫作兩個步驟。向量資料庫負責的就是搜尋這一步。

  1. 把每份文件切成幾百到一千個token的段落。
  2. 對每個段落做嵌入,並把向量連同段落原文與來源一起存進向量資料庫。
  3. 問題進來時,把問題做嵌入,再向資料庫查詢最接近的段落。
  4. 把這些段落連同問題交給語言模型,讓它寫出答案。

步驟1和2只在新增文件時發生一次,步驟3和4則每個問題都會發生一次。語言模型從來不會看到整個文件集,它看到的只是資料庫挑出來的五到十個段落。這就是為什麼答案的好壞完全取決於搜尋:如果最接近的向量是錯的段落,模型就會自信地答錯問題,而什麼是AI幻覺會把這種情況歸類為檢索失誤,而不是憑空捏造。

什麼時候該用它,什麼時候整份送進去反而更好

這是一個關於大小的判斷。模型一次只能考慮它的上下文視窗,而視窗裡的每個token每一輪都要付費。向量資料庫的用途就是只把相關的那一小段放到模型面前。對於一份裝得下的文件,檢索這一步是可以省略的;對於裝不下的文件集,它就是唯一的選擇。

以一份30萬token、幾百頁的報告來計算兩種設計的成本,假設問十個問題,每題檢索五段各1,000 token的段落。每次都送整份檔案是300萬個輸入token。每題檢索五段1,000 token的段落則是5萬個。以AI模型成本指數中的標價輸入費率為準(2026-08-20取自OpenRouter),每個模型的差距都是60倍。若供應商提供提示詞快取,重讀同一份檔案只收標價的十分之一到一半,差距就會縮小到約6倍至30倍。檢索仍然勝出,只是勝得沒那麼多。

對一份30萬token的報告問十個問題,每次都送整份檔案的成本是檢索方式的60倍
檢索段落每輪送整份檔案$0$5$10$15標價,十個問題GPT-5.6 Luna$0.01$0.6060xGemini 3.7 Flash$0.019$1.1360xClaude Sonnet 5$0.10$6.0060xClaude Opus 5$0.25$15.0060x

當檔案的大小符合預算時,整份送進去的設計花這筆錢是有回報的:一份60頁、約4萬token的合約,能讓模型回答需要同時看整份文件的問題,例如「這裡有沒有跟第14條矛盾的地方」,這種問題檢索方式問不出來,因為它從來不會在同一批內容中同時看到第14條和那個矛盾之處。由此得出的原則是:一份文件,或少數幾份,整份送進去;一整座文件庫,則透過向量資料庫處理。介於兩者之間時,按主題拆分上傳的內容,讓模型拿到它需要的那個部分。

Whizi直接送出文字本身,單輪上限4萬個token

Whizi不會為你的聊天執行向量資料庫。當你附加一個檔案時,文件上傳功能會擷取文字,並以提示詞文字的形式送給模型,每輪固定上限為4萬個token;超出的上傳內容會被截斷,並附上提示訊息與訊息內的標記說明此事。專案檔案的運作方式相同:專案功能最多可固定10個檔案,每則訊息都會重新把文字組進提示詞,每個檔案上限3萬2千字元,整個專案區塊上限12萬字元。

這些上限就是這個設計的邊界。超過3萬2千字元的固定檔案會被截斷,超過單輪4萬token預算的附件會被裁切,而一個專案是資料夾,不是可搜尋的文件庫。這是刻意的取捨:對於裝得下單輪預算的合約或論文,讓文字直接在場勝過讓它被搜尋,而真正重要的檢驗方式,也就是要求模型引用它所使用的段落,之所以有效,正是因為那個段落確實在場。對於上千份文件,向量資料庫才是對的工具,聊天應用程式則不是。

這個機制帶來兩個延伸出來的習慣。附加多個檔案時,在問題裡點名要問的那份檔案,否則模型會自行默默選擇。而且對任何你會據以行動的答案,都要要求引用原文。檢索系統可能回傳錯誤的段落;整份送入的系統則可能憑記憶而非檔案本身作答。要求引用能同時抓出這兩種問題。

操作清單
  • 整份送出單一文件;把整個文件集放到向量資料庫後面
  • 按主題拆分長篇上傳內容,讓模型拿到問題所需的那個部分
  • 在依賴答案之前,先要求模型引用它所使用的段落
  • ID、代碼和精確詞組用純文字搜尋;向量搜尋比對的是意義,不是字元
  • 把檢索失誤當成搜尋問題處理:先用更好的模型或更小的段落重新嵌入,再考慮是不是寫作模型的問題

常見問題

用白話說,向量資料庫是什麼?

它是用來儲存AI模型拿來代表意義的數字列表的地方,設計目的就是快速找出最接近的項目。你給它一個問題的嵌入向量,它就會回傳意義相近的嵌入向量,以及背後對應的文字。每當文件集大到無法整份送出時,它就是聊天文件功能中負責搜尋的那一半。

用AI處理我的文件,一定需要向量資料庫嗎?

只有在文件裝不進模型的上下文視窗時才需要。單一份報告或合約可以整份送給模型,這正是Whizi處理附件與固定專案檔案的方式。上千份文件的文件庫則需要檢索,而檢索需要向量索引,不論是用專門的產品,還是像pgvector這樣的Postgres擴充套件。

向量資料庫和一般資料庫有什麼差別?

一般資料庫比對的是值:這個ID、這個日期、這個精確的字詞。向量資料庫比對的是意義,回傳嵌入向量與查詢最接近的儲存項目。它通常是近似值,使用像HNSW這樣的索引,只檢查幾百個候選項目而不是每一項,因此在一般資料庫擅長的精確比對上表現較差。

最常被使用的向量資料庫有哪些?

Pinecone、Weaviate、Qdrant、Milvus和Chroma是常見的獨立產品,pgvector則為Postgres加上相同的能力。Elasticsearch和OpenSearch也提供向量搜尋。選擇通常取決於維運面,也就是規模與代管方式,因為它們實作的都是同一套近似最近鄰的概念。

跟送整份檔案相比,檢索能省多少錢?

在Claude Sonnet 5上,對一份30萬token的報告問十個問題,如果每輪都送整份檔案要花$6.00,若改為檢索五段各1,000 token的段落則是$0.10,採用2026-08-20取自OpenRouter的標價費率計算。在GPT-5.6 Luna上,同樣的一組數字是$0.60對$0.01。因為兩種設計每個token收取的費率相同,所以每個模型上的比例都是60倍。