简体中文 | English |
SimpleRAG是基于WPF与Semantic Kernel实现的一个简单的RAG应用,可用于学习与理解如何使用Semantic Kernel构建RAG应用。
支持所有兼容OpenAI格式的大语言模型:
一个私有文档如下所示:
会议主题:《如何使用C#提升工作效率》
参会人员:张三、李四、王五
时间:2024.9.26 14:00-16:00
会议内容:
1. 自动化日常任务
许多日常任务可以自动化,从而节省时间和精力。例如,如果你需要定期处理大量数据,可以使用C#编写脚本来自动化数据导入、清理和分析过程。
2. 构建自定义工具
C#可以用来构建各种自定义工具,以满足特定需求。
3. 集成现有系统
C#可以轻松集成现有的系统和API,从而提高工作效率。
4. 开发插件和扩展
许多应用程序支持插件和扩展,C#可以用来开发这些插件,以增强现有应用程序的功能。
5. 优化现有代码
C#提供了丰富的库和框架,可以帮助你优化现有代码,提高性能和可维护性。
支持根据文件内容对话:
支持所有兼容OpenAI格式的嵌入模型:
简单的RAG回答效果:
对比不使用RAG的回答:
测试Function Calling回答效果:
对比一下不使用FunctionCalling的效果:
经过测试这种方法可用的LLM:
平台 | 可用模型 |
---|---|
硅基流动 | Llama-3.1-405/70/8B、Llama-3-70/8B-Instruct、DeepSeek-V2-Chat、deepseek-llm-67b-chat、Qwen2-72/57/7/1.5B-Instruct、Qwen2-57B-A14B-Instruct、Qwen1.5-110/32/14B-Chat、Qwen2-Math-72B-Instruct、Yi-1.5-34/9/6B-Chat-16K、internlm2_5-20/7b-chat |
讯飞星火 | Spark Lite、Spark Pro-128K、Spark Max、Spark4.0 Ultra |
零一万物 | yi-large、yi-medium、yi-spark、yi-large-rag、yi-large-fc、yi-large-turbo |
月之暗面 | moonshot-v1-8k、moonshot-v1-32k、moonshot-v1-128k |
智谱AI | glm-4-0520、glm-4、glm-4-air、glm-4-airx、glm-4-flash、glm-4v、glm-3-turbo |
DeepSeek | deepseek-chat、deepseek-coder |
阶跃星辰 | step-1-8k、step-1-32k、step-1-128k、step-2-16k-nightly、step-1-flash |
Minimax | abab6.5s-chat、abab5.5-chat |
阿里云百炼 | qwen-max、qwen2-math-72b-instruct、qwen-max-0428、qwen2-72b-instruct、qwen2-57b-a14b-instruct、qwen2-7b-instruct |
以上不一定完备,还有一些模型没测,欢迎大家继续补充。
来到SimpleRAG的GitHub参考,注意到这里有个Releases:
点击SimpleRAG-v0.0.1,有两个压缩包,一个依赖net8.0-windows框架,一个独立:
依赖框架的包会小一些,独立的包会大一些,如果你的电脑已经装了net8.0-windows框架可以选择依赖框架的包,考虑到可能大部分人不一定装了net8.0-windows框架,我以独立的包做演示,点击压缩包,就在下载了:
解压该压缩包:
打开appsettings.json文件:
appsettings.json文件如下所示:
默认是使用SiliconCloud的api,只需填入你的SiliconCloud的Api Key即可,完成后,如下所示:
现在点击SimpleRAG.exe即可运行程序:
程序运行之后,如下所示:
先通过AI聊天测试配置是否成功:
配置已经成功。
现在来测试一下嵌入。
先拿一个简单的文本进行测试:
小n最喜欢吃的水果是西瓜。
嵌入成功:
这个Demo程序为了方便存储文本向量使用的是Sqlite数据库,在这里可以看到:
如果你有数据库管理软件的话,打开该数据库,会发现文本已经以向量的形式存入Sqlite数据库中:
现在开始测试RAG回答效果:
对比不使用RAG的回答效果:
可以发现大语言模型根本不知道我们想问的私有数据的事情,出现了幻觉。
以上就成功使用SiliconCloud体验了SimpleRAG。
实现的原理,在我的这篇文章中有进行介绍,感兴趣的朋友可以看看:
SemanticKernel/C#:检索增强生成(RAG)简易实践
git clone到本地,打开appsettings.example.json文件:
如下所示:
ChatAI用于配置对话模型,Embedding用于配置嵌入模型,TextChunker用于配置文档切片大小。
还是以SiliconCloud为例,只需填入你的api key 并将文件名改为appsettings.json,或者新建一个appsettings.json即可。
配置完成如下所示:
IDE:VS2022
.NET 版本:.NET 8
打开解决方案,项目结构如下所示:
运行程序:
测试AI聊天:
测试嵌入:
使用的是Sqlite保存向量,可以在Debug文件夹下找到这个数据库:
打开该数据库,如下所示:
测试RAG回答:
如果对您有所帮助,点个star✨,就是最大的支持😊。
如果您看了这个指南,还是遇到了问题,欢迎通过公众号联系我: