首页 > 极客资料 博客日记

SimpleRAG-v1.0.3:增加文件对话功能

2024-09-26 15:30:03极客资料围观22

这篇文章介绍了SimpleRAG-v1.0.3:增加文件对话功能,分享给大家做个参考,收藏极客之家收获更多编程知识

Kimi上有一个功能,就是增加文件之后对话,比如我有如下一个私有文档:

会议主题:《如何使用C#提升工作效率》
参会人员:张三、李四、王五
时间:2024.9.26 14:00-16:00
会议内容:
1. 自动化日常任务
许多日常任务可以自动化,从而节省时间和精力。例如,如果你需要定期处理大量数据,可以使用C#编写脚本来自动化数据导入、清理和分析过程。
2. 构建自定义工具
C#可以用来构建各种自定义工具,以满足特定需求。
3. 集成现有系统
C#可以轻松集成现有的系统和API,从而提高工作效率。
4. 开发插件和扩展
许多应用程序支持插件和扩展,C#可以用来开发这些插件,以增强现有应用程序的功能。
5. 优化现有代码
C#提供了丰富的库和框架,可以帮助你优化现有代码,提高性能和可维护性。

我上传这个文档之后,提问文档中的内容,如下所示:

image-20240926121012250

image-20240926121043360

image-20240926121113883

image-20240926121155095

那么我们自己该如何实现这个功能呢?

我们之前接触过RAG,那可以用来应对文档内容超出模型上下文的情况,但是很多时候,我们只是上传一份简单的文档,文档内容并不多,而且也不需要进行存储,那么这时候,就可以直接读文件内容,不用RAG。

以下是自己实现的效果:

image-20240926121558886

image-20240926121806875

image-20240926121839435

image-20240926121915911

也实现了同样的效果。

实现要点

 public async IAsyncEnumerable<string> GetAIResponse3(string question,string filePath)
 {
     string fileContent = File.ReadAllText(filePath);
     string skPrompt = """
                        获取到的文件内容:{{$FileContent}}。
                        根据获取到的信息回答问题:{{$Question}}。
                        如果文件内容中没有提到,直接回答不知道。
                     """;
     await foreach (var str in _kernel.InvokePromptStreamingAsync(skPrompt, new() { ["FileContent"] = fileContent, ["Question"] = question }))
     {
         yield return str.ToString();
     }
 }

使用这个简单的prompt即可实现。

快速体验

我在github上发布了依赖框架与不依赖框架的版本。解压之后在appsettings.json文件中填入你的api key即可开始体验。

image-20240926144248293

SimpleRAG地址:https://github.com/Ming-jiayou/SimpleRAG


版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐

标签云