前言

在上一篇文章中,我们介绍了如何使用RAG技术构建本地知识库,基于 OllamaQwen2.5 实现了与本地私有知识库文件的自然语言交互。本文将继续探讨另一种实现方式,即通过 Ollama 与 RagFlow 的组合来实现,其中 Ollama 使用的模型仍然是Qwen2

首先,让我们回顾一下 RAG 的常见应用架构:

RagFlow 的安装和部署

前置条件

为了成功安装和运行 RagFlow,您的系统应满足以下要求:

  • CPU:至少 4 核
  • 内存:至少 16 GB
  • 磁盘空间:至少 50 GB
  • Docker:版本 >= 24.0.0 & Docker Compose >= v2.26.1

安装步骤

  1. 克隆仓库

    git clone https://github.com/infiniflow/ragflow.git
  2. 启动服务器:进入 docker 文件夹,并使用预编译的 Docker 镜像启动服务器:

    cd ragflow/docker
    chmod +x ./entrypoint.sh
    docker compose -f docker-compose-CN.yml up -d

    注意:Docker 下载的镜像较大,请确保有足够的存储空间(约 10 GB)。

  3. 确认服务器状态:服务器启动成功后,通过以下命令确认服务器状态:

    docker logs -f ragflow-server

    安装完成后,访问 http://localhost:80 进行注册和登录,而不是访问以下两个地址:

    正确的访问地址如下图所示:

注册与登录

在上图的界面中完成注册,并登录至如下页面:

配置 Ollama 以连接大模型

接下来,我们配置模型。点击右上角的头像,然后选择“模型提供商”:

在这里,我选择连接已经在本地部署的 Ollama,并通过 Ollama 安装了 Qwen2 大模型。如果需要参考具体的安装步骤,请移步到之前的文章

启动 Ollama 大模型的命令如下:

ollama serve

当然,您也可以选择其他平台和模型,并提供相应的 API key。许多模型的 API 都提供免费额度,可以根据需要选择。

在 RagFlow 中配置模型时,由于 RagFlow 是通过 Docker 安装的,因此需要使用以下地址连接本地部署的 Ollama:

http://host.docker.internal:11434

创建知识库

配置完成后,就可以创建知识库了:

注意,尽管界面中没有显示 Markdown 文件类型,但经过测试,Markdown 文件也是支持的。其他选项根据具体情况自行配置即可,操作非常简单。

文件上传后可能处理较慢,这取决于电脑的配置。

文件处理完成后,可以通过检索测试确认文件是否被正确索引。

至此,如果所有文件上传完成,知识库的创建工作也就告一段落了。

聊天功能

现在可以展示成果了,您可以基于知识库与模型进行自然语言交互。

首先,请确保在聊天配置中将 token 设置为较大值,以获得更详细的回复。我将其设置为最大值。

以下是测试结果:

我对结果还算满意。由于我的笔记本配置较低,且没有显卡支持,运行速度较慢。如果部署在有 GPU 的服务器上,企业私有化部署供内部使用,速度会快得多。

思考

在本文的示例中,我使用了个人笔记本上的资料构建个人知识库。无论是基于摘要总结,还是全文检索,所得答案都基本可以满足需求。但这是面向个人或 C 端的应用场景,对于 B 端或企业场景,仅依靠向量检索是远远不够的。首先,它无法准确召回特定信息;其次,它也无法与企业内部的信息系统(包含大量结构化数据)有效集成。

要解决这个问题,除了采用多路召回和重排序策略外,业界还提出了其他解决方案。例如,infiniFlow 提出的 Infinity AI 原生数据库:

如图所示,AI 原生数据库不仅涵盖非结构化内容(如文档和图片),还包括结构化信息系统。通过有效整合这些信息,基于此实现多路召回和融合排序的解决方案。

此外,虽然许多 AI 产品的上下文长度越来越长,但在知识库问答场景中,RAG 仍然是非常必要的。LLM 的长上下文能力实际上对 RAG 的发展有很大促进作用。正如 OpenAI 联合创始人 Andrej Karpathy 所比喻的那样,LLM 就像计算机的 CPU,而上下文就像内存,而以向量为代表的数据库则是硬盘。

显然,没有硬盘的计算机是不可想象的。尽管内存可以很大,但成本高昂,短时间内也无法替代硬盘的作用。

最后关于准确性问题,通常有两个解决思路:一是针对 RAG 系统进行改进,例如进行 Embedding 模型的微调;二是对 LLM 进行微调。虽然我并未亲自实践过,但从阅读的资料来看,RAG 系统在实时性和成本方面相比 LLM 微调更具优势,因此更受青睐。这一点与我的直觉一致。

参考资料


END
cc
最后修改:2024 年 08 月 11 日
如果觉得我的文章对你有用,请随意赞赏