Deepseek构建本地知识库

一.本地部署Deepseek

Ollama 介绍

目前市面上主流的,成本最低的部署本地大模型的方法就是通过 Ollama 了:

Ollama 是一个开源的本地大语言模型运行框架,专为在本地机器上便捷部署和运行大型语言模型(LLM)而设计。

核心功能:

  • 简化部署:Ollama 简化了在 Docker 容器中部署大型语言模型的过程,即使是非专业用户也能轻松管理和运行这些复杂的模型。
  • 模型管理:支持多种流行的大型语言模型,如 Llama、Falcon 等,并提供丰富的命令行工具和用户友好的 WebUI 界面。
  • 模型定制:用户可以通过 Modelfile 文件自定义模型参数和行为,实现模型的个性化设置。

技术优势:

  • 轻量级与可扩展:Ollama 保持较小的资源占用,同时具备良好的可扩展性,允许用户根据硬件条件和项目需求进行优化。
  • API 支持:提供简洁的 API 接口,方便开发者集成到各种应用程序中。
  • 兼容 OpenAI 接口:Ollama 支持 OpenAI 的 API 标准,可以作为 OpenAI 的私有化部署方案。

使用场景:

  • 本地开发:开发者可以在本地环境中快速部署和测试大型语言模型,无需依赖云端服务。
  • 数据隐私保护:用户可以在本地运行模型,确保数据不离开本地设备,从而提高数据处理的隐私性和安全性。
  • 多平台支持:Ollama 支持 macOS、Windows、Linux 以及 Docker 容器,具有广泛的适用性。

Ollama 的目标是让大型语言模型的使用更加简单、高效和灵活,无论是对于开发者还是终端用户。

Ollama 安装和使用

Ollama 的下载和安装非常简单,尤其是对于 MAC 用户:

打开浏览器,访问 Ollama 官方网站:https://ollama.com/download,下载适的安装包。

下载完成后,直接双击安装包并按照提示完成安装。

安装完成后,我们直接打开命令行执行 ollama --version 判断是否安装成功:

在这里插入图片描述
ollama 会在我们本地服务监听 11434 端口:

在这里插入图片描述
然后我们可以直接使用 ollama run 模型名称 来下载和运行我们想要的模型。

Ollama 支持的模型

ollama 支持的模型列表,我们可以到 https://ollama.com/search 查看:
在这里插入图片描述
另外 ollama 还支持下面这些主流模型:在模型详情页我们可以看到目前支持的模型的不同版本(具体的参数含义我们在上见介绍过了),包括每个模型展用的磁盘大小:注意这里不是说你磁盘有这么大就够了,满血版(671b)虽然只需要 404GB 的磁盘空间,对内存、显卡、CPU 等其他硬件也有极高要求。

我试了下,我的设备比较垃圾,最多只能带动7b、14b 这些。

然后,直接在控制台使用 ollama run 模型名称 来下载我们想要的模型就可以了:

在这里插入图片描述

下载完成后可以直接在命令行运行:

在这里插入图片描述
目前我们已经拥有了一个基础的本地模型,但是这种交互方式太不友好了,下面我们通过一些工具来提升我们本地模型的使用体验。

二.Chatbox客户端

Chatbox客户端 + Ollama - 交互

目前市面上有很多可以在本地与 AI 模型交互的客户端,我认为做的较好的还是 Chatbox

Chatbox 的安装和使用

Chatbox 是一款开源的 AI 客户端,专为与各种大型语言模型进行交互而设计。它支持包括 Ollama 在内的多种主流模型的 API 接入,无论是本地部署的模型,还是其他服务提供商的模型,都能轻松连接。此外,Chatbox 提供了简洁直观的图形界面,让用户无需复杂的命令行操作,就能与模型进行流畅的对话。它支持了目前市面上所有主流模型,并且兼容多个平台,交互体验也比较好,目前在 Github 上已经有接近 29K Star

