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。