首页 > 系统相关 >RAG实战:本地部署ragflow+ollama(linux)

RAG实战:本地部署ragflow+ollama(linux)

时间:2025-01-04 11:33:49浏览次数:3  
标签:__ RAG ragflow https linux docker ollama response

1.部署ragflow

1.1安装配置docker

因为ragflow需要诸如elasticsearch、mysql、redis等一系列三方依赖,所以用docker是最简便的方法。

docker安装可参考Linux安装Docker完整教程,安装后修改docker配置如下:

vim /etc/docker/daemon.json
{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "features": {
    "buildkit": true
  },
  "live-restore": true,
  "registry-mirrors": [
    "https://docker.211678.top",
    "https://docker.1panel.live",
    "https://hub.rat.dev",
    "https://docker.m.daocloud.io",
    "https://do.nark.eu.org",
    "https://dockerpull.com",
    "https://dockerproxy.cn",
    "https://docker.awsl9527.cn/"
  ]
}

修改后重新加载配置并重启docker服务:

systemctl daemon-reload && systemctl restart docker

1.2 配置ragflow

​
git clone https://github.com/infiniflow/ragflow.git
cd ragflow/docker
docker compose -f docker-compose.yml up -d

构建docker环境期间,有遇到elasticsearch下载失败的情况,于是将docker-compose-base.yml中的
image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION}
改成:
image: elasticsearch:${STACK_VERSION}
​

环境构建完成后,确认服务器状态:

docker logs --tail 100 -f ragflow-server

出现以下界面提示说明服务器启动成功:

     ____   ___    ______ ______ __               
    / __ \ /   |  / ____// ____// /____  _      __
   / /_/ // /| | / / __ / /_   / // __ \| | /| / /
  / _, _// ___ |/ /_/ // __/  / // /_/ /| |/ |/ / 
 /_/ |_|/_/  |_|\____//_/    /_/ \____/ |__/|__/  

 * Running on all addresses (0.0.0.0)
 * Running on http://127.0.0.1:9380
 * Running on http://x.x.x.x:9380
 INFO:werkzeug:Press CTRL+C to quit

此时,通过docker ps可以看到运行中的容器:

如果要停止服务:docker stop $(docker ps -q)

1.3 登陆ragflow页面

在你的浏览器中输入你的服务器对应的 IP 地址并登录 RAGFlow。只需输入 http://IP_OF_YOUR_MACHINE 即可:未改动过配置则无需输入端口(默认的 HTTP 服务端口 80,如需修改端口,修改docker-compose.yml中ports下面80前面端口号)

你将在浏览器中看到如下界面,第一次要注册一个账号,邮箱随便填。

2.部署ollama

2.1下载ollama

# 两种下载方式:
# 方法一:
curl -fsSL https://ollama.com/install.sh | sh

# 方法二:
curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz
sudo tar -C /usr -xzf ollama-linux-amd64.tgz

2.2 启动

ollama serve

2.3 下载大模型

以qwen2-7b为例,其他模型可以去https://ollama.com/library搜索。

方法一:ollama run qwen2:7b

模型文件比较大,如果上述方法网络不稳定,可以使用下面的方法二。

方法二:

        ①去https://huggingface.co/models?library=gguf下载gguf格式的模型文件,根据所需,选择一个下载,如Qwen2-7B-Instruct.Q4_K_M.gguf

        ②创建一个构造文件qwen2-7b.modelfile(自由命名),文件的内容为你下载的模型文件路径,如:

FROM ./Qwen2-7B-Instruct.Q4_K_M.gguf

        ③构造

ollama create qwen2-7b -f qwen2-7b.modelfile

构造完成后执行ollama list即可看到你构造的模型。如:

$ollama list
NAME                  ID              SIZE      MODIFIED      
qwen2-7b:latest       0151b69b0ffa    4.7 GB    1 weeks ago

测试:

ollama run qwen2-7b "你是谁?"

2.4 补充其他两种调用方式

url调用:

curl http://localhost:11434/api/chat -d '{
  "model": "qwen2-7b",
  "messages": [
    { "role": "user", "content": "你是谁?" }
  ]
}'

python代码调用:

import requests
import json

def send_message_to_ollama(message, port=11434):
    url = f"http://localhost:{port}/api/chat"
    payload = {
        "model": "qwen2-7b",
        "messages": [{"role": "user", "content": message}]
    }
    response = requests.post(url, json=payload)
    if response.status_code == 200:
        response_content = ""
        for line in response.iter_lines():
            if line:
                response_content += json.loads(line)["message"]["content"]
        return response_content
    else:
        return f"Error: {response.status_code} - {response.text}"

