SharpVector
轻量级内存向量数据库,零依赖嵌入 .NET 应用实现本地语义搜索
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
轻量级内存向量数据库,零依赖嵌入 .NET 应用实现本地语义搜索
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

图1:SharpVector 概览 — 在 .NET 应用中嵌入语义搜索能力
你正在用 .NET 开发一个企业内部知识库系统,需要让 AI 助手能够「理解」用户的查询意图,而不是做机械的关键词匹配。传统的做法是调用云端向量数据库服务(如 Azure AI Search),但这意味着数据必须上云、引入外部依赖、增加延迟和成本。SharpVector 告诉你:这件事完全可以在本地、在内存中完成,一行 NuGet 包引入即可。
SharpVector 由 Chris Pietschmann 主导开发,他是 Build5Nines 创始人、Microsoft MVP、HashiCorp Ambassador。这是一位长期活跃在 .NET 生态的技术布道者,其博客 Build5Nines.com 是微软技术圈公认的高质量资源站点。Chris 在 2024-2025 年间观察到:随着 ChatGPT 带动的 RAG(检索增强生成)热潮,向量数据库成了 AI 应用的关键基础设施,但 .NET 开发者面对的选择非常有限——要么引入沉重的外部服务(Azure Cosmos DB、Elasticsearch),要么自己从零实现向量索引。SharpVector 正是为了填补这一空白而生:做一个可以零摩擦集成进任何 .NET 应用的内存向量数据库。
项目自 2024 年初首次发布以来保持活跃迭代,截至 2026 年 7 月已发布至 v2.2.1,GitHub 获星 141,CHANGELOG 显示主要版本更新集中在向量持久化和批量操作能力上。
值得特别一提的是,SharpVector 已被微软 Azure App Service 团队的技术博客引用推荐(文章标题为《Phi3 Vector》,作者 Tulika Chaudharie 为微软 Principal Product Manager),这是该项目进入主流技术视野的重要标志。
SharpVector 的核心是一个全内存运行的向量数据库。当你调用 BasicMemoryVectorDatabase 创建实例后,所有文本嵌入向量都存储在内存中,搜索时无需任何网络开销,延迟可以控制在亚毫秒级。这对于需要快速原型验证或在本地处理敏感数据(不能上云)的场景来说,是极具吸引力的选择。
从 v2.2.0 开始,项目还引入了 BasicDiskVectorDatabase,在保持内存搜索速度的同时,支持将数据自动持久化到磁盘。这意味着即使进程重启,已存储的向量数据也不会丢失。持久化格式为 JSON 文件,通过 BasicDiskVectorStore 和 BasicDiskVocabularyStore 分别管理向量数据和词汇表。
SharpVector 的嵌入生成(将文本转为向量)是可插拔架构,通过 IEmbeddingsGenerator 接口抽象。项目提供了三个开箱即用的嵌入后端:
text-embedding-3-small 或 ada-002 等模型生成向量。需要 OpenAI API Key,适合快速接入生产环境。nomic-embed-text、mxbai-embed-large)生成向量。数据完全不离开本地,隐私敏感场景首选。BagOfWordsVectorizer 提供轻量级的本地嵌入方案,无需任何外部服务,直接在文本上做词袋向量化。适合 demo 和离线环境。这种分层设计非常务实:开发者可以在开发阶段用本地向量化快速跑通流程,生产环境切换到 OpenAI/Ollama,无需修改业务代码。
向量搜索的本质是在高维空间中找「最接近」的向量。SharpVector 内置两种相似度比对策略:
CosineSimilarityVectorComparerAsync):默认策略,计算向量夹角的余弦值,最适合语义相似度场景。EuclideanDistanceVectorComparerAsync):计算向量在空间中的直线距离,对数值型向量效果好。切换比对策略只需在数据库构造时传入不同的 IVectorComparer 实现即可。
搜索质量很大程度上取决于输入文本的预处理质量。SharpVector 提供 ITextPreprocessor + BasicTextPreprocessor 的可配置预处理管道,典型操作包括:转小写、去除标点、停用词过滤、分词等。预处理后,文本再进入向量化器生成向量存入数据库,确保搜索端和存储端使用一致的预处理逻辑。
SharpVector 的设计哲学是最小化集成成本。以下是典型使用流程:
// 通过 NuGet 引入
// dotnet add package Build5Nines.SharpVector
// 创建内存向量数据库
var vdb = new BasicMemoryVectorDatabase();
// 添加带元数据的文本
vdb.AddText("SharpVector 是一个轻量级向量数据库", metadata: "产品介绍");
vdb.AddText("RAG 是检索增强生成的缩写", metadata: "术语解释");
// 语义搜索
var results = vdb.Search("什么是向量数据库");
// results 包含相似文本和元数据
如需接入 OpenAI 嵌入,只需替换包并配置 API Key:
// dotnet add package Build5Nines.SharpVector.OpenAI
var vdb = new OpenAIMemoryVectorDatabase("your-api-key");
整个接入过程不超过 10 行代码,对比引入外部向量数据库服务(需要配置连接字符串、认证、SDK 初始化)而言,门槛显著降低。

