秘訣
如需最新的向量資料庫和 RAG 模式應用程式範例,請流覽 Azure Cosmos DB 範例資源庫。
向量資料庫跨分析和生成式 AI 用於多種領域和情況中,包括自然語言處理、視訊和影像辨識、建議系統和搜尋等等。
2023 年,軟體的一種顯著趨勢是 AI 增強功能的整合,通常藉由將特製化獨立向量資料庫併入現有的技術堆疊來實現。 本文說明何謂向量資料庫,並呈現您可能想要考慮的替代架構:在您已經使用的 NoSQL 或關聯式資料庫中使用整合式向量資料庫,特別是在使用多重模式資料時。 這種方法不僅可讓您降低成本,還能實現更高的資料一致性、可擴縮性和效能。
秘訣
資料一致性、可擴縮性和效能對於資料密集應用程式而言至關重要,這就是為什麼 OpenAI 選擇在 Azure Cosmos DB 上建置 ChatGPT 服務的原因。 您也可以利用其整合式向量資料庫,以及其個位數毫秒回應時間、自動與即時可擴縮性和任何規模的保證速度。 查看 實作範例 並 免費試用。
什麼是向量資料庫?
向量資料庫是用來儲存及管理向量內嵌的資料庫,這是高維度空間中資料的數學表示法。 在此空間中,每個維度各對應至資料的一個特徵,且有數萬個維度可用來代表複雜的資料。 向量在此空間中的位置代表其特性。 單字、片語或整份文件、影像、音訊和其他類型的資料,全都可以向量化。 這些向量內嵌會用於相似度搜尋、多重模式搜尋、建議引擎、大型語言模型 (LLM) 等。
在向量資料庫中,內嵌會根據其向量距離或相似度,透過向量搜尋演算法進行索引編製和查詢。 必須有強固的機制,才能識別最相關的資料。 一些著名的向量搜尋演算法包括分層可導航小世界 (HNSW)、倒置檔案 (IVF) 和 DiskANN。
整合式向量資料庫與純向量資料庫
向量資料庫實作有兩種常見的類型:純向量資料庫和 NoSQL 或關聯式資料庫中的整合向量資料庫。
純向量資料庫旨在有效地儲存和管理向量嵌入以及少量元資料;它與衍生內嵌的資料來源是分開的。
整合在高效能 NoSQL 或關聯式資料庫中的向量資料庫會提供額外的功能。 NoSQL 或關聯式資料庫中的整合式向量資料庫可以儲存、編製索引和查詢內嵌,以及對應的原始資料。 此方法可讓您在複寫個別純向量資料庫中的資料時,無需支付額外的成本。 此外,一起保存向量內嵌和原始資料,可以更好地協助多模態資料操作,並提高資料一致性、規模和效能。 具有架構彈性和整合向量資料庫的高效能資料庫,特別適用於 AI 代理程式。
向量資料庫使用案例
向量資料庫用於分析和生成式 AI 的眾多領域和情況,包括自然語言處理、視訊和影像辨識、推薦系統和搜尋。 例如,您可以使用向量資料庫:
- 根據相似的圖像、文件和歌曲的內容、主題、情感和風格來識別它們
- 根據類似產品的特徵、功能和使用者群體來識別
- 根據個人喜好推薦內容、產品或服務
- 根據使用者群組的相似性推薦內容、產品或服務
- 從大量選擇中找出最適合的潛在選項,以滿足複雜的要求
- 識別與主要或正常模式不同的資料異常或詐欺活動
- 實作 AI 代理程式的持續性記憶體
秘訣
除了向量資料庫的這些典型使用案例之外,我們的整合式向量資料庫也是生產層級 LLM 快取的理想解決方案,因為其低延遲、高可擴縮性和高可用性。
向量資料庫特別受歡迎,因其可啟用檢索增強生成(RAG),以利用大型語言模型(LLM)及自訂資料或特定領域資訊。 此方法可讓您:
- 從 AI 模型產生與情境相關且精準的使用者提示回應
- 克服 LLM 的權杖限制
- 降低因更新資料而需要頻繁微調的成本
此程序涉及擷取自訂資料來源的相關資訊,以及透過提示工程將其整合到模型要求中。 在將要求傳送至 LLM 之前,使用者輸入/查詢/要求也會轉換為內嵌,並採用向量搜尋技術找出資料庫中最相似的內嵌。 這項技術可用來識別資料庫中最相關的資料記錄。 接下來會使用提示工程,將這些擷取的記錄提供作為 LLM 要求的輸入。
備註
對超高通量向量搜尋功能有興趣嗎? Azure Cosmos DB 正在開發針對大型向量資料集搭配超高通量插入與搜尋的強化向量搜尋功能。 它能以可預測、低延遲及無與倫比的成本效益,容納數百萬次每秒查詢(QPS)。 註冊以了解更多搶先體驗機會,並在這些功能開放時收到通知。
向量資料庫相關概念
內嵌
內嵌是一種特殊格式的資料表示法,可供機器學習模型和演算法輕易使用。 嵌入是一段文字語義意義的資訊密集表示。 每個內嵌都是浮點數的向量,因此向量空間中兩個內嵌之間的距離會與原始格式兩個輸入之間的語意相似性相互關聯。 舉例來說,兩段類似文字的向量表示法也應該會相似。 向量資料庫延伸模組可讓您使用原始資料儲存內嵌,以確保資料的一致性、規模和效能。
向量搜尋
向量搜尋是一種幫助您根據資料特性而非屬性欄位的完全匹配來尋找相似項目的方法。 此技術適用於搜尋類似文字、尋找相關影像、提出建議,甚至偵測異常這類應用程式。
其運作方式是使用內嵌 API (例如 Azure OpenAI 內嵌或 Hugging Face on Azure) 來取得您使用機器學習模型建立的資料的向量表示法 (數字清單)。 其接著會測量資料向量與查詢向量之間的距離。 最接近查詢向量的資料向量就是所找到語意最類似的資料向量。
使用原生向量搜尋功能,可讓您以有效率的方式直接儲存、編製索引及搜尋高維度向量資料,以及其他應用程式資料。 此方法可讓您無須將資料移轉至成本較高的替代向量資料庫,並且能順暢地整合您的 AI 驅動應用程式。
提示和提示工程
提示是指特定文字或資訊,可供 LLM 作為指令,或供 LLM 作為建置基礎的內容資料。 提示可採取各種形式,例如問題、陳述,甚或程式碼片段。 提示可以作為:
- 為 LLM 提供指引的指令
- 將資訊提供給 LLM 進行處理的主要內容
- 幫助將模型調整為特定任務或流程的示例
- 用來引導 LLM 以正確的方向產生輸出的提示
- 代表 LLM 可用來產生輸出的補充資訊的支援內容
為案例建立良好提示的程序,稱為提示工程。 如需有關提示及提示工程的最佳實踐資訊,請參閱 系統訊息設計。
代幣
標記是透過將輸入文字分割成較小區段而產生的小區塊。 這些區段可以是單字或字元群組,長度從單一字元到整個單字不等。 例如,hamburger 這個字會分成 ham、bur 和 ger 等權杖,而像 pear 這樣短而常見的單字,則會被視為單一權杖。 ChatGPT、GPT-3.5 或 GPT-4 等 LLM 會將單字分解為權杖進行處理。 [返回]
擷取擴增生成
檢索增強生成 (RAG) 是一種架構,透過添加像向量搜尋這樣的信息檢索系統,增強了 LLM(如 ChatGPT、GPT-3.5 或 GPT-4)的功能。這些系統提供了基礎數據,例如儲存在向量資料庫中的數據。 此方法可讓您的 LLM 根據來自向量化文件、影像、音訊、視訊等的自訂資料來源,產生與情境相關且精準的回應。
使用 Azure Cosmos DB for NoSQL 的簡單 RAG 模式可以:
- 啟用 Azure Cosmos DB NoSQL 向量索引
- 使用容器向量政策和向量索引設定資料庫和容器
- 將資料插入 Azure Cosmos DB for NoSQL 資料庫和容器中
- 使用 Azure OpenAI 內嵌從資料屬性建立內嵌
- 連接 Azure Cosmos DB for NoSQL。
- 透過內嵌屬性建立向量索引
- 建立函式,以根據使用者提示執行向量相似度搜尋
- 使用 Azure OpenAI 完成模型在資料上進行問題解答
具有提示工程的 RAG 模式可提供更多內容資訊給模型,藉以提升回應品質。 RAG 可藉由將相關的外部來源併入產生程序中,讓模型能夠套用更廣泛的知識庫,進而產生更全面且明智的回應。 如需詳細資訊,請參閱讓 LLM 有依據地回答問題。
如何實作整合式向量資料庫功能
您可以針對下列 Azure Cosmos DB API 實作整合式向量資料庫功能:
NoSQL API
Azure Cosmos DB for NoSQL 是世界上第一個無伺服器 NoSQL 向量資料庫。 將您的向量和資料儲存在具有 整合向量資料庫功能的 Azure Cosmos DB for NoSQL 中,您可以在其中建立以 DiskANN 為基礎的向量索引,這是 Microsoft Research 所開發的高效能向量索引演算法套件。
DiskANN 可讓您在任何規模執行高度精確、低延遲的查詢器,同時利用適用於 NoSQL 的 Azure Cosmos DB 的所有優點,例如 99.999% SLA (已啟用 HA)、異地複寫、從無伺服器到佈建輸送量 (RU) 的無縫轉換,全部都在一個資料存放區中。
連結與範例
- ChatGPT 背後的資料庫是什麼? - Microsoft Mechanics
- Azure Cosmos DB for NoSQL 中的向量索引編製
- VectorDistance 系統函數 NoSQL 查詢
- 適用於 NoSQL 的 Azure Cosmos DB 中的向量搜尋
- Python - 筆記本教學課程
- C# - 使用 AKS 和語意核心建置您自己的 Copilot 完整解決方案加速器 (英文)
- C# - 建置您自己的 Copilot 範例應用程式和實際操作實驗室 (英文)
- Python - 電影聊天機器人 (英文)
程式碼範例
- Python 筆記本 - 透過 LangChain 進行向量資料庫整合教學課程 (英文)
- Python 筆記本 - 使用 LangChain 的 LLM 緩存整合教學
- Python 與 LlamaIndex 的整合
- Python - 語意核心記憶體整合
- Python 筆記本 - 電影聊天機器人 (英文)
適用於 PostgreSQL 的 API
使用 Azure Cosmos DB for PostgreSQL 中原生整合的向量資料庫,其會提供有效的方式,直接儲存、編製索引及搜尋高維度向量資料,以及其他應用程式資料。 此方法可讓您無須將資料移轉至成本較高的替代向量資料庫,並且能順暢地整合您的 AI 驅動應用程式。
程式碼範例
- Python:Python 筆記本教學課程 - 美食評論聊天機器人