基于 Elasticsearch 和 Milvus 的 RAG 运维知识库的架构设计和部署落地实现指南

最近在整理一些业务场景的架构设计和部署落地实现指南
先放一个 【基于RAG的运维知识库 (ElasticSearch + Milvus) 的详细实现指南】,其中包含了详尽的技术实现细节、可运行的示例代码、原理分析、优缺点分析和应用场景分析。

架构描述: 基于RAG的运维知识库 (ElasticSearch + Milvus)

部署指南

1. 极其详细的部署步骤 (包含详尽的技术实现细节和分步骤、可运行的示例代码-也只能给示例代码)

1.1 环境准备
  • 操作系统选择: 推荐使用 Linux 发行版,如 CentOS 7/8、Ubuntu 18.04/20.04。本指南以 CentOS 7 为例。

  • 网络环境配置: 确保服务器之间网络互通,防火墙开放 Elasticsearch (默认端口 9200)、Milvus (默认端口 19530) 和应用程序所需的端口。

  • 安装必要软件包:

    # 更新 yum 源
    sudo yum update -y
    
    # 安装常用工具
    sudo yum install -y wget curl vim net-tools
    
    # 安装 Java (Elasticsearch 依赖)
    sudo yum install -y java-1.8.0-openjdk-devel
    
    # 安装 Python (用于后续脚本)
    sudo yum install -y python3 python3-pip
    
    # 安装 Docker 和 Docker Compose (可选,用于容器化部署)
    sudo yum install -y yum-utils
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    sudo yum install -y docker-ce docker-ce-cli containerd.io
    sudo systemctl start docker
    sudo systemctl enable docker
    sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
    
  • 配置环境变量:

    # 编辑 /etc/profile 或 ~/.bashrc
    # 添加以下内容 (根据实际安装路径修改)
    export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
    export PATH=$JAVA_HOME/bin:$PATH
    
    # 使环境变量生效
    source /etc/profile  # 或 source ~/.bashrc
    
1.2 组件安装配置
1.2.1 Elasticsearch 安装配置
  1. 下载 Elasticsearch:

    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.17-linux-x86_64.tar.gz  # 根据需要选择版本
    tar -xzf elasticsearch-7.17.17-linux-x86_64.tar.gz
    cd elasticsearch-7.17.17/
    
  2. 修改配置文件 config/elasticsearch.yml

    cluster.name: my-rag-cluster  # 集群名称
    node.name: node-1  # 节点名称
    network.host: 0.0.0.0  # 监听所有 IP 地址
    http.port: 9200  # Elasticsearch 端口
    discovery.seed_hosts: ["node-1"]  #  单节点部署,配置为节点名称
    cluster.initial_master_nodes: ["node-1"]  # 单节点部署
    # 建议配置 (根据实际情况调整):
    # bootstrap.memory_lock: true  # 锁定内存,防止交换
    # xpack.security.enabled: false  # 如果不需要安全认证,可以禁用
    # 注意:以上只是示例配置,生产环境请务必根据实际情况进行详细配置,特别是安全相关的配置。
    

    关键参数解释:

    • cluster.name: 集群名称,同一集群内的节点应具有相同的集群名称。
    • node.name: 节点名称,用于标识集群中的单个节点。
    • network.host: Elasticsearch 监听的 IP 地址,0.0.0.0 表示监听所有 IP。
    • http.port: Elasticsearch 的 HTTP 端口,默认为 9200。
    • discovery.seed_hosts: 集群发现的主机列表。在单节点部署中,可以设置为节点名称。
    • cluster.initial_master_nodes: 初始主节点列表。在单节点部署中,设置为节点名称。
    • bootstrap.memory_lock: 是否锁定内存,防止 Elasticsearch 内存被交换到磁盘,影响性能。
    • xpack.security.enabled:开启xpack security功能。
  3. 启动 Elasticsearch:

    ./bin/elasticsearch -d  # 后台启动
    
  4. 验证 Elasticsearch:

    curl http://localhost:9200/
    

    如果返回 JSON 格式的 Elasticsearch 信息,则表示启动成功。

1.2.2 Milvus 安装配置
  1. 使用 Docker Compose 安装 Milvus (推荐):

    # 创建 docker-compose.yml 文件
    cat > docker-compose.yml <<EOF
    version: '3.5'
    services:
      etcd:
        container_name: milvus-etcd
        image: milvusdb/etcd:v3.5.5
        environment:
          ETCD_USE_EMBEDDED: "true"
        volumes:
          - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcd
      standalone:
        container_name: milvus-standalone
        image: milvusdb/milvus:v2.2.14 # 根据需要选择版本
        command: ["milvus", "run", "standalone"]
        environment:
          ETCD_ENDPOINTS: etcd:2379
          MINIO_ADDRESS: minio:9000
        volumes:
          - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus
        ports:
          - "19530:19530"
          - "9091:9091"
        depends_on:
          - "etcd"
      minio:
        container_name: milvus-minio
        image: minio/minio:RELEASE.2022-10-29T06-21-33Z
        environment:
          MINIO_ACCESS_KEY: minioadmin
          MINIO_SECRET_KEY: minioadmin
        volumes:
          - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_data
        ports:
          - "9000:9000"
          - "9001:9001"
        command: minio server /minio_data --console-address ":9001"
        depends_on:
          - "etcd"
    networks:
      default:
        name: milvus
    EOF
    
    # 启动 Milvus
    docker-compose up -d
    

