Redis 向量搜尋快速上手
Redis 不只拿來快取。這篇看它怎麼存 embeddings、建索引、跑 KNN 查詢,順手把語意搜尋和 RAG 的實作路徑講清楚。

Redis 早就不只拿來快取。它現在也能存向量、放 metadata,還能直接做語意查詢。講白了,就是把搜尋、資料、速度放在同一個系統裡。
這篇 quick start 的重點很實際。你可以把文件轉成 embeddings,再丟進 Redis 做 KNN 查詢。整條流程從資料寫入到查詢結果,幾乎都在同一套工具鏈內完成。
如果你的服務本來就靠 Redis 撐 session、queue 或排行榜,這招很值得看。少一個外部系統,通常就少一些維運麻煩。說真的,對開發者來說這很有感。
Redis 在這篇指南到底做了什麼
訂閱 AI 趨勢週報
每週精選模型發布、工具應用與深度分析,直送信箱。不定期,不騷擾。
不會寄垃圾信,隨時可取消。
這份教學的流程很直白。先載入文件,再產生 embeddings,接著寫進 Redis,然後建立索引,最後跑查詢。整個路徑不是紙上談兵,是可以直接跑的範例。

它用的是 Redis Stack vector search。Python 端則搭配 redis-py。如果你想處理向量工作流,還有 RedisVL 可以用。
這種寫法的好處很明確。你不用先搬資料到另一個向量資料庫。文件、metadata、向量可以放一起,查詢時也能一起處理。對 RAG 或推薦系統來說,這很省事。
- 資料型態:文字、圖片、影片、音訊
- 儲存方式:JSON 或 hash 搭配 vector field
- 搜尋方式:用 embedding 做語意相似度比對
- 索引方式:Redis Search 建 secondary index
- 查詢方式:KNN,找最近鄰結果
為什麼 embeddings 會改變搜尋玩法
Embeddings 的本質,就是把內容轉成數字向量。這些數字會保留語意關係。像「car repair」跟「automotive maintenance」,字面不一樣,但向量距離可能很近。
Redis 的做法不是在「理解」語言。它只是很會比距離。可是在很多產品場景裡,這就夠用了。搜尋結果比較像人話,空結果也會少很多。
在這篇流程裡,Redis 也把 metadata 一起留著。你可以先用欄位條件過濾,再做向量搜尋。像是先篩地區、日期、分類,再找最接近的內容。這比把資料拆到多個系統乾淨很多。
“The best way to predict the future is to invent it.” — Alan Kay
這句話放在這裡很貼。因為這套流程不是空談 AI。它就是讓你把資料丟進去,立刻看搜尋結果,再調模型或 schema。
對工程團隊來說,這種迭代方式很務實。你不用先把整個架構想得很神。先跑起來,再看 recall 和 latency,通常更有效。
這份 quick start 的實作路線
教學先從安裝套件和連線開始。你會看到 Python virtual environment、pip、Redis Cloud 或本機 Redis 的設定。接著載入 demo dataset,檢查一筆文件,然後寫入資料。

之後它會建立索引。常見指令像 FT.CREATE 和 FT.INFO 都會出現。這很像真實專案的節奏:先建表,再驗證,再查詢。
查詢階段則是 KNN。這種查法不是找關鍵字,而是找最接近的向量。結果常會用 Pandas 表格看,方便你肉眼確認排序有沒有跑偏。
- Python 套件:redis、pandas、sentence-transformers、tabulate
- 資料寫入:JSON.SET 搭配 pipeline,減少來回次數
- 索引類型:FLAT vector index,距離計算用 COSINE
- 驗證工具:FT.INFO 看索引狀態與統計
- 查詢方式:FT.SEARCH 搭配 KNN
向量搜尋和傳統搜尋差在哪
傳統關鍵字搜尋很直接。你輸入什麼,它就找什麼。這種方式對精準詞彙很有用,但對同義詞、改寫句、自然語言問題,常常不夠聰明。
向量搜尋走的是另一條路。它看的是語意距離,不是字面是否完全相同。這讓它很適合做知識庫搜尋、客服檢索、RAG 前置 retrieval。
如果你在挑工具,Redis 不是唯一選項。你也可以看 Pinecone、Qdrant、Weaviate。但 Redis 的強項是,它把向量搜尋放進你可能已經在用的資料層。
- Redis:適合已經有 Redis,想把 vectors 一起放進來
- Pinecone:專注 similarity search,管理型服務成熟
- Qdrant:開源取向,偏 retrieval-first
- Weaviate:schema 和 semantic search 整合度高
我自己的看法很簡單。若你的系統本來就靠 Redis,先試 Redis 很合理。若你的核心工作就是大規模向量檢索,那專用向量資料庫還是值得比較。不要只看流行度,要看延遲和維運成本。
這和 RAG、推薦系統的關係
這份指南真正有用的地方,在於它很像 RAG 的最小可行版本。你先把文件切好,再轉成 embeddings,然後用向量搜尋找回最相關的片段。後面接 LLM,就能做問答或摘要。
推薦系統也能吃這套。商品描述、文章內容、影片字幕,都可以轉成向量。再搭配分類、時間、地區等欄位,就能做出比較像人類搜尋習慣的結果。
產業上,這類做法會越來越常見,原因很土炮也很現實。大家都想少搬一次資料。少一個系統,就少一次同步、少一份監控、少一堆權限設定。工程師通常會很買單。
如果你要追一個實作方向,我會建議先做這三件事:先用自己的資料跑一次 quick start,再量 latency,再比 recall。不要只看 demo 跑得順不順,真實資料才會露出問題。
我怎麼看 Redis 這條路
Redis 做向量搜尋,不是要取代所有向量資料庫。它比較像是把一個本來就很快的資料層,順手加上語意檢索能力。這對中小型產品很實用。
從架構角度看,這種整合式做法很有吸引力。你可以把 session、cache、metadata、vector 放在同一套系統。對團隊來說,學習成本和維運成本都比較低。
但我也不會講得太美。Redis 不是萬用解。當你的向量量級很大,或檢索需求很複雜,專門做向量的方案可能更合適。重點是先知道自己要的是什麼。
接下來該怎麼試
如果你手上有一個搜尋功能,我會建議先拿 1000 筆資料做測試。把關鍵字搜尋和向量搜尋都跑一次。看哪個結果比較接近使用者想要的答案。
再來是調 embedding model。不同模型的效果差很多。你可能會發現,同樣是 768 維向量,搜尋品質卻差一截。這種差異,實測比猜測有用。
講白了,Redis 這篇 quick start 的價值不在語法,而在路線。它告訴你,語意搜尋可以很快落地。下一步不是空想,而是把自己的資料丟進去測。