C# 开发者玩转大模型:.NET 对接本地 Ollama+Qdrant 向量库,手把手实现 RAG 智能知识库项目
- C#
- -401分钟前
- 3热度
- 0评论
来源: C# 开发者玩转大模型:.NET 对接本地 Ollama+Qdrant 向量库,手把手实现 RAG 智能知识库项目
最近半年,RAG(检索增强生成)彻底火了。但很多 C# 开发者一看教程全是 Python 栈,心里总觉得差点意思 —— 难道我们.NET 生态就不能优雅地搞本地大模型 + 向量知识库?
当然能,而且体验丝毫不差。
一、为什么选择 Ollama + Qdrant + .NET 技术栈
先给大家算笔账:现在企业做内部知识库,最担心的就是数据泄露和调用成本。把内部文档喂给云端大模型,合规风险高;按 Token 计费,量大了成本根本扛不住。
本地部署 RAG 就是最优解,而我们这套组合有三个核心优势:
- Ollama
:一键部署本地大模型,支持 Llama 3、Qwen、DeepSeek 等主流开源模型,提供标准 OpenAI 兼容 API,.NET 接入零门槛 - Qdrant
:高性能向量数据库,Rust 编写,速度快、资源占用低,支持纯本地部署,有官方.NET SDK - .NET + Semantic Kernel
:微软官方大模型编排框架,原生支持 Ollama 和向量存储,强类型编程,工程化能力远超 Python 脚本
二、前置环境准备(5 分钟搞定)
1. 安装 Ollama
官网下载:https://ollama.com/安装完成后,拉取一个中文效果不错的模型:
ollama pull qwen2:7b
ollama run qwen2:7b
默认端口 11434,API 地址:http://localhost:11434
2. 安装 Qdrant 向量库
推荐用 Docker 一键启动:
docker run -p 6333:6333 qdrant/qdrant
启动后访问 http://localhost:6333/dashboard 能看到控制台就是成功了。
3. 开发环境
-
.NET 8 / .NET 9 SDK -
Visual Studio 2022 或 Rider -
基础的 C# 异步编程基础
三、项目架构总览
我们的 RAG 系统分为两大核心流程:
1. 文档入库流程(离线)
读取文档 → 文本切分 → 调用 Embedding 模型生成向量 → 写入 Qdrant 向量库
2. 问答检索流程(在线)
用户提问 → 生成问题向量 → Qdrant 相似度检索 → 召回相关文档片段 → 拼接 Prompt → 送入大模型生成回答
用一张图理解就是:用户问题 → 向量化 → 向量检索 → 增强Prompt → LLM生成 → 最终回答
四、手把手代码实现
第一步:创建项目并安装依赖
新建一个 ASP.NET Core Web API 项目,命名为 RagKnowledgeBase,然后安装以下 NuGet 包:
OllamaSharp 或者直接 HttpClient 调用,原理完全一致。第二步:配置服务注册
在 Program.cs 中注册 Semantic Kernel、Ollama 和 Qdrant:
第三步:实现文档入库接口
新建 DocumentController.cs,实现文档切分和向量化入库:
第四步:实现 RAG 问答接口
这是最核心的一步,实现「检索 + 生成」的完整 RAG 链路:
-
先调用 /api/document/ingest接口,上传一篇技术文档的文本内容 -
再调用 /api/document/query接口,输入你的问题 -
大模型会基于检索到的文档片段给出精准回答
你可以试试上传自己的项目文档、API 手册、业务规范,然后用自然语言提问,体验一下 "秒搜全文 + 智能总结" 的爽感。
六、进阶优化方向
这个基础版跑通之后,你还可以沿着这几个方向迭代:
- 支持更多格式
:接入 PDF、Word、Excel 解析,用 iTextSharp 或 NPOI 提取文本 - 重排序优化
:加入 BGE-Reranker 等重排模型,提升检索准确率 - 对话记忆
:实现多轮对话上下文管理,支持追问 - 前端界面
:搭一个 Blazor 或 Vue 的聊天界面,做成完整产品 - 批量导入
:做一个后台任务,批量扫描文件夹自动入库 - 混合检索
:向量检索 + 关键词检索结合,解决长尾问题
关注公众号【WPF开发上位机专家】,后台回复关键词【RAG】即可直接获取全部源码包。