关键配置参数解释

  • milvus-etcd: etcd镜像,用于存储milvus的元数据。
  • milvus-standalone: Milvus的standalone模式镜像。
    • ETCD_ENDPOINTS: etcd 的连接地址。
    • MINIO_ADDRESS: MinIO 的连接地址,用于存储数据。
  • milvus-minio: 对象存储minIO镜像。
    • MINIO_ACCESS_KEY:MinIO用户名
    • MINIO_SECRET_KEY:MinIO密码
  1. 验证 Milvus:

    docker ps  # 查看 Milvus 容器是否正常运行
    
1.2.3 安装 Python 依赖
pip3 install pymilvus==2.2.14 elasticsearch==7.17.1 # 注意版本匹配
pip3 install sentence-transformers
1.3 组件集成 (RAG 应用程序)

以下是一个 Python 代码示例,展示如何使用 Elasticsearch 和 Milvus 实现 RAG:

from elasticsearch import Elasticsearch
from pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection, utility
from sentence_transformers import SentenceTransformer

# --- 1. 连接到 Elasticsearch 和 Milvus ---

es = Elasticsearch(
    hosts=["http://localhost:9200"],  # Elasticsearch 地址
    # 如果 Elasticsearch 启用了安全认证,需要提供用户名和密码
    # http_auth=("elastic", "your_password")
)

connections.connect(
    alias="default",
    host="localhost",  # Milvus 地址
    port="19530"
)

# --- 2. 定义 Elasticsearch 索引和 Milvus Collection ---

