VectorRAG.Net
进程内 .NET 向量数据库,零依赖零延迟,支持 LSH+SIMD 高性能 ANN 搜索与混合检索
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
进程内 .NET 向量数据库,零依赖零延迟,支持 LSH+SIMD 高性能 ANN 搜索与混合检索
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
大语言模型火了一年多,RAG(检索增强生成)已成为企业落地的标配架构。然而,当你真正想在内部系统、离线环境或嵌入式设备上部署 RAG 时,问题来了:Milvus 需要 Docker,ChromaDB 需要 Python 环境,Pinecone 需要联网订阅——这些外部依赖让本地化、私有化部署变得异常繁琐。
对于 .NET 生态下的开发团队来说,这个问题更加突出。现有主流向量数据库几乎全部围绕 Python 生态构建,C# 开发者要么调用 REST API(引入网络延迟和额外服务依赖),要么自己从头实现 ANN 算法(成本极高)。
VectorRAG.Net 正是为解决这个痛点而生:它是一个 完全嵌入(fully embedded)到 .NET 进程内的向量数据库,以 NuGet 包的形式分发,一行命令 dotnet add package VectorRAG.Net 即可集成到任何 C# 项目中,零外部依赖,零网络开销。
VectorRAG.Net 由独立开发者 principium.pro 创建和维护(项目主页:principium.pro/VectorRAG.Net),于 2026 年 2 月正式开源,迄今已获得 168 stars 和 29 forks。项目的核心理念是"No HTTP. No Docker. No external services. No network latency.",明确宣告它是一款为本地化、私有化场景设计的嵌入式向量数据库。
从 GitHub topics 来看,项目覆盖的领域非常精准:vector-database、rag、embeddings、semantic-search、hybrid-search、llm、ann-search 等,每一个 tag 都直指 RAG 系统的核心需求。
VectorRAG.Net 的向量搜索底层采用 Random Hyperplane LSH(局部敏感哈希) 进行近似最近邻(ANN)索引,并通过 SIMD 指令集进行向量化加速。从 benchmark 数据来看,在 10,000 条文档的测试集上:
| 操作 | 平均耗时 |
|---|---|
| 纯向量搜索(TopK=5) | 15.15 μs |
| 混合搜索(Vector + BM25) | 116.73 μs |
这个性能在嵌入式向量数据库中相当亮眼。传统的 LSH 方案精度有限,VectorRAG.Net 通过 精确重排序(exact rerank) 机制弥补:在 LSH 候选集上,用 dot product 或 cosine 相似度做精排,保证最终结果的召回精度。
纯向量搜索依赖 embedding 质量,对于短 query 或关键词匹配场景效果有限。VectorRAG.Net 支持 Alpha 加权混合搜索,其中 Alpha=1.0 表示纯向量搜索,Alpha=0.0 表示纯 BM25 关键词搜索,中间值(如 0.7)则融合两者优势。
var results = db.Search(queryVector, new SearchOptions
{
TopK = 5,
UseHybrid = true,
TextQuery = queryText,
Alpha = 0.7f
});
这对于企业内部知识库场景特别有价值:用户可能输入"密码重置"(向量语义)或"reset password"(关键词),混合搜索都能命中目标文档。
每个文档可以附加任意元数据,并在搜索时通过 Lambda 表达式过滤:
var results = db.Search(queryVector, new SearchOptions
{
TopK = 5,
Filter = md => md.Department == "Support" && md.IsActive
});
这种设计非常适合多租户场景或分部门知识库:只需一次索引,为不同用户/部门返回不同搜索结果,无需维护多套索引。
支持 自动文档分块(FixedChars 策略,可配置 chunk size 和 overlap),并通过 SaveAsync() / LoadAsync() 实现快照持久化,方便备份和迁移。
根据项目 README,VectorRAG.Net 面向以下四类场景:
① RAG 系统:在本地运行 LLM 时,无需额外部署 Milvus 或 Weaviate,向量存储和检索全部在进程内完成。
② 内部知识库:支持低延迟语义搜索,适用于文档检索和客服知识库系统,部网环境(无外网)下也能正常运行。
③ 桌面 AI 应用:完全离线运行,不依赖 Docker 或云服务,适合企业内网的桌面 AI 助手产品。
④ 边缘计算:在工业控制器、嵌入式设备等资源受限环境中运行,.NET 8 的 AOT(Ahead-of-Time Compilation)编译可进一步压缩运行时体积。
项目提供了完整的 Samples 示例,零外部依赖(使用内置的 HashEmbeddingModel 生成测试向量,无需 OpenAI API Key):
dotnet new console
dotnet add package VectorRAG.Net
# 复制 Samples/Program.cs 中的代码
dotnet run
对于已有 embedding 模型的 RAG 系统,只需替换为自己的 embedding 模型:
var model = new OpenAIEmbeddingModel("text-embedding-3-small", apiKey);
await db.UpsertTextDocumentAsync("doc:1", text, metadata, model);
var results = db.Search(await model.GenerateEmbeddingAsync(query), options);
整个集成链路清晰、简洁,.NET 开发者不会有任何陌生感。
从代码结构来看,VectorRAG.Net 展现了较高的工程水准:
SlidingRank.FastOps(SIMD 工具库),无重型第三方依赖文档方面,README 质量很高:功能说明清晰、代码示例完整、性能数据真实,但缺少 API 参考文档和架构设计说明。
需要诚实指出几个局限:
商业License(非开源):VectorRAG.Net 是商业软件,不是真正的开源项目。虽然允许免费用于评估、测试、研究和教育,但生产环境使用需要商业授权。这一点在入库决策时需要注意——它并非 MIT/Apache 等宽松开源 License。
ANN 精度受限:LSH 方案的精度通常不如 HNSW(以内存为代价),大规模数据集(>100万向量)上的表现有待验证。
仅支持 .NET 8:Windows/macOS/Linux 均可,但不支持 .NET Framework 4.x,老项目迁移存在门槛。
生态尚小:168 stars 的体量,核心功能迭代速度存在不确定性。
VectorRAG.Net 代表了向量数据库领域的一个细分趋势:嵌入式化。随着 AI 应用从云端走向边缘、从通用走向垂直,嵌入式向量数据库的市场需求正在快速增长。类似的趋势在 RocksDB(嵌入式 KV 存储)上已经验证过——当系统足够快、足够简单,开发者愿意放弃灵活性换取部署便利。
对于 .NET 生态而言,VectorRAG.Net 填补了本地向量数据库的空白,让 C# 开发者可以在不引入额外基础设施的情况下,构建完整的 RAG 应用。这对于企业内部 AI 转型、工业软件智能化等场景有重要的降本价值。