将 IBM WatsonX 数据与 Milvus 结合使用,构建用于知识检索的智能 Slack 机器人
在当今快节奏的工作环境中,快速轻松地访问信息对于保持生产力和效率至关重要。无论是在 Runbook 中查找特定说明,还是访问关键知识转移 (KT) 文档,快速检索相关信息的能力都可以产生重大影响。
本教程将指导您构建一个智能 Slack 机器人,该机器人利用 IBM WatsonX.data 和 Milvus 进行高效的知识检索。通过集成这些工具,您将创建一个机器人,该机器人可以根据组织的知识源搜索并提供查询的答案。我们将使用 IBM WatsonX.data 来填充和查询相关文档,并使用 IBM WatsonX.ai 来回答从获取的文档中提出的问题。
本教程分为两个主要部分:第一部分侧重于使用 IBM WatsonX Data 或开源 Milvus 填充数据库,第二部分介绍如何在本地运行 Python 程序以将机器人连接到 Slack,利用 WatsonX.ai 智能响应用户查询。
在本教程结束时,您将拥有一个功能齐全的 Slack 机器人,它可以增强您的团队访问和利用重要信息的能力,从而提高整体生产力。
先决条件
在开始之前,请确保您具备以下条件:
IBM Cloud 帐户:访问 IBM WatsonX.ai 和 WatsonX Data,用于知识检索和 AI 模型集成
Milvus 矢量数据库:熟悉 Milvus 存储和查询向量化数据的能力;您可以使用开源 Milvus 或 IBM 的托管 Milvus 服务。
Slack 工作区:在工作区中配置和部署 Slack 机器人的管理员访问权限
编程知识:精通 Python,包括 API 经验、使用云服务和处理环境变量的经验

第 1 步:设置 WatsonX.data 和 WatsonX 项目
设置 WatsonX.data
创建 IBM Cloud 帐户:如果您还没有帐户,请在 IBM Cloud 上注册。
创建 WatsonX.data 实例:在 IBM Cloud 目录中,通过选择计划并提供必要的详细信息来搜索并创建 WatsonX.data 实例。
设置 WatsonX 项目
创建 WatsonX 项目:在 IBM Cloud Dashboard 上,导航到 WatsonX 主页,然后在 capabilities 下启动 watsonx.ai。创建 Sandbox 项目。

获取项目 ID 和 URL:
达拉斯:
https://us-south.ml.cloud.ibm.com伦敦:
https://eu-gb.ml.cloud.ibm.com法兰克福:
https://eu-de.ml.cloud.ibm.com东京:
https://jp-tok.ml.cloud.ibm.com
导航到 WatsonX 项目的 Manage 页面以找到 Project ID。
在您新创建的项目中,在“管理”选项卡下,选择左侧菜单上的“服务和集成”。
选择蓝色的“关联服务 +”按钮。从列表中选择可用的 “Watson Machine Learning” 服务名称。

确定与您的项目关联的 Watson Machine Learning 实例的 URL。此 URL 因创建 ML 实例的区域而异,格式如下:。
https://<region>.ml.cloud.ibm.com
第 2 步:设置 Milvus 服务器
您可以通过两种方式设置 Milvus 服务器:使用 IBM WatsonX.data 或开源 Milvus 数据库。
使用 IBM WatsonX.data 设置 Milvus
登录到 WatsonX.data 控制台。
导航到 Infrastructure Manager。
添加 Milvus 服务:
单击 Add component 并选择 Add service。
从 Type 列表中选择 Milvus。

配置 Milvus Service:
显示名称:填写 Milvus 服务名称。
添加存储桶:关联外部存储桶或为 Starter 大小选择 IBM 管理的存储桶。
配置 Milvus 服务:点击 配置。
创建到 Milvus 的数据源连接
在 WatsonX.ai 项目中:
在“资产”选项卡下,选择新建资产 +。
连接到数据源:
选择磁贴 Connect to a data source。
搜索 Milvus,然后单击 Select。

提供连接详细信息:
从 基础设施管理器 获取 Milvus 主机和端口信息(点击 Milvus 服务,打开 详情 页面)。
提供数据库名称和授权用户凭证以访问 Milvus 实例。
标题:输入连接的标题(例如,“Milvus 连接”)。
Milvus 主机名、端口、数据库名称、用户名和密码:
设置开源 Milvus Server
1. 为 Docker 分配额外的内存
通过 Docker 桌面设置将 Docker 内存增加到至少 8GB。
2. 下载 Docker Compose 配置
创建目录并下载 Docker Compose 文件:
mkdir milvus_compose
cd milvus_compose
wget https://github.com/milvus-io/milvus/releases/download/v2.2.8/milvus-standalone-docker-compose.yml -O docker-compose.yml 3. 使用 Docker Compose 运行 Milvus
启动 Milvus:
docker compose up -d
验证容器是否正在运行:
docker ps -a
检查 Milvus 服务器日志:
docker logs milvus-standalone
第 3 步:创建 Slack 应用程序
创建 Slack 应用程序
导航到 Slack API。
点击 “Create App” -> “From Scratch”。
提供 App name 并选择要在其中部署机器人的工作区。
在您的Slack应用程序设置下,导航到“OAuth和权限”。
单击“添加 OAuth 范围”,然后添加“channels:history”和“chat:write”作为机器人令牌范围。

获取 Token
从“OAuth & Permissions”获取。
SLACK_TOKEN从 “基本信息” 中获取。
SIGNING_SECRET
第 4 步:设置项目并运行应用程序
克隆存储库并安装依赖项:
克隆存储库:
PowerShell
1
git clone https://github.com/PhaniDivi-613/doc-assistant 导航到项目目录并安装所需的模块:
PowerShell
1
cd doc-assistant 2
pip install -r requirements.txt 设置环境:
在项目目录中创建一个文件,并使用前面步骤中收集的以下值填充该文件:.env
PowerShell
1
PROJECT_ID=<Project ID> 2
PROJECT_URL=<Project URL> 3
IC_API_KEY=<IBM Cloud API Token> 4
SLACK_TOKEN=<Slack API Token> 5
SIGNING_SECRET=<Signing Secret> 使用 Runbook 填充数据库:
将所有 Runbook 或知识转移文档放在文件夹中。
knowledge_source通过运行脚本填充数据库:
populate_db.py
PowerShell
1
python populate_db.py --opensource-milvus # Use this flag if using open-source Milvus 2
python populate_db.py # Use this if using IBM watsonx.data 运行 Python 应用并使用 ngrok 创建隧道:
启动 Python Flask 应用程序:
PowerShell
1
python3 app.py --opensource-milvus # If using open-source Milvus 2
python3 app.py # If using IBM watsonx.data 在新的终端窗口中,使用 :ngrok
PowerShell
1
ngrok http 8080 从终端输出中复制转发 URL。ngrok
更新 Slack 配置
在您的 Slack 应用程序设置中,导航到“事件订阅”。
使用您的 URL 更新“请求 URL”字段,后跟 .
ngrok/events-endpoint添加机器人用户事件:
message.channelsmessage.channels
保存 Slack 应用程序设置中的更改。
与您的应用程序交互
邀请您的机器人加入您希望它运行的 Slack 通道。
在 Slack 通道中,发送消息以触发机器人。例如:
@dev-assistant 如何使用 CLI 获取 atracker 帐户设置?等待机器人处理您的请求并生成响应。

