基于 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 安装配置
-
下载 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/ -
修改配置文件
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功能。
-
启动 Elasticsearch:
./bin/elasticsearch -d # 后台启动 -
验证 Elasticsearch:
curl http://localhost:9200/如果返回 JSON 格式的 Elasticsearch 信息,则表示启动成功。
1.2.2 Milvus 安装配置
-
使用 Docker Compose 安装 Milvus (推荐):
# 创建 docker-compose.yml 文件 cat > docker-compose.yml <<EOF version: '3.5' services:etcd:container_name: milvus-etcdimage: milvusdb/etcd:v3.5.5environment:ETCD_USE_EMBEDDED: "true"volumes:- ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcdstandalone:container_name: milvus-standaloneimage: milvusdb/milvus:v2.2.14 # 根据需要选择版本command: ["milvus", "run", "standalone"]environment:ETCD_ENDPOINTS: etcd:2379MINIO_ADDRESS: minio:9000volumes:- ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvusports:- "19530:19530"- "9091:9091"depends_on:- "etcd"minio:container_name: milvus-minioimage: minio/minio:RELEASE.2022-10-29T06-21-33Zenvironment:MINIO_ACCESS_KEY: minioadminMINIO_SECRET_KEY: minioadminvolumes:- ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_dataports:- "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密码
-
验证 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相关文章:
基于 Elasticsearch 和 Milvus 的 RAG 运维知识库的架构设计和部署落地实现指南
最近在整理一些业务场景的架构设计和部署落地实现指南 先放一个 【基于RAG的运维知识库 (ElasticSearch + Milvus) 的详细实现指南】,其中包含了详尽的技术实现细节、可运行的示例代码、原理分析、优缺点分析和应用场景分析。 架构描述: 基于RAG的运维知识库 (ElasticSearch…...
基于Python的web漏洞挖掘,漏洞扫描系统(附源码,部署)
本次技术通过利用Python技术来开发一款针对web漏洞挖掘扫描的技术,通过web漏洞的挖掘扫描来实现对网站URL的漏洞检测,通过高中低风险的判断来实现对一款网站中存在的漏洞进行可视化的分析,从而能够找到问题并且尽快的实现问题的解决。 博主介…...
Spring Boot全局异常处理:“危机公关”团队
目录 一、全局异常处理的作用二、Spring Boot 实现全局异常处理(附上代码实例)三、总结: 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,可以多多支持一下,感谢…...
Wireshark:自定义类型帧解析
文章目录 1. 前言2. 背景3. 开发 Lua 插件 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 背景 Wireshark 不认识用 tcpdump 抓取的数据帧,仔细分析相关代码和数据帧后,…...
Redis7——进阶篇(一)
前言:此篇文章系本人学习过程中记录下来的笔记,里面难免会有不少欠缺的地方,诚心期待大家多多给予指教。 基础篇: Redis(一)Redis(二)Redis(三)Redis&#x…...
word转换为pdf后图片失真解决办法、高质量PDF转换方法
1、安装Adobe Acrobat Pro DC 自行安装 2、配置Acrobat PDFMaker (1)点击word选项卡上的Acrobat插件,(2)点击“首选项”按钮,(3)点击“高级配置”按钮(4)点…...
Kafka零拷贝
Kafka为什么适用零拷贝,其他存储结构不适用? Kafka 采用的是日志存储模型,数据通常是顺序写入、顺序读取,并且它的消费模式是 “读完即走”(一次性读取并发送给消费者),这与零拷贝的特性完美匹…...
鸿蒙应用开发入门教程
鸿蒙应用开发入门教程 基础准备与环境搭建 1. 了解鸿蒙系统 1.1 核心理念学习 HarmonyOS(鸿蒙系统)是华为推出的全场景分布式操作系统,其核心特点如下: 分布式能力 设备协同:手机、平板、智能手表、IoT设备等可无…...
【2022——暴力DP / 优雅背包】
题目 代码 #include <bits/stdc.h> using namespace std; using ll long long;const int N 2023;ll f[2][2023][2023];int main() {f[0][0][0] 1;for(int i 1; i < 10; i) //次数{for(int j 0; j< 2022; j)for(int k 0; k < 2022; k)f[i&1][j][k] 0…...
AI智能体与大语言模型:重塑SaaS系统的未来航向
在数字化转型的浪潮中,软件即服务(SaaS)系统一直是企业提升效率、优化业务流程的重要工具。随着AI智能体和大语言模型(LLMs)的迅速发展,SaaS系统正迎来前所未有的变革契机。本文将从AI智能体和大语言模型对…...
绕过密码卸载360终端安全管理系统
一不小心在电脑上安装了360终端安全管理系统,就会发现没有密码,就无法退出无法卸载360,很容易成为一个心病,360终端安全管理系统,没有密码,进程无法退出,软件无法卸载,前不久听同事说…...
golang安装(1.23.6)
1.切换到安装目录 cd /usr/local 2.下载安装包 wget https://go.dev/dl/go1.23.6.linux-amd64.tar.gz 3.解压安装包 sudo tar -C /usr/local -xzf go1.23.6.linux-amd64.tar.gz 4.配置环境变量 vi /etc/profile export PATH$…...
星闪开发入门之常见报错整理(一)
系列文章目录 星闪开发入门之常见报错整理(一) 文章目录 系列文章目录前言一、ComX open fail, please check com is busy or not exist二、CMake下载失败三、配置文件出现语法错误四、路径过长导致编译报错五、ninja: build stopped: subcommand fai…...
Node.js与MySQL的深入探讨
Node.js与MySQL的深入探讨 引言 Node.js,一个基于Chrome V8引擎的JavaScript运行时环境,以其非阻塞、事件驱动的方式在服务器端应用中占据了一席之地。MySQL,作为一款广泛使用的开源关系型数据库管理系统,凭借其稳定性和高效性,成为了许多应用的数据库选择。本文将深入探…...
【JAVA】阿里云百炼平台对接DeepSeek-V3大模型使用详解
1、DeepSeek简介 DeepSeek的火热让全世界见证了一场国产AI大模型走向巅峰的盛宴。DeepSeek的横空出世一方面让AI大模型的格局得到重塑,另一方面,对于普通人来说,也有机会零距离的体验到更懂国人的AI大模型。从很多使用过后的小伙伴们的反馈来…...
springboot项目部署脚本
Springboot部署脚本 该脚本可用于jenkins自动执行,具有以下功能 适配所有以内嵌tomcat容器springboot项目jar包可根据参数选择环境,基于profiles可自动识别并关闭已存在进程第一个参数是指定jar包所在绝对路径(该路径下必须有且仅有一个.jar文件) 第二…...
黑马Java面试教程_P5_微服务
系列博客目录 文章目录 系列博客目录1.引言2.Spring Cloud2.1 Spring Cloud 5大组件有哪些?面试文稿 2.2 服务注册和发现是什么意思?Spring Cloud 如何实现服务注册发现?面试文稿 2.3 我看你之前也用过nacos、你能说下nacos与eureka的区别?面试文稿 2.4 你们项目负载均衡如…...
使用Fuse-DFS挂载文件存储 HDFS-后端存储ceph
1. 编译环境准备 yum install cmake3 ln -s /usr/bin/cmake3 /usr/bin/cmake yum install gcc-c安装挂载依赖 yum -y install fuse fuse-devel fuse-libs执行以下命令,载入FUSE模块 modprobe fuse2. 下载源码包 hadoop-3.3.4-src.tar.gz解压后执行以下命令 打开…...
生成式AI项目的生命周期
总结自视频(吴恩达大模型入门课):9_13_generative-ai-project-lifecycle_哔哩哔哩_bilibili 生成周期如下图,包含四部分:任务范围(Scope),选择大模型(Select)…...
SOC-ATF 安全启动BL1流程分析(1)
一、ATF 源码下载链接 1. ARM Trusted Firmware (ATF) 官方 GitHub 仓库 GitHub 地址: https://github.com/ARM-software/arm-trusted-firmware 这是 ATF 的官方源码仓库,包含最新的代码、文档和示例。 下载方式: 使用 Git 克隆仓库: git…...
从SVM到LSTM:我的谣言检测模型优化踩坑实录(附PHEME/微博数据集对比)
从SVM到LSTM:我的谣言检测模型优化踩坑实录 去年夏天接手社交媒体谣言检测项目时,我完全没料到这个看似标准的文本分类任务会如此充满挑战。团队最初的想法很简单:用传统机器学习方法快速搭建基线,再逐步升级到深度学习模型。但当…...
避坑指南:企业引入AI编程助手,选CodeGeex还是Copilot企业版?
企业级AI编程助手选型实战:CodeGeex与Copilot企业版的深度博弈 当技术决策者站在数字化转型的十字路口,选择一款适合企业长期发展的AI编程助手绝非简单的功能对比。这背后涉及数据主权、团队协作范式、技术债务管理等一系列战略考量。我们曾见证某金融科…...
别再死记硬背‘三层两网’了!用一张图看懂智能变电站的‘大脑’、‘神经’和‘手脚’
智能变电站解剖课:用人体系统秒懂"三层两网"架构 第一次走进智能变电站控制室时,那些闪烁的指示灯、跳动的数据曲线和密集的机柜总让人联想到科幻电影里的场景。但当你把整个系统想象成一个人的身体——大脑负责思考决策,神经系统…...
双非逆袭!25年兰大计算机专硕上岸率超84%,我的跨考保姆级攻略(含806专业课避坑指南)
双非逆袭!25年兰大计算机专硕上岸率超84%,我的跨考保姆级攻略(含806专业课避坑指南) 作为一名本科双非院校的跨考生,我在2025年成功上岸兰州大学计算机专硕。这一年,兰大计算机专硕的一志愿上岸率高达84.1%…...
AI开发工具对决:LangChain/LangGraph深度编码 vs. Dify/Coze低代码平台,如何精准选择?
1. 当AI开发遇上选择困难症:从零理解两种技术路线 最近在技术社区看到不少开发者纠结:该用LangChain这类代码框架还是Dify这类低代码平台?这就像装修房子时面临的抉择——是买毛坯房自己设计(LangChain),还…...
lvgl-micropython、lv_micropython和lv_binding_micropython到底啥关系?一文读懂耐
一、背景与问题缘起 MySQL 5.6.51 版本下 2000 万行核心业务表开展新增字段操作,需求为新增BIGINT(19) NOT NULL DEFAULT 0 COMMENT 注释(因业务实际需要存储大数值关联字段)。 表的核心特性为Java 多线程密集读写,业务请求持续高…...
STM32CubeMX实战:定时器触发DAC+DMA生成高精度正弦波信号
1. 为什么需要定时器触发DACDMA生成正弦波 在嵌入式系统开发中,生成精确的模拟信号是个常见需求。比如音频设备需要产生声波,电机控制需要生成驱动波形,测试设备需要输出标准信号源。传统做法是用CPU逐个写入DAC寄存器,但这会占用…...
2026毕业论文降AI指南:deepseek免费降AI指令+降AI神器测评,有效降低AI率【建议收藏】
快过年了,毕业生们日子并不好过,最近私信里哀鸿遍野。 “学姐,我明明是自己写的,为什么查重报告显示AI率80%?” “救命,用了劣质降AI工具结果语句不通,导师直接退回了……” 这几年AI领域发展…...
3分钟打造专业数据大屏:DataRoom开源可视化设计器终极指南
3分钟打造专业数据大屏:DataRoom开源可视化设计器终极指南 【免费下载链接】DataRoom 🔥基于SpringBoot、MyBatisPlus、ElementUI、G2Plot、Echarts等技术栈的大屏设计器,具备目录管理、DashBoard设计、预览能力,支持MySQL、Oracl…...
Zotero PDF Translate:让学术研究跨越语言边界的智能翻译解决方案
Zotero PDF Translate:让学术研究跨越语言边界的智能翻译解决方案 【免费下载链接】zotero-pdf-translate Translate PDF, EPub, webpage, metadata, annotations, notes to the target language. Support 20 translate services. 项目地址: https://gitcode.com/…...
