向量資料庫
提示
如需最新的向量資料庫和RAG模式應用程式範例,請流覽我們的新範例庫
向量資料庫跨分析和生成式 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 要求的輸入。
向量資料庫相關概念
Embeddings
內嵌是一種特殊格式的資料表示法,可供機器學習模型和演算法輕易使用。 內嵌是文字片段語意的資訊密集表示法。 每個內嵌都是浮點數的向量,因此向量空間中兩個內嵌之間的距離會與原始格式兩個輸入之間的語意相似性相互關聯。 舉例來說,兩段類似文字的向量表示法也應該會相似。 向量資料庫延伸模組可讓您使用原始資料儲存內嵌,以確保資料的一致性、規模和效能。 [返回]
向量搜尋
向量搜尋是一種方法,可協助您根據其資料特性來尋找類似的項目,而不是根據屬性欄位上完全相符的項目。 此技術適用於搜尋類似文字、尋找相關影像、提出建議,甚至偵測異常這類應用程式。 其運作方式是使用內嵌 API (例如 Azure OpenAI 內嵌或 Hugging Face on Azure),以向量表示法 (數字清單) 呈現資料,而資料是您使用機器學習模型建立的。 其接著會測量資料向量與查詢向量之間的距離。 最接近查詢向量的資料向量就是所找到語意最類似的資料向量。 使用原生向量搜尋功能,可讓您以有效率的方式直接儲存、編製索引及搜尋高維度向量資料,以及其他應用程式資料。 此方法可讓您無須將資料移轉至成本較高的替代向量資料庫,並且能順暢地整合您的 AI 驅動應用程式。 [返回]
提示和提示工程
提示是指特定文字或資訊,可供 LLM 作為指令,或供 LLM 作為建置基礎的內容資料。 提示可採取各種形式,例如問題、陳述,甚或程式碼片段。 提示可以作為:
- 指令對 LLM 提供指示詞
- 主要內容:將資訊提供給 LLM 進行處理
- 範例:協助將模型調節為特定工作或程序
- 指引:將 LLM 的輸出導向正確的方向
- 支援內容:代表 LLM 可用來產生輸出的補充資訊
為案例建立良好提示的程序,稱為提示工程。 如需提示和提示工程最佳做法的詳細資訊,請參閱 Azure OpenAI 服務提示工程技術。 [返回]
語彙基元
權杖是藉由將輸入文字分割成較小區段而產生的小型文字區塊。 這些區段可以是單字或字元群組,長度從單一字元到整個單字不等。 例如,hamburger 這個字會分成 ham、bur 和 ger 等權杖,而像 pear 這樣短而常見的單字,則會被視為單一權杖。 ChatGPT、GPT-3.5 或 GPT-4 等 LLM 會將單字分解為權杖進行處理。 [返回]
擷取擴增生成
擷取擴增生成 (RAG) 是一種架構,可藉由新增資訊擷取系統,例如提供基礎資料 (例如,儲存在向量資料庫中的資料) 的向量搜尋,來增強 ChatGPT、GPT-3.5 或 GPT-4 等 LLM 的功能。 此方法可讓您的 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 的詳細資訊,請參閱基礎 LLM。 [返回]
以下是使用整合式向量資料庫功能對您資料實作 RAG 的多種方式:
如何實作整合式向量資料庫功能
您可以針對下列 Azure Cosmos DB API 實作整合式向量資料庫功能:
NoSQL API
Azure Cosmos DB for NoSQL 是世界上第一個無伺服器 NoSQL 向量資料庫。 將向量和資料一起儲存在具有整合式向量資料庫功能的 Azure Cosmos DB for NoSQL,其中您可以根據 DiskANN (Microsoft Research 開發的一套高效能向量索引演算法) 建立向量索引。
DiskANN 可讓您執行任何規模的高精確、低延遲查詢器,同時利用 Azure Cosmos DB for NoSQL 的所有優點,例如 99.999% SLA (已啟用 HA)、異地復寫、從無伺服器到佈建輸送量 (RU) 的無縫轉換,全都位於一個資料存放區中。
連結與範例
- ChatGPT 背後的資料庫是什麼? - Microsoft Mechanics
- Azure Cosmos DB for NoSQL 中的向量索引編製
- VectorDistance 系統函數 NoSQL 查詢
- 如何在 Azure Cosmos DB NoSQL 中設定向量資料庫功能
- Python - 筆記本教學課程 (英文)
- C# - 使用 AKS 和語意核心建置您自己的 Copilot 完整解決方案加速器 (英文)
- C# - 建置您自己的 Copilot 範例應用程式和實際操作實驗室 (英文)
- Python - 電影聊天機器人 (英文)
Azure Cosmos DB for MongoDB
使用 Azure Cosmos DB for MongoDB 中原生整合的向量資料庫 (虛擬核心結構),其會提供有效的方式,直接儲存、編製索引及搜尋高維度向量資料,以及其他應用程式資料。 此方法可讓您無須將資料移轉至成本較高的替代向量資料庫,並且能順暢地整合您的 AI 驅動應用程式。
程式碼範例
- 使用語意核心在 C# 中針對 Azure Cosmos DB for MongoDB 建置您自己的 Copilot (英文)
- .NET 教學課程 - 食譜聊天機器人
- C# RAG 模式 - 整合 OpenAI 服務與 Cosmos
- Python RAG 模式 - Azure 產品聊天機器人
- Python 筆記本 - 透過 LangChain 進行向量資料庫整合教學課程 (英文)
- Python 筆記本 - 透過 LangChain 進行 LLM 快取整合教學課程 (英文)
- Python - LlamaIndex 整合
- Python - 語意核心記憶體整合
- Python 筆記本 - 電影聊天機器人 (英文)
API for PostgreSQL
使用 Azure Cosmos DB for PostgreSQL 中原生整合的向量資料庫,其會提供有效的方式,直接儲存、編製索引及搜尋高維度向量資料,以及其他應用程式資料。 此方法可讓您無須將資料移轉至成本較高的替代向量資料庫,並且能順暢地整合您的 AI 驅動應用程式。
程式碼範例
- Python:Python 筆記本教學課程 - 美食評論聊天機器人