前幾天分享過向量資料庫概念科普,這篇也算豬走路系列,快速看一下 RAG 常用的向量資料庫選項,增廣見聞為主,點到為止。

而我出發的角度比較另類,預估未來主要會用 Semantic Kernel 框架開發 RAG 應用程式,所以會先從 SK 提到的向量資料庫看起。

早期 SK 提供一套名為 Semantic Memory 的 C#/Python/Java 程式庫以支援向量資料庫;後來 SK 重構調整後(重構是美事,但也代表早期入坑的先鋒們要流淚了 XD),將這塊獨立成 Kernel Memory 服務,接受的資料格式由純文字擴大到網頁、PDF、Word/PowerPoint/Excel、Markdown、JSON,支援 Filter/AND OR 條件複合式搜索,並支援各種語言、瀏覽器套件等。Kernel Memory 以後有機再深入,這裡只看它涵蓋的向量資料庫種類:Azure AI Search、Chroma、DuckDB、Kusto、Milvus、MongoDB Atlas、Pinecone、Postgres、Qdrant、Weaviate。

Azure AI Search 功能十分齊全,先前做 Lab 有體驗過,可接受文字、文件(PDF/Office/HTML/ePub/JSON/XML/CSV... 通吃)、圖片、影片、音訊,甚至內建 OCR,什麼文件資料無腦塞進去,就能用自然語言查詢(並支援向量跟全文搜索混合式搜尋,這段若自己實作得費點手腳),用起來超簡便,缺點是成本較高。

DuckDB 類似 OLAP 版的 SQLite,也支援 Embedding 查詢;Kusto 是 Azure Data Explorer 的別名,也可當成向量料庫使用。這兩套幾乎沒在其他地方看到討論,略過。

綜合了幾篇評比文章,下面是我整理常被提及的向量資料庫:

  1. Pinecone
    Cloud Native 向量資料庫,透過 API 可方便呼叫使用,屬雲端服務無系統維運需求,也可輕易擴充,但無法部署在地端。
  2. MongoDB Atlas
    MongoDB 的 Atlas Vector Search 概念是為核心資料產生自動同步的向量索引,並可配置在獨立的系統環境運行,方便擴充調整。
  3. Milvus
    採 Apache 授權的開源向量資料庫,擅於 Embedding、向量相似搜尋及 AI 應用,能支援 TB 級資料量,非結構化資料處理方式簡便。
  4. Chroma
    輕巧型設計,向量資料以自訂格式存在磁碟,另使用 SQLite 維護額外 Metadata。
  5. Weaviate
    Cloud Native, 開源,可將文字、照片及其他資料轉為可搜尋向量,使用 10-NN Neighbor Search 可在 ms 內搜尋百萬筆資料,強調支援 AI 模型整合。
  6. Qdrant
    開源向量相似性搜索引擎及資料庫,提供可用於生產環境的向量儲存、搜尋服務,可使用文字比對、數字區間、地理位置等額外查詢條件,主打查詢速度快。
  7. Elasticsearch
    2022 Elasticsearch 8.0+ 提供向量搜索跟 NLP,使用 Apache Lucene HNSW 實現。
  8. Vespa AI
    開源的分散式搜尋引擎和資料處理平台,最初由雅虎開發,現歸屬於Oath公司(Verizon旗下子公司),在社交網路、電子商務、新聞聚合、廣告等領域應用廣泛。
  9. Pgvector (PostgreSQL)
    Pgvector 是 PostgreSQL 的擴充套件,在傳統 RDBMS 功能外擴充了向量搜索功能,特別適用原本已在使用 PostgreSQL 的系統。
  10. Faiss
    Faiss 是 Facebook AI Search 釋出的開源程式庫,不算是資料庫,概念是針對向量建立索引並進行高效率搜索。

【參考資料】

  1. Best 16 Vector Databases for 2024 by Einat Orr, PhD
  2. An Honest Comparison of Open Source Vector Databases - KDnuggets
  3. Picking a vector database: a comparison and guide for 2023 by Emil Fröberg
  4. How to pick a Vector Database — Quantitative Analysis by Jiashen Cao


Comments

Be the first to post a comment

Post a comment