向量儲存庫將資料及其向量嵌入整合在一起,使應用程式能依語意相似性尋找紀錄。 在 Agent Framework 應用程式中,您可以使用向量儲存器來取得基礎資料以進行檢索增強生成(RAG),或儲存代理日後可回憶的資訊。
向量儲存抽象提供集合與記錄的常見操作,將應用程式邏輯與特定的向量儲存實作分開。 例如,你可以從本地實作開始,然後以最小的改動切換到託管服務。
向量儲存整合的運作方式
典型的向量儲存工作流程包含以下步驟:
- 定義一個資料模型,用以識別記錄鍵、資料欄位和向量欄位。
- 如果向量儲存庫無法產生嵌入,請設定嵌入產生器。
- 連接到向量商店,選擇或建立一個集合。
- 產生嵌入向量,並將記錄插入或更新至集合中。
- 根據實作的功能,可以用文字或向量搜尋該收藏。
- 將相關搜尋結果傳遞給代理,作為上下文,或將搜尋功能提供為代理工具。
.NET 向量儲存支援
代理框架採用 .NET AI 生態系統的獨立抽象:
-
Microsoft.Extensions.VectorData提供常見的向量儲存、收集、記錄及搜尋 API。 -
Microsoft.Extensions.AI提供抽象,例如IEmbeddingGenerator,可獨立於特定模型提供者產生嵌入。
當 Agent Framework 元件接受向量儲存時,你可以提供相容 Microsoft.Extensions.VectorData 的實作。 每個資料庫實作皆與抽象套件分開分發。
核心抽象概念
| 抽象 | Purpose |
|---|---|
VectorStore |
提供跨集合操作並建立型別集合實例。 |
VectorStoreCollection<TKey, TRecord> |
建立或刪除集合,並對其記錄進行更新、檢索或刪除。 |
IVectorSearchable<TRecord> |
當有嵌入產生器或資料庫端嵌入功能時,會依向量或文字搜尋紀錄。 |
可用的向量儲存實作
以下實作使用常見的 .NET 向量儲存抽象。 請檢視每個實作的文件,了解套件版本、支援的資料型態及服務特定限制。
| Implementation | Availability | 使用官方支援的資料庫 SDK | 維護人員或廠商 |
|---|---|---|---|
| Azure AI 搜尋服務 | Available | Yes | Microsoft |
| Azure Cosmos DB 用於 MongoDB vCore | Available | Yes | Microsoft |
| Azure Cosmos DB 用於 NoSQL | Available | Yes | Microsoft |
| Couchbase | Available | Yes | Couchbase |
| Elasticsearch | Available | Yes | Elastic |
| Chroma | 規劃中 | 不適用 | 不適用 |
| 記憶體內 | Available | 不適用 | Microsoft |
| Milvus | 規劃中 | 不適用 | 不適用 |
| MongoDB | Available | Yes | Microsoft |
| Neon Serverless PostgreSQL | 使用 Postgres 實作 | Yes | Microsoft |
| Oracle | Available | Yes | Oracle |
| Pinecone | Available | No | Microsoft |
| Postgres | Available | Yes | Microsoft |
| Qdrant | Available | Yes | Microsoft |
| 雷迪斯 | Available | Yes | Microsoft |
| SQL 伺服器 | Available | Yes | Microsoft |
| SQLite | Available | Yes | Microsoft |
| 記憶體中的揮發性 | 已棄用;請改用記憶體內實作 | 不適用 | Microsoft |
| Weaviate | Available | Yes | Microsoft |
Important
向量儲存實作由多位維護者提供。 在使用前,請評估每個實作的品質、授權、支援政策及版本相容性。 有些實作使用了資料庫 SDK,但資料庫提供者並未正式支援。
開始
- 加入
Microsoft.Extensions.VectorData.Abstractions套件,以及您所選向量存放區實作的套件。 - 定義一個記錄類型,並識別其鍵、資料及向量屬性。
- 如果您的實作需要由應用程式產生的嵌入,請設定
IEmbeddingGenerator。 - 建立實作的
VectorStore,然後取得一個具型別的VectorStoreCollection<TKey, TRecord>。 - 確保該集合存在,更新記錄,並用文字或向量呼叫
SearchAsync。
欲了解資料模型、資料擷取、嵌入與搜尋的完整介紹,請參閱 .NET AI 應用程式的向量資料庫。
Python 向量儲存支援
Agent Framework 採用 語意核心 for Python 的向量儲存抽象與實作。 語意核心 集合提供常見的操作,用於建立集合、上傳與檢索記錄,以及在所選實作支援時執行向量、關鍵字或混合搜尋。
Warning
適用於 Python 的 語意核心 向量存放區功能目前為候選版本。 在正式推出之前,可能會發生少量破壞性變更。
可用的向量儲存實作
| Implementation | Availability | 使用官方支援的資料庫 SDK | 維護人員或廠商 |
|---|---|---|---|
| Azure AI 搜尋服務 | Available | Yes | Microsoft 語意核心計畫 |
| Azure Cosmos DB 用於 MongoDB vCore | Available | Yes | Microsoft 語意核心計畫 |
| Azure Cosmos DB 用於 NoSQL | Available | Yes | Microsoft 語意核心計畫 |
| 色度 | Available | Yes | Microsoft 語意核心計畫 |
| Elasticsearch | 規劃中 | 不適用 | 不適用 |
| Faiss | Available | Yes | Microsoft 語意核心計畫 |
| 記憶體內 | Available | 不適用 | Microsoft 語意核心計畫 |
| MongoDB | Available | Yes | Microsoft 語意核心計畫 |
| Neon Serverless PostgreSQL | 使用 Postgres 實作 | Yes | Microsoft 語意核心計畫 |
| Oracle | Available | Yes | Oracle |
| Pinecone | Available | Yes | Microsoft 語意核心計畫 |
| Postgres | Available | Yes | Microsoft 語意核心計畫 |
| Qdrant | Available | Yes | Microsoft 語意核心計畫 |
| 雷迪斯 | Available | Yes | Microsoft 語意核心計畫 |
| SQL 伺服器 | Available | pyodbc |
Microsoft 語意核心計畫 |
| SQLite | 規劃中 | 不適用 | Microsoft 語意核心計畫 |
| Weaviate | Available | Yes | Microsoft 語意核心計畫 |
Important
向量儲存實作由多位維護者提供。 在使用前,請評估每個實作的品質、授權、支援政策及版本相容性。
開始
- 安裝
semantic-kernel以及你所選的實作所需的相依套件。 - 用
@vectorstoremodel裝飾器定義模型,並識別其鍵、資料和向量場。 - 為該模型建立一個實作專屬的集合。
- 請先確認該集合存在,然後對記錄執行插入或更新操作。
- 使用收藏的搜尋 API 來取得申請所需的紀錄。
關於實作設定與完整範例,請參見 語意核心 向量儲存庫。
Go 向量儲存支援
Agent Framework for Go 尚未提供向量商店整合功能。 最新狀態請參閱 Agent Framework Go 倉庫 。