1、背景
最近我们常常在在做的事情就是整理deepseek的开发Demo,因此也写了几个例子,但是这个有个缺点,不是很方便的添加本地知识库。当然也可以安装完Ollama后,再安装一个anything或其他的平台实现,但是总是感觉没有安全感,不知道它内部的具体内容。
前几日,关注的公众号发了一篇关于NET9中,直接推出了AI的项目模板,可以创建一个聊天对话框,并能能够使用自己的数据实现RAG的功能。这里额外说一下,RAG就是deepseek进行回答前,先去你提供的数据里找,根据你提供的数据,结合deepseek自己的模型,生成更加符合的回答。因此RAG就叫检索生成增强。
2、具体实现
2.1 安装AI的项目模板
使用管理员的权限,运行cmd,执行以下语句:
dotnet new install Microsoft.Extensions.AI.Templates
安装如下图所示
2.2 打开VS2022,选择AI模板
进入VS2022,就能在新建项目中选择AI模板了。
在新建项目中,选择Ollama,因为可以使用之前的Ollama方案
2.3 下载模型
安装Ollama,大家可以到网上一搜即可,非常简单,但模型及句子嵌入模型,需要下载。
分别运行如下的命令行:
ollama pull llama3.2
ollama pull all-minilm
如下图所示
这里,AI项目模板使用了llama3.2:3B
和all-MiniLM-L6-v2
实现具体的聊天功能。
2.4 替换项目中的数据
将项目中的数据(pdf文件),替换为自己的PDF文件
本人替换了2个PDF文件,内容非常简单。
第一个pdf的内容是:北京清华长庚医院成立于2014年11月28日,是一家市属公立医院。
第二个pdf的内容是:北京清华长庚医院位于北京市北5.5环的天通苑地区。
3、实现效果
在检索框中输入:请简单介绍一下北京清华长庚医院。回复内容如下:
4、注意事项
4.1 不支持deepseek
在Program.cs文件中可以设置大模型(前提是在ollma中已安装)
//模型的设置
IChatClient chatClient = new OllamaApiClient(new Uri("http://localhost:11434"),
"llama3.2:3b");
IEmbeddingGenerator<string, Embedding<float>> embeddingGenerator = new OllamaApiClient(new Uri("http://localhost:11434"),
"all-minilm:l6-v2");
但目前不支持deepseek
。后续可能会添加。