结论
通过执行这些步骤,您已成功设置与 Milvus 数据库集成的 Slack 应用程序以进行知识管理。现在,您可以在 Slack 中与机器人交互,测试其功能,并体验其 AI 驱动的功能。此设置允许根据提供的 Runbook 和知识源进行高效的查询处理和智能响应。
相关文章:
将 IBM WatsonX 数据与 Milvus 结合使用,构建用于知识检索的智能 Slack 机器人
在当今快节奏的工作环境中,快速轻松地访问信息对于保持生产力和效率至关重要。无论是在 Runbook 中查找特定说明,还是访问关键知识转移 (KT) 文档,快速检索相关信息的能力都可以产生重大影响。 本教程将指导您构建一个…...
2024 网鼎杯 CTF --- Crypto wp
文章目录 青龙组Crypto1Crypto2 白虎组Crypto1Crypto2 朱雀组Crypto2Crypto3part1part2part3part4 青龙组 Crypto1 题目: from Crypto.Util.number import * from secret import flagp getPrime(512) q getPrime(512) n p * q d getPrime(299) e inverse(d,…...
深度学习基础知识-损失函数
目录 1. 均方误差(Mean Squared Error, MSE) 2. 平均绝对误差(Mean Absolute Error, MAE) 3. Huber 损失 4. 交叉熵损失(Cross-Entropy Loss) 5. KL 散度(Kullback-Leibler Divergence&…...
《逆向记录》
这里写自定义目录标题 1.什么是vmp加密VMP加密的工作原理VMP加密的应用场景和优缺点实际应用案例 2.什么是ast混淆3.魔改算法总结 1.什么是vmp加密 VMP加密(Virtual Machine Protection)是一种软件保护技术,旨在通过虚拟化和加密技术来保…...
chatgpt3.5权重参数有多少MB;llama7B权重参数有多少MB
目录 chatgpt3.5权重参数有多少MB llama7B权重参数有多少MB chatgpt3.5权重参数有多少MB 关于ChatGPT 3.5的权重参数占用的存储空间大小,虽然直接给出具体的MB数值可能较为困难(因为这取决于多种因素,如参数表示的精度、是否进行了压缩等),但可以根据其参数量来估算一个…...
ST IoT Wireless 物联网与无线技术 研讨会
一、研讨会背景与目的 ◆ 意法半导体致力于提供可靠且经济实惠的无线连接解决方案,包含Wireless NFC Security & Esim等产品。 ◆ 将智能物体连接到互联网和云,或者从更广泛的意义上说,连接到物联网(IoT)。 ◆ 远程监控、配…...
PHP实现雪花算法生成唯一ID
引言 雪花算法是Twitter开源的分布式ID生成算法,可以产生64位的ID。其中第一位是固定的正数标识,41位用于存储时间戳,剩下的为机器ID和序列号。通过时间戳、机器ID和序列号的组合,确保每个ID都是唯一的。 PHP代码 1、定义雪花算…...
APP的设置页面,应该怎样尽可能减少用户的输入操作呢
一、引言 在当今数字化时代,移动应用程序(APP)已经成为人们生活中不可或缺的一部分。无论是社交娱乐、工作学习还是日常生活,我们都离不开各种 APP 的帮助。而 APP 的设置页面作为用户调整应用参数、个性化定制功能的重要入口&am…...
Node.js:内置模块
Node.js:内置模块 Node.jsfs模块读取文件写入文件__dirname path模块路径拼接文件名解析 http模块创建服务 Node.js 传统的JavaScript是运行在浏览器的,浏览器就是其运行环境。 浏览器提供了JavaScript的API,以及解析JavaScript的解析引擎&a…...
3. keil + vscode 进行stm32协同开发
1. 为什么使用vscode 主要还是界面友好,使用习惯问题,vscode 从前端,js, c/c, qt, 仓颉,rust都有很好插件的支持,并且有romote, wsl 等很多插件可以提高效率, 唯一的问题就是要使用插件进行环境…...
React 组件生命周期与 Hooks 简明指南
文章目录 一、类组件的生命周期方法1. 挂载阶段2. 更新阶段3. 卸载阶段 二、函数组件中的 Hooks1. useState2. useEffect3. useContext4. useReducer 结论 好的,我们来详细讲解一下 React 类组件的生命周期方法和函数组件中的钩子(hooks)。 …...
【springcloud】gateway网关的作用
目录 1. 说明2. 路由转发3. 负载均衡4. 安全认证与授权5. 熔断与降级6. 请求限流7. 监控与日志8. 过滤器功能 1. 说明 1.在Spring Cloud中,Gateway网关扮演着至关重要的角色。2.基于Spring Framework 5、Spring Boot和Project Reactor构建的API网关,专为…...
「C/C++」C++11 之<thread>多线程编程
✨博客主页何曾参静谧的博客📌文章专栏「C/C++」C/C++程序设计📚全部专栏「VS」Visual Studio「C/C++」C/C++程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasolid函数说明目…...
HTML前端页面设计静态网站-仿百度
浅浅分享一下前端作业,大佬轻喷~ <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>百度(伪)</title><style>body {margin: 0;padding: 0;}.top-bar {dis…...
百度SEO是否还有用?福州百度SEO专家林汉文为你深度解析
大家好,我是林汉文,一名专注于百度SEO优化的专家,最近有很多人问我:百度SEO还有用吗?在如今快速变化的数字营销环境中,这确实是一个值得探讨的问题。今天,我就来为大家详细分析百度SEO的现状&am…...
数学建模学习(134):使用Python基于WISP的多准则决策分析
WISP算法技术性文章 1. 算法介绍 WISP(Weighted Independent Set Problem)是一种优化算法,主要用于解决图论中的加权独立集问题。加权独立集问题是一个经典的组合优化问题,涉及从一个图中选择一个独立的顶点集,使得所选顶点的总权重最大。这个问题在计算机科学、运筹学、…...
.net core NPOI以及NOPI mapper
我们在日常开发中对Excel的操作可能会比较频繁,好多功能都会涉及到Excel的操作。在.Net Core中大家可能使用Npoi比较多,这款软件功能也十分强大,而且接近原始编程。但是直接使用Npoi大部分时候我们可能都会自己封装一下,毕竟根据二…...
分布式锁(redisson,看门狗,主从一致性)
目录 分布式锁一:基本原理和实现方式二:分布式锁的实现1:分布式锁的误删问题2:解决误删问题 三:lua脚本解决多条命令原子性问题调用lua脚本 四:Redisson1:redisson入门2:redisson可重…...
openEuler 服务器Python自动化安装WEB服务器和文件上传服务(1)
一、系统准备 我们的服务器采用了 openEuler 22.03 (LTS-SP4) 的初始化服务器模式安装 二、安装步骤 (一)安装依赖库 在终端中运行以下命令确保系统安装了必要的依赖: sudo dnf install -y python3上述 Python 脚本中的依赖库会在运行 Py…...
【Python游戏开发】石头剪刀布游戏(附完整Python完整代码)
石头剪刀布游戏:Pygame实现 结果图前言核心函数思考步骤实现原理和公式代码实现结论结果图 前言 石头剪刀布是一种经典的猜拳游戏,简单易玩但却蕴含着一定的策略性。本文将介绍如何使用Python和Pygame库开发一个简单的石头剪刀布游戏,并探讨其中的核心功能实现和思考过程。 …...
终极指南:在Windows上直接安装安卓APK文件的5个简单步骤
终极指南:在Windows上直接安装安卓APK文件的5个简单步骤 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 想在Windows电脑上运行安卓应用,但又厌…...
Java并发编程:CompletableFuture实战
Java并发编程:CompletableFuture实战 引言 Java 8引入的CompletableFuture是现代异步编程的重要工具,它不仅解决了Future的局限性,还提供了丰富的API用于组合、转换和处理异步结果。相比传统的Future,CompletableFuture支持流式调…...
如何安全备份微信聊天记录:PyWxDump工具使用全指南
如何安全备份微信聊天记录:PyWxDump工具使用全指南 【免费下载链接】PyWxDump 删库 项目地址: https://gitcode.com/GitHub_Trending/py/PyWxDump 你是否曾因误删重要微信对话而懊悔不已?是否想永久保存珍贵聊天记录却不知从何下手?Py…...
突破存储限制:群晖DSM7下Synology Photos自定义文件夹挂载实战
1. 为什么需要自定义文件夹挂载 很多群晖用户升级到DSM7后都会遇到一个头疼的问题:Synology Photos默认把所有个人照片都存放在/home/Photos目录下,而这个目录实际上位于/homes共享文件夹中。随着照片数量不断增加,/homes所在存储空间很快就会…...
VHD2VL终极指南:5分钟快速将VHDL转换为Verilog的免费工具
VHD2VL终极指南:5分钟快速将VHDL转换为Verilog的免费工具 【免费下载链接】vhd2vl 项目地址: https://gitcode.com/gh_mirrors/vh/vhd2vl 在FPGA和ASIC设计领域,VHDL转Verilog是许多工程师面临的共同挑战。手动转换不仅耗时费力,还容…...
告别混乱信号!用CANdb++ Editor从零搭建汽车CAN网络DBC文件(保姆级图文教程)
告别混乱信号!用CANdb Editor从零搭建汽车CAN网络DBC文件(保姆级图文教程) 在汽车电子开发领域,CAN总线如同神经脉络般贯穿整车系统。我曾参与过一个新能源整车项目,由于早期缺乏规范的DBC文件,不同ECU厂商…...
如何在10分钟内搭建个人游戏流媒体服务器:Sunshine跨平台游戏串流完全指南
如何在10分钟内搭建个人游戏流媒体服务器:Sunshine跨平台游戏串流完全指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 您是否梦想过在任何设备上畅玩PC游戏&#x…...
技能工程化框架:从标准化定义到编排实战
1. 项目概述:从“技能”到“智能”的工程化桥梁在当今的软件开发领域,尤其是涉及复杂交互和自动化流程的场景,我们常常会听到“技能”这个词。它听起来很抽象,但如果你拆解过任何一款智能助手、自动化机器人或者一个大型的业务流程…...
Godot游戏自动化构建与发布:基于GitHub Actions与Docker的CI/CD实践
1. 项目概述:当Godot遇上CI/CD如果你是一名独立游戏开发者,或者在一个小团队里负责Godot引擎的项目,那么“构建”和“部署”这两个词,大概率是你开发流程里最头疼的环节之一。手动导出项目到不同平台(Windows、Linux、…...
Python自动化Excel数据抓取:OpenClaw技能实战指南
1. 项目概述:从Excel表格到智能数据抓取如果你每天的工作都离不开Excel,并且经常需要从各种网页、文档甚至PDF里手动复制粘贴数据,然后费劲地整理到表格里,那你一定对“Excel大师”这个称号既向往又头疼。我们总希望Excel能更“聪…...
