主页 > 手机  > 

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

基于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 download.docker /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 " github /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 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-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密码

验证 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运维知识库的架构设计和部署落地实现指南由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“基于Elasticsearch和Milvus的RAG运维知识库的架构设计和部署落地实现指南