Ollama系列04:进阶篇-搭建私有的知识库和问答系统—cherryStudio版

news/2025/3/19 20:49:11/文章来源:https://www.cnblogs.com/youring2/p/18774685

本文是Ollama系列教程的第4篇,在前面的3篇内容中,我们分享了如何在本地安装ollama、运行deepseek等大模型、以及如何在chatbox和cherryStudio中使用本地ollama中的大模型,我们创建了私有的AI对话框和智能体。

Ollama系列教程目录(持续更新中):

  1. 轻松3步本地部署deepseek
  2. 快速上手搭建私有的AI对话框和智能体—chatbox版
  3. 快速上手搭建私有的AI对话框和智能体—cherryStudio

在本篇内容中,我们将分享如何创建和使用知识库,让AI更懂你。

为什么需要AI知识库

知乎版

AI知识库,作为人工智能技术与传统知识库概念的融合,是指利用人工智能算法和技术构建、管理和维护的信息存储系统。它不仅包含了大量的结构化、半结构化和非结构化数据,还具备智能检索、推理分析、自我学习和优化等高级功能。AI知识库通过模拟人类的认知过程,实现了对知识的有效组织和高效利用,为各种应用场景提供了强大的支持。

人话版

知识库是我们的私有数据(你的财务状态、体检报告等),为了让AI生成更准确、更符合我们需求的内容,需要在提问时将内容告诉AI

知识库是如何工作的?

知识库工作流程图(来源于CherryStudio Doc):

在上面的流程图里,我们可以看到知识库工作的步骤:

  1. 用户提问时,AI工具先查询知识库里已有的内容
  2. 将查询到的内容和用户的提问发送给大模型
  3. 大模型根据提供的内容生成答案

使用知识库增强检索来生成答案的技术有一个专门的名词RAG,这里面涉及到几个概念,如果你感兴趣可以继续深挖(由于本篇内容针对的是入门教程,不做太多概念性的讲解,后面有机会了再专门介绍)

构建私有知识库

接下来我们通过cherryStudio来构建私有的知识库。

首先打开cherryStudio,点击左侧的知识库:

获取嵌入模型

在构建知识库的过程中,需要选择要使用的嵌入模型。嵌入模型的主要功能是将用户的文本、图片等内容生成向量数据,用作向量搜索的。

在ollama中有很多嵌入模型供我们选择使用。我这里使用的是bge-m3,你可以通过下面的指令获取:

ollama pull bge-m3

注意:嵌入模型保存后不允许修改

添加知识内容

为了进行演示,我们将本系列教程的前三篇放入知识库中:

然后创建一个新的对话,在对话中选择创建的知识库:

验证一下效果(效果并不理想):

话外音

感觉deepseek又开始一本正经的胡说八道了,这可能和我们选择的模型有关,我们当前使用的是1.5b的模型,如果你的硬件允许,可以尝试下载更大的模型进行测试

我换了一个deepseek-r1:7b的模型重新验证了一下,效果比上面的要好一些:

影响知识库的因素

通过上面的例子我们可以看到,当切换了模型之后,生成内容的准确性有所提高。这说明我们需要尝试不同的模型,来达到自己满意的效果。

通常来说影响知识库输出质量的因素有:

  • 文档的质量
  • 嵌入模型的能力
  • 向量数据库的检索
  • 文档相关性排序能力
  • 系统Prompt质量
  • 大模型生成能力

当我们在进行实践时,切记一定要先进行验证,验证满意后再进行大规模的实施。

总结

本文分享了在cherryStudio中使用本地ollama提供的模型来构建私有知识库的功能,在文章的末尾我们讨论了影响知识库输出质量的一些因素,在接下来的章节中,我们将讨论如何优化知识库输出质量,让AI给出我们更好的答案。

如果你对这些内容感兴趣,关注[拓荒者IT]公众号,获取最新的文章内容。

👉 持续分享AI工具,AI应用场景,AI学习资源 ❤️

📢 创作不易,如果这篇文章对你有帮助,欢迎❤️关注、👍点赞支持,并️转发给那些需要的朋友!关注 [拓荒者IT] 获取更多精彩内容!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/901700.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

halcon 入门教程(四) 一维码识别,二维码识别,OCR识别

原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/18781763有兴趣可以多看其他的halcon教程halcon 学习教程目录OK,本篇讲一些一维码,二维码,OCR识别的相关入门知识,不会讲的太深,因为如果你不是专门做这种设备的公司基本不会深入的去研究分析,但是学会基础…

