Weaviate 託管型 .NET 客戶端(Technical Preview)為 C# 開發者提供了一種全新的方式與 Weaviate 向量資料庫互動。它受 Entity Framework Core 啟發,允許你透過 C# 屬性直接在模型類上定義集合架構,無需字串配置或單獨的配置檔案。
例如,一個包含標題、內容、來源標籤和自由標籤的文件類可以這樣定義:
[WeaviateCollection("Document")]
public class Document
{
[WeaviateUUID]
public Guid Id { get; set; }
[Property]
[Index(Filterable = true, Searchable = true)]
public string Title { get; set; }
[Property]
[Index(Searchable = true)]
[Tokenization(PropertyTokenization.Word)]
public string Content { get; set; }
// ... 其他屬性與向量定義
}透過 [Vector] 屬性可以定義命名向量(如標題向量和內容向量),實現精確匹配與深度語義搜尋。建立集合只需一行 await client.Collections.CreateFromClass();。
客戶端還支援跨集合引用(透過 [Reference] 屬性)、自動批次插入(自動處理依賴順序)、以及型別安全的查詢語法:
var results = await context.Documents
.Query()
.NearText("zero downtime deployment strategies")
.Where(d => d.Source == "blog" && d.Tags.ContainsAny(["kubernetes"]))
.WithMetadata()
.Limit(5)
.Execute();當架構需要演進時,CheckMigrate() 和 Migrate() 方法提供安全、僅追加的遷移計劃,避免破壞性變更。此外,透過 [Generative] 屬性即可啟用 RAG(檢索增強生成),在查詢結果上自動生成摘要或整合回答。
對於需要隔離資料的場景,多租戶支援允許透過 ForTenant() 方法以同一模型類隔離資料。在 ASP.NET Core 中,可透過 AddWeaviateContext 註冊上下文,並可選擇 AutoMigrate 選項在啟動時自動應用遷移。
如果屬性無法滿足高階需求(如排除集合名稱參與向量化),ConfigMethod 提供了命令式配置的“逃生艙”。
總之,Weaviate 託管型 C# 客戶端讓 .NET 開發者以熟悉的模式構建語義搜尋和 AI 功能,無需樣板程式碼。它已在 NuGet 上釋出,開源在 GitHub。