图2:SharpVector 核心架构 — 从嵌入生成到向量存储的全链路
| 层次 | 模块 | 说明 |
|---|---|---|
| 嵌入层 | Embeddings/ | IEmbeddingsGenerator、IBatchEmbeddingsGenerator 接口,OpenAI/Ollama/本地实现 |
| 预处理层 | Preprocessing/ | ITextPreprocessor,可配置文本规范化流水线 |
| 向量化层 | Vectorization/ | IVectorizer,BagOfWords 向量化器 |
| 比对层 | VectorCompare/ | IVectorComparer,余弦相似度/欧氏距离 |
| 存储层 | VectorStore/ | 内存字典存储(可选磁盘持久化) |
| 词汇层 | Vocabulary/ | 词汇表管理 |
| 数据库层 | *VectorDatabase*.cs | IVectorDatabase 核心接口,多种数据库实现 |
项目使用 .NET 8+ 构建,全异步 API(Async 方法),遵循 C# 编码规范,null 值处理完善(支持 nullable reference types),代码结构清晰。AGENTS.md 显示项目有完整测试套件(SharpVectorTest 项目)和 GitHub Actions CI/CD 流程。CHANGELOG v2.2.1 版本集中修复了磁盘持久化边界情况的 bug,测试覆盖在逐步扩展。
SharpVector 并非银弹,在选型时需要明确其局限性:
1. 全内存存储的天花板:默认的 BasicMemoryVectorDatabase 将所有向量存在内存中,适合中小规模数据集(几万到几十万条文本)。对于百万级以上的向量数据,内存占用会成为瓶颈,此时需要考虑磁盘索引方案或外部向量数据库。
2. 分布式场景不适用:SharpVector 是单进程内的向量数据库,不支持集群、多副本、分布式搜索。如果需要横向扩展能力,需要引入 Qdrant、Milvus 等专门的向量数据库。
3. 不支持 ANN 索引优化:当前版本的搜索实现是朴素的暴力比对(brute-force),没有使用 HNSW、FAISS 等近似最近邻优化算法。在向量维度高、数据量大的场景下,搜索延迟会线性增长。
4. 纯类库无部署体验:项目定位是 .NET 库而非服务,没有 Web UI、没有 Docker 支持,无法通过一键部署快速体验。对于非 .NET 开发者而言几乎没有上手路径。
在 RAG 已成为 AI 应用标配的当下,向量数据库市场被 Qdrant、Pinecone、Weaviate 等新锐云服务主导,但 .NET 生态长期缺乏轻量级本地选择。SharpVector 的出现填补了这一空白:它不是要替代专业向量数据库,而是为 .NET 开发者提供了一个零门槛的入门工具和本地开发/测试环境。
这种「本地优先」的设计思路与 Ollama 在 LLM 推理领域掀起的本地化浪潮一脉相承。当开发者用 Ollama 在本地跑模型、用 SharpVector 做本地向量索引,整套 RAG 流程可以在完全离线的笔记本上运行——这对数据隐私敏感的企业场景(如医疗、金融、政府内部系统)极具价值。
作者 Chris Pietschmann 在微软 Azure 官方博客中被引用(Azure App Service 团队的技术文章推荐 SharpVector 作为 .NET RAG 实现方案),这标志着 SharpVector 已经进入微软官方认可的技术选型视野,对于一个 141 星的小型开源项目而言,这是相当有分量的社区背书。