[撒花]
本文是對:https://guangzhengli.com/blog/zh/vector-database/# 的總結。
有時間的可以去精讀一下原文!
目錄結構
引言
也許你最近可能聽過這樣的新聞,某向量資料庫的初創公司剛寫好 PPT,就獲得了幾千萬的投資,某公司的開源的向量資料庫因其代碼的簡陋而登上了 Hackernews 等等。在過去幾個月時間中, AI 應用的發展如火如荼,帶動了 AI 應用技術棧上下遊的火爆,而向量資料庫就是其中最熱門的之一。
一、GPT 的缺陷
核心要點:GPT存在哪些主要缺陷限制了其應用?
GPT 存在以下缺陷:
- token 長度限制:輸入文本長度不可超過特定 token 數目,例如 GPT-3 為 4096 tokens
- 無記憶能力:GPT 作為大型語言模型(LLM)沒有記憶能力
- 使用成本高:GPT API 是按 token 計費,輸入文本越長費用越高
二、向量資料庫的崛起
核心問題:向量資料庫的應用前景有哪些?
- 基于向量空間模型,可以存儲非結構化資料
- 通過相似性搜尋而非精确比對檢索資訊
- 可降低 GPT 使用成本,應用于問答系統等場景
三、Vector Embeddings
要點:Vector Embedding的作用是什麼?
- 使用 AI 模型生成包含語義資訊的高維向量表示
- 将非結構化資料轉換為語義向量,存儲在向量資料庫中
- 文本用 text-embedding-ada-002 生成,圖像用 clip-vit-base-patch32 生成
四、特征和向量
問題:特征和向量的關系是什麼?
- 提取資料的多種特征,在高維空間中表示為坐标
- 計算不同向量間歐幾裡得距離判斷相似度
- 次元越多可以更準确判别相似性
五、相似性搜尋 (Similarity Search)
要點:相似性搜尋的常用算法有哪些?
5. 1 K-Means 和 Faiss
- 使用聚類算法将向量分組,限制搜尋範圍
- Faiss 使用多探針搜尋調整搜尋範圍
- 缺點:聚類效果依賴參數選擇,可能漏失邊界樣本
5.2 Product Quantization (PQ)
- 将高維向量分解為多個子向量,獨立量化編碼
- 大幅降低存儲開銷
- 查詢時組合子向量得到原向量
- 缺點:量化帶來資訊損失,降低搜尋品質
5.3 Hierarchical Navigable Small Worlds (HNSW)
- 建構多層圖,從第一層搜尋逐層逼近目标
- 保證搜尋速度和結果品質
- 缺點:建構複雜,存儲開銷較大
5.4 Locality Sensitive Hashing (LSH)
- 使用高碰撞機率的哈希函數
- 将相似向量映射到同一存儲桶
- 桶内向量數少,可快速搜尋
- 缺點:hash結果依賴參數和資料分布
5.5 Annoy
- 基于森林的向量搜尋實作算法
- 支援餘弦相似度、歐式距離等測量
- 缺點:隻支援餘弦相似度等較簡單測量
六、相似性測量 (Similarity Measurement)
問題:常見的相似性量化方法有哪些?
6.1 Euclidean Distance
- 反映向量間直線距離
- 考慮向量長度
- 應用場景:使用者曆史行為數量推薦
6.2 Cosine Similarity
- 反映向量間角度
- 不考慮長度
- 應用場景:語義搜尋、文檔分類
6.3 Dot product Similarity
- 簡單快速
- 考慮向量長度和方向
- 應用場景:圖像識别、語義搜尋、文檔分類
七、過濾 (Filtering)
要點:過濾對向量搜尋有何作用?
- 先後過濾中繼資料實作精确比對
- 優化過濾流程提高性能
八、向量資料庫選型
問題:選擇向量資料庫需考慮的因素有哪些?
8.1 分布式
- 需要高可用性、容錯性
- 使用分片和複制提高穩定性
8.2 通路控制和備份
- 支援細粒度權限控制、日志審計、資料備份
8.3 API & SDK
- 簡單、完善的 API 設計提高開發效率
8.4 選型
- 綜合考慮算法、性能、成本等因素
8.5 傳統資料庫擴充
要點:傳統資料庫也可以實作向量搜尋
- 使用擴充實作向量搜尋功能
- 如 PostgreSQL 的 pgvector, Redis 的 RediSearch
九、總結
要點:向量資料庫和傳統資料庫應用展望
- 兩種資料庫各有優勢,可以同時使用實作互補
#頭條創作挑戰賽#