使用方式也比较简单,官方(https://chatboxai.app/zh)直接下载适合你系统的客户端:

在这里插入图片描述

下载后打开客户端,模型提供方选择 Ollama API,API 域名就是我们上面提到了本地 11434 端口的服务,另外它可以自动识别你的电脑上已经通过 Ollama 安装的模型:

在这里插入图片描述
在这里插入图片描述
然后就可以在聊天窗选择到你的本地模型了:
在这里插入图片描述

三.Anything LLM 客户端-打通本地知识库

RAG 架构介绍

RAG(Retrieval-Augmented Generation,检索增强生成)是一种结合信息检索与生成模型的人工智能技术,旨在通过检索外部知识库中的信息来增强语言模型的生成能力。

有点抽象,简单来说就是一种让 AI 更聪明回答问题的方法,它分为三个步骤:找资料、整理资料和回答问题。首先,它会在一个知识库(就像一个装满资料的书架)里找到和问题相关的部分;然后,把找到的内容整理成简单易懂的形式;最后,用整理好的内容生成一个清晰准确的回答。这种方法让机器的回答更准确、更有依据,还能随时更新知识库,用最新的信息来回答问题。
在这里插入图片描述

在这个架构图里,主要有三个概念:LLM(Large Language Model,大语言模型)、Embedding(嵌入)和 Vector Database(向量数据库),这三个概念大家最好了解一下,因为后面工具的使用就是围绕这三个概念来的,LLM 就不用多说了,主要看另外两个概念:

  • Embedding(嵌入):通过一个专门的模型来把你上传的文本、表格数据等本地文件处理成机器能理解的 “数字代码”。相似的文本在这个向量空间中距离会更近。比如,“苹果”和“水果”这两个词的嵌入向量就会比较接近,而“苹果”和“汽车”就会离得很远。
  • Vector Database(向量数据库):用来存储上一步处理好的 “数字代码” 的数据库,它能够高效地存储和检索这些向量。当你有一个问题时,它会把问题转换成向量,然后在这个仓库里快速找到和问题最相关的向量。比如,你问“苹果是什么?”它会在这个仓库里找到和“苹果”相关的向量,比如“水果”“红色”“圆形”等。

那这三个概念的协作就组成了 RAG 架构:

  • 检索(Retrieve):当用户提出一个问题时,首先通过 Embedding 模型将问题转换成向量,然后在 Vector Database 中检索与问题向量最相似的文档向量。这一步就像是在图书馆里找到和问题最相关的书籍。
  • 增强(Augment):检索到的文档向量会被提取出来,作为上下文信息,和原始问题一起输入到 LLM 中。这一步就像是把找到的书里的关键内容摘抄下来,整理成一个简洁的笔记,然后交给写作助手。
  • 生成(Generate):LLM 根据整理好的上下文信息,生成一个准确且连贯的回答。这一步就像是写作助手根据笔记,写出一个完整的、让人容易理解的答案。

Anything LLM 的安装和使用

这里我们用到的工具叫 Anything LLM

Anything LLM 是一款基于 RAG架构的本地知识库工具,能够将文档、网页等数据源与本地运行的大语言模型(LLM)相结合,构建个性化的知识库问答系统。它支持多种主流模型的 API 接入方式,如 OpenAI、DeepSeek 等。

安装使用的方式也比较简单,我们直接访问 Anything LLM 的官方网站:https://anythingllm.com/desktop,选择适合你操作系统的版本进行下载。

在这里插入图片描述

下载完成后,运行安装包并按照提示完成安装,安装完成后,打开 Anything LLM 应用,第一步就是选择大模型,这里我们看到 AnythingLLM 同样支持大部分的主流模型提供商,我们选择 Ollama,工具会自动读取我们本地已经安装的模型:

在这里插入图片描述

然后下一步应该是选择前面我们提到的 Embedding(嵌入模型)和 Vector Database(向量数据库),由于我之前选择过了,所以这里默认记住了我之前的选项,然后向量数据库我们也选择默认的 LanceDB,它也是完全运行在本地且免费的。

嵌入模型其实也非常重要,它处理的准确性直接决定了基于知识库回答的准确度,我们可以看到 OPEN AI 也提供了嵌入模型,而且 OPEN AI 的嵌入模型目前应该是最强大的,但是 OPEN AI 的嵌入模型需要联网和付费。我们这里先选的是默认的 AnythingLLM 提供的嵌入模型,它是完全运行在本地且免费的嵌入模型,当然准确度就比较一般了。

在这里插入图片描述

然后进来就是一些引导话术,我们可以到设置里先把语言改为中文:

在这里插入图片描述

Anything LLM 设置知识库

知识库的质量其实也直接决定了模型基于知识库回答的效果,AI 友好的知识库结构,首先应层次清晰,按主题、领域或功能分类,建立从概括到具体的合理层级,像图书馆分类摆放书籍;还要易于检索,有精准关键词索引、全文检索功能和智能联想,方便快速定位知识;并且通过知识图谱、交叉引用建立数据关联,形成知识网络。

准备知识库数据:这里我随便搞了点数据:

在这里插入图片描述

然后我们点击工作区的上传图标:

在这里插入图片描述

Anything LLM 支持上传多种类型的文件,包括常见的文本文件(如 TXT、Markdown)、文档文件(如 PDF、Word、PPT、Excel)、数据文件(如 CSV、JSON) 等等:

把准备的知识库文件上传上去,并且添加到当前工作区,点击保存:

在这里插入图片描述

然后我们测试一下:

在这里插入图片描述

另外 Anything LLM 还支持直接贴网页链接来构建知识库,我们尝试贴一个 Vue 的文档进去:

在这里插入图片描述

效果也是可以的:

在这里插入图片描述

不过网页一般都属于非结构化的数据,不利于模型检索,推荐还是先在本地处理成 AI 友好的格式再上传,效果更好。

Anything LLM 也可以联网

另外, Anything LLM 本身还提供了非常强大的 Agent 能力,例如网页深度抓取、生成图表、链接 SQL 数据库、等等。

当然也支持 Web 搜索的 Agent,测试的话推荐大家选 SearXNGDuckDuckGo 两个免费的搜索引擎,当然效果不如付费的 Google、Bing 的要好。

在这里插入图片描述
下面我们测试一下,在聊天区打出 @ 就可以调起 agent:

在这里插入图片描述

现在,你拥有了一个带本地知识库的本地大模型,完全不用担心信息泄漏、卡顿、付费等问题。

Anything LLM 的 API 调用

但是,在客户端下使用还是太局限了,Anything LLM 还提供了 API 调用的能力,这样我们就可以通过代码来灵活定制我们的使用场景,可以做很多事情,比如:私人知识管理工具、企业内部智能客服等等。

在开始 API 调用之前,我们先要明确 Anything LLM 的两个核心概念:

  • Workspace:一个独立的环境,用于存储和管理与特定主题或项目相关的文件和数据。用户可以在工作区中上传文件、配置参数,并与模型进行交互。每个工作区的数据是独立的,互不干扰,方便用户对不同主题或项目进行分类管理。
  • Thread:工作区中的一次具体对话记录,代表用户与模型之间的一系列交互。它会记录用户的问题和模型的回答,保持对话的连贯性。用户可以在一个工作区中创建多个线程,分别处理不同的问题或任务,方便管理和追溯每次对话的内容。

我们可以在设置 - 工具 - API 密钥下创建 API 密钥,并且查看 Anything LLM 提供的 API 文档:

在这里插入图片描述
可以看到, Anything LLM 提了非常详细的 API,基本上客户端内能做的事情都能使用 API 调用,包括各种设置、知识库上传、与大模型交互等等 ,点开每个 API 可以看到具体的参数详情,也可以直接测试调用:

复制创建好的API 秘钥到这里

在这里插入图片描述

调用获取workspace的方法获得workspace的slug

在这里插入图片描述
最常用的当然就是和大模型聊天的接口,因为 Anything LLM 中与大模型的交互都发生在 Workspace 下的 Thread 中:
Anything LLM 在本地启动的端口默认是 3001 ,关键参数:apiTokenslugthreadSlug
在这里插入图片描述

我们看到关键的两个参数是 slugthreadSlug ,其实这两个参数就分别代表 WorkspaceThread 的唯一标识,在客户端我们是看不到这两个标识的,我们可以通过接口创建新的 WorkspaceThread 来获取,或者通过接口查询已有的 WorkspaceThreadslug

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

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

相关文章

idea自动编译,idea不重启项目,加载修改的内容

idea自动编译,idea不重启项目,加载修改的内容

幸运盒项目—测试报告

幸运盒测试报告 目录幸运盒测试报告一. 概要二. 测试环境三. 测试用例脑图四. 测试用例1. 功能测试1. 注册功能2. 密码登录功能3. 验证码登录功能4. 注册用户功能5. 创建奖品功能6. 新建抽奖活动功能8. 奖品列表9. 活动列表2. 界面测试1. 注册界面2. 密码登录界面3. 验证码登录…

Estimator and Confidence interval

Coefficient of determination and sample correlation coefficient R2SSRSSTR^2 \frac{SSR}{SST}R2SSTSSR​ SSR∑i1n((yi^−yˉ)2)SSR\sum_{i1}^n((\hat{y_{i}}-\bar{y})^2)SSR∑i1n​((yi​^​−yˉ​)2) SST∑i1n((yi−yˉ)2)SST\sum_{i1}^n((y_{i}-\bar{y})^2)SST∑i1n​…

【网络编程】TCP 服务器并发编程:多进程、线程池与守护进程实践

半桔:个人主页🔥 个人专栏: 《Linux手册》《手撕面试算法》《网络编程》🔖很多人在喧嚣声中登场,也有少数人在静默中退出。 -张方宇- 文章目录前言套接字接口TCP服务器TCP 多进程TCP 线程池重写Task任务放函数对象客户端重连进程…

还停留在批处理时代吗?增量计算架构详解

在当今的数字化环境中,企业不再只是一味地囤积数据——他们痴迷于尽快把数据转化为可付诸行动的洞察。真正的优势来自于实时发现变化并立即做出反应,无论是调整推荐策略还是规避危机。 十年前,硬件与平台技术的进步让我们能够从容应对海量数…

DataSet-深度学习中的常见类

深度学习中Dataset类通用的架构思路 Dataset 类设计的必备部分 1. 初始化 __init__ 配置和路径管理:保存 config,区分 train/val/test 路径。加载原始数据:CSV、JSON、Numpy、Parquet 等。预处理器/归一化器:如 StandardScaler&am…

【VC】 error MSB8041: 此项目需要 MFC 库

▒ 目录 ▒🛫 导读问题背景环境1️⃣ 核心原因:MFC 组件缺失或配置不当2️⃣ 解决方案:安装 MFC 组件并验证配置2.1 步骤1:检查并安装 MFC 组件2.2 步骤2:检查并修正项目配置2.3 步骤3:针对特定场景的补充方…

Java零基础学习Day10——面向对象高级

一.认识final1.含义final关键字是最终的意思,可以修饰:类,方法,变量修饰类:该类被称为最终类,特点是不能被继承修饰方法:该方法被称为最终方法,特点是不能被重写了修饰变量&#xff…

Qt中解析JSON文件

Qt中解析JSON文件 在Qt中解析JSON字符串主要有两种方式:使用QJsonDocument类或使用QJsonDocument结合QVariant。以下是详细的解析方法: 使用QJsonDocument(推荐) 这种方式的主要相关类如下: QJsonDocument: QJsonDocum…

深度解析HTTPS:从加密原理到SSL/TLS的演进之路

在互联网时代,数据安全已成为不可忽视的基石。当我们在浏览器地址栏看到"https://"前缀和那把小小的绿色锁图标时,意味着正在进行一场受保护的通信。但这层保护究竟是如何实现的?HTTPS、SSL和TLS之间又存在着怎样的联系与区别?本文将深入剖析这些技术细节,带你全…

Flutter 官方 LLM 动态 UI 库 flutter_genui 发布,让 App UI 自己生成 UI

今日,Flutter 官方正式发布了它们关于 AI 大模型的 package 项目: genui ,它是一个非常有趣和前沿的探索类型的项目,它的目标是帮助开发者构建由生成式 AI 模型驱动的动态、对话式用户界面: 也就是它与传统 App 中“写…

Redis常用数据结构及其底层实现

Redis常用数据结构主要有String List Set Zset Hash BitMap Hyperloglog Stream GeoString:Redis最常用的一种数据结构,Sting类型的数据存储结构有三种int、embstr、raw1.int:用来存储long以下的整形embstr raw 都是用来存字符串,其中小于44字节的字符串用embstr存 …

O3.4 opencv图形拼接+答题卡识别

一图形拼接逻辑导入必要的库pythonimport cv2 import numpy as np import sys导入cv2库用于图像处理,numpy库用于数值计算,sys库用于与 Python 解释器进行交互,例如退出程序。定义图像显示函数def cv_show(name, img):cv2.imshow(name, img)c…

SQL注入常见攻击点与防御详解

SQL注入是一种非常常见且危险的Web安全漏洞。攻击者通过将恶意的SQL代码插入到应用程序的输入参数中,欺骗后端数据库执行这些非预期的命令,从而可能窃取、篡改、删除数据或获得更高的系统权限。以下是详细、准确的SQL注入点分类、说明及举例:…

EKSPod 资源利用率配置修复:从占位符到完整资源分析系统

概述 在 Kubernetes 集群管理过程中,资源利用率的监控和优化是保证应用性能和成本效益的关键环节。近期,我们对 EKSPod 管理界面的资源利用率显示功能进行了全面修复,将原先简单的占位符文本升级为完整的资源分析系统。本文将详细介绍这次修复的背景、方案、实现细节和最终…

Linux内核(架构)

文章目录Linux内核架构概述核心子系统详解1、进程管理2、内存管理3、虚拟文件系统(VFS)4、设备驱动模型掌握Linux内核核心技术阶段1:基础准备阶段2:内核基础阶段3:深入子系统阶段4:高级主题(持续学习)调试和…

基于数据挖掘的单纯冠心病与冠心病合并糖尿病的证治规律对比研究

标题:基于数据挖掘的单纯冠心病与冠心病合并糖尿病的证治规律对比研究内容:1.摘要 背景:冠心病和冠心病合并糖尿病在临床上较为常见,且二者在证治方面可能存在差异,但目前相关系统研究较少。目的:对比基于数据挖掘的单纯冠心病与冠…

即梦AI快速P图

原图: 模型选择3.0效果比较好,提示词“根据提供图片,要求把两边脸变小,要求把脸变尖,要求眼妆变淡,眼睛更有神,要求提亮面部肤色要求面部均匀,面部要磨皮!鼻头高光和鼻翼两边阴影变淡…

【办公类-109-04】20250913圆牌卡片(接送卡被子卡床卡入园卡_word编辑单面)

背景需求: 为了发被子,我做了全校批量的圆形挂牌,可以绑在“被子包”提手上,便于再操场上发放被子时,很多老师可以协助根据学号发放。 https://blog.csdn.net/reasonsummer/article/details/149755556?spm=1011.2415.3001.5331https://blog.csdn.net/reasonsummer/arti…

Shoptnt 促销计算引擎详解:策略模式与责任链的完美融合

在电商系统中,促销计算是业务逻辑最复杂、变更最频繁的模块之一。它不仅需要处理多种促销类型(满减、折扣、优惠券等),还要管理它们之间的优先级和互斥关系。 Shoptnt 设计了一套基于 策略模式 (Strategy Pattern) 和 责任链模式…