微服务跨模块调用接口如何传递当前用户信息

我们要在 api模块下 新增一个配置类 FeignInterceptorConfig 该类的作用是 跨模块调用接口时拦截然后给用户信息添加进去 具体实现方式 注意点是需要手动配置一下 通过Spring Boot的自动配置机制,将com.hmall.api.config.FeignInterceptorConfig类注册为自动配置类。具体作用…

听见未来,Audio+AI | GAS 2025完整议程揭晓!

听见未来,Audio+AI 2025中国国际音频产业大会(GAS) 将于 3月26-27日 在上海张江科学会堂盛大举办!大会主题聚焦聚焦“听见未来,Audio+AI”,两场主旨论坛、八场专题论坛。内容覆盖电子产业热点领域及方向,分别包括音频+AI、智能车载 音频、线上智能交互、智能耳机与可穿戴…

C++容器

容器的分类分为顺序容器(sequence) 关联容器(asscoiative) 无序容器(unordered) 顺序容器Array、vector、deque、list 关联容器有(mul)set和(mul)map,set和map的区别在于,set的key就是value,而map的key和value是分开的,set和map内部都是通过红黑树实现 无序容器主要为…

.NET Core奇技淫巧之WinForm使用Python.NET并打包

前言 之前整了一个GZY.EFCoreCompare 的库,可以用做对比实体与数据库结构.感兴趣可以去看看,地址:GZY.EFCoreCompare 但是只能导出execl表格. 后来大佬用Python写了个类,可以将execl表格直接生成SQL语句. 但是需要通过开发工具 或者python环境去运行. 对现场的非技术人员很不友…

MCP Server 开发实战指南(Python版)

原文链接:https://www.ryanzoe.top/ai/mcp-server-%e5%bc%80%e5%8f%91%e6%95%99%e7%a8%8b/ MCP 官方文档https://modelcontextprotocol.io/introduction各个 clients 对 MCP 的支持情况https://modelcontextprotocol.io/clientsMCP Python SDK:MCP Client 和 Server 官方 SDK…

Amphion 推出合成音频鉴别系统 Auditi;Gemini 引入 NotebookLM 功能,生成文档、网页音频摘要丨日报

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 技术 」、「有亮点的 产品 」、「有思考的 文章 」、「有态度的 观点 」、「有看点的 活动 」,但内容仅代表编辑…

洛谷题单指南-图论之树-P3398 仓鼠找 sugar

原题链接:https://www.luogu.com.cn/problem/P3398 题意解读:一颗n个节点的树,m个判断,判断树上两条路径是否相交,相交输出Y,否则输出N 解题思路:此题需要画一棵多叉树来辅助判断多次观察相交的路径,可以得出一个关键性质: 两条路径相交,必然有一条路径的LCA在另一条…

lg 主页

\(\Large\text{My Blog}\)中学:济南天山高级实验中学 关于我的学校究极久远预告:寒假游记滚滚长江东逝水,浪花淘尽英雄 是非成败转头空 青山依旧在,几度夕阳红 白发渔樵江渚上,观看秋月春风 一壶浊酒喜相逢 古今多少事,都付笑谈中街喧闹,人过往 且记曾相识,莫为少年留 …

day:25 selenium之介绍和环境配置

一、selenium介绍 selenium是一个第三方库,python有很多库; 1、什么是ui自动化? 通过模拟手工操作用户ui页面的方式,用代码去实现自动化操作和验证的行为。 2、ui自动化的优点? (1)解决重复性的功能测试和验证 (2)减少测试人员在回归测试时用例漏测和验证点的漏测 (3…

[算法学习记录] [更新中]最短路

顾名思义,最短路算法,就是求一个图中所有的点距某一个点的最短距离,常见的有Dijkstra算法、Bellman-Ford算法、Johnson算法与Floyd算法。 Dijkstra Dijistra算法实际上是一种由贪心与动态规划结合的算法,我们每次都贪心地选择到某个点的最近距离,又动态地更新着距离数组d的…

day6-static静态变量

静态变量/静态方法 被static修饰 工具类静态方法不能调用非静态。 非静态可以访问所有。 继承一个子类只能继承一个父类,可以多层继承,最大的父类为Objectcoding 练习:更好的方法:双指针不浪费空间