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(); の1行で完了します。
クライアントは、クロスコレクション参照([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 でオープンソースとして利用可能です。