SqlDatabaseVectorSearch
在 SQL Server 中直接做 RAG,无需额外向量数据库的 .NET AI 应用
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
在 SQL Server 中直接做 RAG,无需额外向量数据库的 .NET AI 应用
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
企业里有大量内部文档——产品手册、技术文档、合同条款——全都存在 SQL Server 或 Azure SQL Database 里。你想用 AI 来回答员工的问题,却不想额外引入一套 Pinecone、ChromaDB 或 Qdrant 这样的专门向量数据库,觉得"系统已经这么重了,为什么还要再加一层"?
SqlDatabaseVectorSearch 正是解决这个痛点的项目:它让 SQL Server 和 Azure SQL Database 原生支持向量搜索,把 RAG(检索增强生成)直接跑在你的数据库里,不需要任何外部向量数据库。
大模型(LLM)虽然知识渊博,但它对企业私有数据"一无所知"。RAG(Retrieval Augmented Generation)通过先检索相关文档、再让大模型基于检索结果生成答案,让大模型也能回答企业私有问题。
传统的 RAG 方案通常需要两套系统:业务数据库(MySQL、PostgreSQL、SQL Server)存业务数据,向量数据库(ChromaDB、Milvus、Pinecone)存文档向量。这种架构的缺点:
2024 年开始,主流关系数据库纷纷加入向量支持。PostgreSQL 有 pgvector,Azure SQL Database 和 SQL Server 2025 也引入了原生 VECTOR 类型。这个项目正是踩在这个技术趋势上。
项目作者 marcominerva 是 .NET 生态的活跃贡献者,专注于将微软新技术落地为可用项目。其 GitHub 有多个围绕 Azure、AI、.NET 的开源项目。
项目支持从 PDF、DOCX、TXT、MD 四种常见格式的文档中提取文本,然后按语义分块(Text Chunking),调用 Azure OpenAI 的 Embedding 模型生成向量,最后存入 SQL Server 或 Azure SQL Database 的 VECTOR 字段中。
整个流程由 Microsoft Agent Framework 的 EmbeddingWorkflow 自动化编排,开发者只需要调用一个 API 上传文件即可。
当用户提出问题时,流程如下:
VECTOR 字段中执行相似度搜索,找到最相关的文档片段💡 亮点:答案中的引用不是 JSON 里的额外字段,而是直接嵌入 Markdown 文本中,读起来更自然。
| 方式 | 说明 |
|---|---|
| Blazor Web App | 完整的图形界面,支持文档管理、聊天、对话重置、流式响应 |
| Minimal API | REST 接口,POST /api/documents 上传文档,POST /api/ask 或 /api/ask-streaming 提问 |
| 流式响应 | /api/ask-streaming 支持服务端推送(Server-Sent Events),答案一个字一个字蹦出来 |
| Token 统计 | 每次回答会显示问题重构和最终回答分别消耗了多少 Token |
每个对话有一个 conversationId,系统会记录完整的对话历史。下次追问时,Reformulation Agent 会参考历史对话,将"它"、"那个"这类指代词还原为完整问题,提升检索准确性。
项目基于 .NET 10 + Blazor Server,整体架构分层清晰:
用户请求
│
├─ Blazor Web App(交互界面)
│ └─ Components/(UI 组件)
│
└─ Minimal API(程序接口)
└─ Endpoints/(路由处理)
Service 层(业务逻辑)
├─ EmbeddingWorkflow → 文档向量化
├─ ReformulationAgent → 问题重构
└─ RagAgent → RAG 答案生成
Data 层(数据持久化)
├─ ApplicationDbContext(EF Core)
└─ SQL Server / Azure SQL Database(原生 VECTOR 类型)
AI 编排层
└─ Microsoft Agent Framework
├─ Semantic Kernel(底层编排)
└─ Azure OpenAI(GPT + Embedding)
关键依赖:
Microsoft.AI.AgentFramework — 微软 Agent 框架,编排多 Agent 工作流Microsoft.SemanticKernel.Connectors.AzureSql — Azure SQL 向量存储连接器Microsoft.EntityFrameworkCore.SqlServer — EF Core 数据库访问Microsoft.ML.Tokenizers — Token 计数(API 费用估算)Markdig — Markdown 渲染代码结构亮点:
ContentDecoders/ — 针对 PDF/DOCX/TXT/MD 各格式的专用解码器,体现良好的开闭原则TextChunkers/ — 文本分块策略,可扩展支持不同分块算法Workflows/ — Agent Framework 工作流定义,与业务逻辑解耦Validations/ — 请求验证层,保证 API 输入安全好消息:没有 Docker 文件需要构建,没有 Kubernetes manifest,没有 GPU 要求。
坏消息:必须同时搞定以下三个组件才能跑起来:
| 依赖 | 说明 | 获取难度 |
|---|---|---|
| .NET 10 SDK | 项目本体运行环境 | ⭐ 简单,官网下载 |
| Azure SQL Database 或 SQL Server 2025 | 需要 VECTOR 类型支持 | ⭐⭐⭐ 需 Azure 订阅 或 SQL Server 2025 |
| Azure OpenAI API | Embedding 和 GPT 模型调用 | ⭐⭐⭐ 需申请 Azure OpenAI 配额 |
# 1. 克隆项目
git clone https://github.com/marcominerva/SqlDatabaseVectorSearch.git
# 2. 配置连接字符串和 API Key
# 编辑 appsettings.json,填入:
# - Azure SQL Database 连接字符串
# - Azure OpenAI 的 endpoint、api-key、deployment 名称
# 3. 运行
dotnet run --project SqlDatabaseVectorSearch/SqlDatabaseVectorSearch.csproj
# 4. 浏览器打开 https://localhost:7025
⚠️ 注意事项:
ModelId用于 Tokenizer 计数,必须是 GPT/Embedding 的标准模型名(如gpt-4o、text-embedding-3-small),与 Azure 部署名称不同text-embedding-3-large维度上限 1998,需在配置中手动设置Dimensions
项目专为 Azure 生态设计,不支持本地部署 Ollama、vLLM 或其他本地模型。如果你用的是 AWS 或 GCP,或者想完全离线运行,这个项目就不适合。
原生 VECTOR 类型仅在 Azure SQL Database 和 SQL Server 2025(及以后版本)中可用。如果企业还在用 SQL Server 2019/2022,需要升级数据库或迁移到 Azure SQL。
将向量存在关系数据库而非专门向量库(如 Qdrant、Weaviate),在**超大规模向量(百万级以上)**场景下,检索性能可能不如专用向量数据库。但在万级到十万级向量规模下,SQL Server 的表现完全够用,且统一管理降低了运维复杂度。
项目目前没有隔离机制,多用户场景下文档和对话数据混在一起,企业级应用需要自行扩展。
这个项目代表了一个重要趋势:用一套系统搞定 RAG 全流程。
过去一年的 RAG 生态发展轨迹:
项目 star 数目前 144,属于小而美的技术实现类项目,但其解决的实际问题(在现有 SQL Server 中直接做向量搜索)非常有代表性。随着 SQL Server 2025 普及,这类方案会进入更多企业的技术选型视野。
如果你已经在用 SQL Server 或 Azure SQL Database,且需要给企业知识库加上 AI 问答能力,这个项目值得一试。
项目图标:

Web App 界面截图:
