一個沒有記憶的 AI 代理,被困在每次對話都要重新自我介紹。解法是一個向量資料庫——它儲存您文件、筆記或過往聊天的 embeddings,好讓代理隨選回憶起相關的片段(那就是 RAG 裡的那個「R」)。您能把它作為一個託管服務來租,或者您能在一台 VPS 上自己跑它、把您的資料——常常是您的私有資料——留在一台您掌控的機器上。這是怎麼做,以及它在 RAM 上實際花多少。
兩個好選擇
您不需要任何奇特的東西。兩條路覆蓋幾乎所有人:
pgvector —— 一個 Postgres 擴充。如果您已經在跑 Postgres(或樂意跑),這給您已有的資料庫加上向量搜尋。一個服務、一份備份、您會的 SQL。遠遠是最省事的起點。
Qdrant —— 一個專建的向量引擎。當您有很多向量(一到幾百萬+)、或想要快速的元資料過濾和一個專用 API 時上它。它是一個要跑的單獨服務,但它正是為這活而建。
對大多數剛站穩腳跟的代理,pgvector 是對的第一個答案。 長過它了再轉 Qdrant,別提前。
RAM 的現實(這是人們低估的部分)
向量搜尋快,因為索引住在記憶體裡——所以 RAM,而不是磁碟,才是您真正的約束。一個粗略指引:
- 幾十萬個 embeddings —— 舒服地放進 2 GB。
- 一到幾百萬 —— 規劃 4 GB+ 並調索引。
- 磁碟是簡單的部分:一百萬個 embeddings 只有幾 GB,所以 25–45 GB 覆蓋一個正經的庫。
所以按索引設定,不是按檔案。(跟通用設定指南是同一套邏輯——重的東西您不量就看不出來。)
快速上手:pgvector
在一台有 Postgres 的機器上(Docker 最簡單——跟自託管 n8n 同一個套路):
CREATE EXTENSION IF NOT EXISTS vector;
CREATE TABLE memory (
id bigserial PRIMARY KEY,
content text,
embedding vector(1536) -- 匹配你 embedding 模型的維度
);
-- 有了資料之後,建一個索引以加快搜尋:
CREATE INDEX ON memory USING hnsw (embedding vector_cosine_ops);
您的代理插入 content + 它的 embedding,然後用 ORDER BY embedding <=> $query_embedding LIMIT 5 查詢,拉出最近的記憶。那就是整個迴圈。
更想用 Qdrant?它是一個暴露 HTTP/gRPC API 的單個 Docker 容器;您用您的向量大小建立一個 collection、upsert 點。同樣的想法、專用引擎。
它能跟代理共享一台機器嗎?
能——對中小型記憶庫,把向量資料庫跑在跟代理同一台 VPS 上。 它更簡單、延遲基本為零。只有當一個開始把另一個從 RAM 裡擠出去時才拆到單獨的伺服器上。那是一個以後的、值得擁有的好問題的決定,不是第一天的。
誠實的注意事項
- RAM 是那堵牆,而且它很安靜。 搜尋一直快,直到索引不再裝進記憶體,然後它退化。盯著記憶體、在它咬人之前擴容——別等慢查詢來告訴您。
- 建立 embeddings 要花 token。 您 embed 的每份文件都是對一個 embedding 模型的一次 API 呼叫。庫託管起來便宜;產生向量是那筆經常性成本——和跑一個代理實際花多少有關。
- 備份它。 您代理的記憶和別的資料一樣是資料。如果它要緊,做備份。
在這之內,一個自託管的向量庫是給代理持久記憶、又不把您私有資料交給第三方的乾淨辦法。從一台 2 GB 機器上的 pgvector 起步、盯著 RAM,只有當數字讓您升時,才長進 Qdrant 或一個更大的方案。
評論
目前還沒有評論。歡迎成為第一位。