序言

最近遇到很多人都对于本地知识库搭建的流程非常有兴趣,故做一个教程,也完成一下Datawhale的视频共建任务,文章前半内容无需编写代码即可完成使用,后半部分会介绍一下如何在应用中与ai进行对话

由于是0基础向,一部分基础向的内容会更偏向于windows上的操作方法,当然,你需要有一台安装了显卡的计算机用来完成这个教程

RAG

为了使用本地知识库,我们需要使用到一个叫做RAG的技术

简单介绍一下RAG(检索增强生成(Retrieval-augmented Generation)),是一种可以不微调模型(这是一种需要花费较多资源完成的事情),就可以增强大模型回答问题准确性的一种方法。

简单来说,原本的大模型在考试的时候只能依赖已经学习过的内容进行回答,RAG则相当于让大模型可以开卷作答,即使没有学习过的内容,也可以通过翻书解决。当然大模型本身没有直接翻书的能力,我们需要给他一个工具,让他能快速的找到相关内容在哪里。这个工具就是我们的矢量数据库,将从数据库搜索到的数据嵌入到提示词后与问题一起发送给大模型,这时候他就能根据提示词中的信息,更准确地回答问题。

本地模型部署

首先我们需要部署本地的大语言模型,当然,如果你想采用在线模型的api。可以跳过这一步骤.NET程序中调用本地部署Deepseek模型进行对话_net deepseek-CSDN博客https://blog.csdn.net/scixing/article/details/145498523?spm=1001.2014.3001.5501条件允许的话,请尽量选择7b及以上的模型

不过我们这里还需要一个新的步骤,这是我们接下来要用到的妙妙工具下载Embedding模型

ollama pull bge-m3

RAGFlow

一个工具,简化了RAG应用的部署流程。

图片

在使用RAGFlow之前,我们首先要下载其项目仓库,与下载docker

如果你还没有git的话,也请访问https://git-scm.com/downloads/win下载安装哦

docker相当于一个开箱即用的环境,由项目开发者配置完成后,分发镜像给用户使用,无需关心其具体的运行环境配置,也不会影响计算机自身的环境。https://www.docker.com/ 在此链接中下载安装对于系统的版本

然后我们需要克隆ragflow项目

在你希望下载该项目的文件夹中,打开powershell(在空白处右键,点击在终端打开

git clone https://github.com/infiniflow/ragflow 
cd ragflow/docker/

接下来拉取镜像, 如果你没有访问外网的工具,你可能需要配置docker的镜像源

图片

打开docker在设置中找到Docker Enging后,将配置改为

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "registry-mirrors": [
    "https://docker-0.unsee.tech",
  ]
}

(p.s. 镜像源也有可能会失效,若无法正常下载,请寻找访问外网的工具或者搜索新的镜像源)

docker compose -f docker-compose.yml up -d

运行上述指令后,不出意外,你将会经历一段时间的等待,不过当你看到类似

图片

的输出时,恭喜你,你已经成功的部署了RAGFlow。

如果你是在wsl部署的,有时候可能会看到类似linux Error response from daemon: Ports are not available: exposing port的输出,不要担心,这时候在windows侧输入即可(需要管理员权限)

net stop winnat
net start winnat

到此我们的准备工作已经完成了, 接下来只需鼠标点点配置使用即可。

配置RAGFLow

浏览器访问localhost

图片

注册账号(这里是本地账号,随便注册都行 test@test.com都没有任何问题)

登陆后看到如下界面,先不用急着创建知识库,我们还需要配置我们的默认模型

图片

点击右上角后选中Model providers(模型提供商)

图片

可以看到这里由非常多的模型可以选择,我们这里选择ollama, 分别添加两个模型

图片

图片

(token数我随便填的,看实际需求)

接下来配置默认模型

图片

接下来就可以配置我们的知识库了!如果以上都配置完成,在添加知识库之后,你应该会看到类似界面。其他配置可以无需修改,语言按需设置,点击保存

图片

接下来就可以上传数据集了,上传后,点击绿箭头开始解析数据

图片

接下来就可以在聊天中配置使用了!完成。

图片

在python中使用RAGFlow

首先我们要先在网站中生成apikey备用

新建一个虚拟环境后安装官方提供的python SDK(推荐使用Anaconda)

pip install ragflow-sdk
from ragflow_sdk import RAGFlow

rag_object = RAGFlow(api_key="ragflow-xxx", base_url="http://localhost:80") # 创建一个RAGFlow对象
assistants = rag_object.list_chats(name="dlmaster") # 获取名为"dlmaster"的助手
assistant = assistants[0].get() # 获取第一个助手
session = assistant.create_session("test") # 创建一个会话
while True:
    question = input("\n==================== User =====================\n> ")
    print("\n==================== scixing =====================\n")
    
    cont = ""
    for ans in session.ask(question, stream=True): # 向助手发送问题
        print(ans.content[len(cont):], end='', flush=True) # 打印助手的回答
        cont = ans.content

使用以上代码,便可以与RAGFlow的助手完成通讯!


当然python sdk本质也是基于HTTP API,我们也可以通过其他语言自己封装SDK。目前在进行这方面的工作,敬请期待RagFlow.NET (x)


微信公众号: @scixing的炼丹房

BiliBili: @无聊的年 【OPEN 1+X】零基础向使用Ollama+RAGFlow构建自己本地的AI知识库_哔哩哔哩_bilibili

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