if __name__ == "__main__":
    user_input = "why is the sky blue?"
    response = send_message_to_ollama(user_input)
    print("Ollama's response:")
    print(response)

3.在ragflow中配置ollama

3.1 添加LLM

登陆ragflow,点击右上角的头像,找到模型供应商-选择Ollama-添加模型

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

若要部署embedding模型,方式与2.3和3.1一样。

3.2 构建知识库 & 聊天

后续的使用步骤均在页面上操作,比较简单易懂,就省略了。

标签:__,RAG,ragflow,https,linux,docker,ollama,response
From: https://blog.csdn.net/ling913/article/details/144918527

相关文章

  • SecureCRT & SecureFX 9.6.1 for macOS, Linux, Windows - 跨平台的多协议终端仿真和
    SecureCRT&SecureFX9.6.1formacOS,Linux,Windows-跨平台的多协议终端仿真和文件传输请访问原文链接:https://sysin.org/blog/securecrt-9/查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgSecureCRT客户端运行于Windows、Mac和Linux,将坚如磐石的终......
  • vuex和localStorage有什么区别?
    Vuex和localStorage在前端开发中各自扮演着不同的角色,它们之间的主要区别可以归纳为以下几点:数据存储位置:Vuex:数据存储在内存中,这意味着当页面刷新或关闭时,存储在Vuex中的数据将会丢失,除非通过其他手段(如localStorage或sessionStorage)进行持久化。localStorage:数据存储在浏......
  • Adapting Static Taint Analyzers to Soffware Marketplaces:A Leverage Point for Ma
    本论文选自SCORED22(不是顶会,但是在ACM官网搜索找到了,也是漏洞挖掘就做了一个梳理)论文工作提出了一种系统化的方法来专门化静态污点分析器,旨在提高软件市场的精确度和召回率。通过这种方法,努力提高静态污点分析的有效性和效率。本文提出的方法建立在文献检索领域的相关工作的......
  • 发布blazor应用到Linux, 使用nginx作为WebSocket代理
    Blazor使用了SignalR连接,而SignalR使用的是WebSocketWebSocket协议提供了一种创建支持客户端和服务器之间实时双向通信的Web应用程序的方法。作为HTML5的一部分,WebSocket使开发此类应用程序比以前的方法容易得多。大多数现代浏览器都支持WebSocket,包括Chrome、Firefox......
  • Linux Shell 脚本编程基础知识篇—awk的条件判断(3)
    ℹ️大家好,我是练小杰,今天周五了,又是一周过去了......
  • 【RK3588 Linux 5.x 内核编程】-内核SPI子系统
    内核SPI子系统文章目录内核SPI子系统1、SPI子系统2、内核中的SPI协议驱动程序2.1获取SPI控制器驱动程序2.2将从设备添加到SPI控制器2.3配置SPI2.4数据传输2.5删除设备3、驱动实现SPI是流行的串行通信协议之一。SPI(SerialPeripheral......
  • 如何从文档创建 RAG 评估数据集
    添加微信1185918903,关注公众号ChallengeHub获取更所咨询在本文中,将展示如何创建自己的RAG数据集,该数据集包含任何语言的文档的上下文、问题和答案。检索增强生成(RAG)[1]是一种允许LLM访问外部知识库的技术。通过上传PDF文件并将其存储在矢量数据库中,我们可以通......
  • Linux实验报告10-作业管理
    目录一:实验目的二:实验内容(1)启动两个vim编辑器在后台执行,然后查看当前有哪些作业正在执行。(2)打开ls命令的帮助手册后,先暂停执行,再转出到前台重新执行,最后退出手册。 (3)利用at命令向系统所有用户在当前时间之后的3分钟广播“hello"信息。 (4)请定制如下一次性......
  • Linux实验报告14-Linux内存管理实验
    目录一:实验目的二:实验内容1、编辑模块的源代码mm_viraddr.c2、编译模块 3、编写测试程序mm_test.c 4、编译测试程序mm_test.c  5、在后台运行mm_test6、验证mm_viraddr模块一:实验目的(1)掌握内核空间、用户空间,虚拟地址空间的概念;(2)掌握linux内核中内存管理......
  • 一图总结linux最有用的21个命令
    图中总结了linux中最有用的21个命令,包括:ls\cp\mv\rm\mkdir\cd\pwd\grep\find\cat\echo\top\ps\wget\ssh\sudo\chmod\chown\gzip\tar\man\等共21个命令图中对它们的用途做了详细的说明,这些命令在日常工作中使用频率最高,掌握了它们,工作可以更高效!#linux##运维##devops##编......