# Elasticsearch 索引
index_name = "operations_knowledge"
if not es.indices.exists(index=index_name):
    es.indices.create(
        index=index_name,
        body

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

手机放兜里,支付宝“碰一下”被盗刷?

大家好&#xff0c;我是小悟。 近期&#xff0c;网络上关于“支付宝‘碰一下’支付易被盗刷”的传言甚嚣尘上&#xff0c;不少用户对此心生疑虑。 首先&#xff0c;要明确一点&#xff1a;“碰一下”支付并不会像某些传言中所描述的那样容易被隔空盗刷。这一观点已经得到了支付…

【多模态】Magma多模态AI Agent

1. 前言 微软杨建伟团队&#xff0c;最近在AI Agent方面动作连连&#xff0c;前两天开源了OmniParser V2&#xff0c;2月26日又开源了Magma&#xff0c;OmniParser专注在对GUI的识别解析&#xff0c;而Magma则是基于多模态技术&#xff0c;能够同时应对GUI和物理世界的交互&…

解决yarn run dev报错: TypeError: Cannot create property ‘-registry-npmmirror-com‘

一、问题描述 在使用yarn run dev启动项目时&#xff0c;遇到以下错误&#xff1a; error TypeError: Cannot create property -registry-npmmirror-com on string {"-registry-npmmirror-com":true}二、解决方案 使用npm config get registry和yarn config get r…

HONOR荣耀MagicBook 15 2021款 独显(BOD-WXX9,BDR-WFH9HN)原厂Win10系统

适用型号&#xff1a;【BOD-WXX9】 MagicBook 15 2021款 i7 独显 MX450 16GB512GB (BDR-WFE9HN) MagicBook 15 2021款 i5 独显 MX450 16GB512GB (BDR-WFH9HN) MagicBook 15 2021款 i5 集显 16GB512GB (BDR-WFH9HN) 链接&#xff1a;https://pan.baidu.com/s/1S6L57ADS18fnJZ1…

车载电源管理新标杆NCV8460ADR2G 在汽车电子负载开关中的应用

NCV8460ADR2G是一款完全保护的高压侧驱动器&#xff0c;可用于开关各种负载&#xff0c;如灯泡、电磁阀和其他致动器。该器件可以通过有源电流限制和高温关断针对过载情况进行内部保护。 诊断状态输出引脚提供了高温以及开关状态开路负载情况的数字故障指示。 NCV8460ADR2G产品…

MYSQL数据库创建命令

1.创建数据库 2.查看数据库 3.切换数据库 4.删除数据库 5.查看数据库 6.练习 导出文件 可在文件里查看到

因子有效性的审判使者——回测分析【量化实践】

我叫补三补四&#xff0c;很高兴见到大家&#xff0c;欢迎一起学习交流和进步 今天来讲一讲alpha策略制定后的测试问题 因子回测的方法公说公有理&#xff0c;婆说婆有理&#xff0c;笔者在这里也不会盖棺定论&#xff0c;就像学模型的时候经常听到的老生常谈&#xff1a;从哥白…

SpringBoot 整合mongoDB并自定义连接池,实现多数据源配置

要想在同一个springboot项目中使用多个数据源&#xff0c;最主要是每个数据源都有自己的mongoTemplate和MongoDbFactory。mongoTemplate和MongoDbFactory是负责对数据源进行交互的并管理链接的。 spring提供了一个注解EnableMongoRepositories 用来注释在某些路径下的MongoRepo…

spark的一些指令

一&#xff0c;复制和移动 1、复制文件 格式&#xff1a;cp 源文件 目标文件 示例&#xff1a;把file1.txt 复制一份得到file2.txt 。那么对应的命令就是&#xff1a;cp file1.txt file2.txt 2、复制目录 格式&#xff1a;cp -r 源文件 目标文件夹 示例&#xff1a;把目…

linux之crosstool-NG(1)生成toolchain

Linux之crosstool-NG(1)生成交叉编译Toolchain Author: Once Day Date: 2025年2月25日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 本文相关内容翻译自crosstool-NG官方文档。 漫漫长路&#xff0c;有人对你微笑…

Vue 项目中配置代理的必要性与实现指南

Vue 项目中配置代理的必要性与实现指南 在 Vue 前端项目的开发过程中&#xff0c;前端与后端地址通常不同&#xff0c;可能引发跨域问题。为了在开发环境下顺畅地请求后端接口&#xff0c;常常会通过配置**代理&#xff08;proxy&#xff09;**来解决问题。这篇文章将详细解析…

【AI论文】MoM: 使用混合记忆(Mixture-of-Memories)的线性序列建模

摘要&#xff1a;线性序列建模方法&#xff0c;如线性注意力、状态空间建模和线性循环神经网络&#xff08;RNNs&#xff09;&#xff0c;通过降低训练和推理的复杂性&#xff0c;显著提高了效率。然而&#xff0c;这些方法通常将整个输入序列压缩成一个固定大小的单一记忆状态…

鸿蒙app 开发中的 横线 竖线 line

实现下面中线 可以使用 line 而不用前端 类似的 盒子的边框来实现 这种实现 方式 更加的灵活 参考的官方文档

腿足机器人之十四-强化学习SAC算法

腿足机器人之十四-强化学习SAC算法 核心原理关键结构输入输出规范&#xff08;以 Humanoid-v5 为例&#xff09; Soft Actor-Critic&#xff08;SAC&#xff09;是一种基于属于 Actor-Critic 框架的算法&#xff0c;属于最大熵的强化学习算法&#xff0c;最大熵的特点就是不仅考…

DBGPT安装部署使用

简介 DB-GPT是一个开源的AI原生数据应用开发框架(AI Native Data App Development framework with AWEL(Agentic Workflow Expression Language) and Agents)。 目的是构建大模型领域的基础设施&#xff0c;通过开发多模型管理(SMMF)、Text2SQL效果优化、RAG框架以及优化、Mul…

【江科大STM32】TIM输出比较-PWM功能(学习笔记)

一、PWM驱动LED呼吸灯 接线图&#xff1a; PWM的初始化: 具体步骤&#xff1a; ①RCC开启时钟&#xff08;把要用的TIM外设和GPIO外设时钟都打开&#xff09; ② 配置时基单元&#xff0c;包括前面的时钟源选择 ③配置输出比较单元&#xff0c;里面包括CCR的值&#xff…

LearnOpenGL之Shader编程——生成设计

———————————————————— 前序 ——————————————————— AndroidLearnOpenGL是本博主自己实现的LearnOpenGL练习集合&#xff1a; Github地址&#xff1a;GitHub - wangyongyao1989/AndroidLearnOpenGL: OpenGL基础及运用 系列文章&#xff…

Windows版FFmpeg使用及B站视频下载示例python源码

Windows版FFmpeg使用及B站视频下载示例python源码 FFmpeg介绍和下载 FFmpeg 是一个功能强大、灵活且广泛使用的多媒体处理工具&#xff0c;无论是在专业领域还是日常使用中&#xff0c;都能满足各种多媒体处理需求。FFmpeg 是一个开源项目&#xff0c;遵循 LGPL 或 GPL 许可。…

Rust学习总结之-match

Rust 有一个叫做 match 的极为强大的控制流运算符&#xff0c;它允许我们将一个值与一系列的模式相比较&#xff0c;并根据相匹配的模式执行相应代码。模式可由字面量、变量、通配符和许多其他内容构成。 一&#xff1a;match定义 可以把 match 表达式想象成某种硬币分类器&a…

通义灵码插件安装入门教学 - IDEA(安装篇)

在开发过程中&#xff0c;使用合适的工具和插件可以极大地提高我们的工作效率。今天&#xff0c;我们将详细介绍如何在 IntelliJ IDEA 中安装并配置通义灵码插件&#xff0c;这是一款旨在提升开发者效率的实用工具。无论你是新手还是有经验的开发者&#xff0c;本文都将为你提供…