🎵 音乐专辑评论RAG+MCP(SSE)
一种用于音乐专辑评论的以域为中心的检索增强生成(RAG)系统,与服务器发送事件(SSE)上的模型上下文协议(MCP)服务器集成。\ 该项目结合了 *检索情报* 对于特定于音乐的查询,请使用 *代理路由* 决定何时使用RAG或LLM驱动的MCP工具进行一般知识响应。
______________________________________________________________________
概述
该系统展示了 音乐专辑评论检索增强生成管道 它使用:
- 检索增强生成 用于具有证据和总结上下文的音乐意图查询。
- 法学硕士(Groq/OpenAI) 用于具有动态主题标记的一般知识问题。
- MCP服务器(SSE协议) 以公开和管理Streamlit客户端可发现的工具。
- 基于代理的路由 以智能地在RAG和LLM路径之间做出决定。
- 反馈和电子邮件情绪映射。
主要特点
- 基于RAG的答案 带有上下文证据预览和简短总结。
- 上下文保护代理:检测音乐意图并相应地路由查询。
- 动态主题标签 一般知识(非音乐)问题。
- 反馈机制 有星级和电子邮件情绪(可选)。
- 清洁Docker编写部署 (Streamlit+MCP服务器)。
系统架构
组件
| 组件 | 描述 |
|---|---|
| Streamlit客户端 | 前端UI;执行路由、显示答案和标签。 |
| MCP服务器(SSE) | 托管和公开工具: query_rag, summarize_context, general_knowledge_query. |
| RAG指数 | 带有音乐专辑嵌入的本地文档存储。 |
| LLM提供者 | Groq/OpenAI API,用于一般查询和动态标记生成。 |
数据流
- 用户查询→ Streamlit客户端
- 客户端→ MCP服务器(SSE)\
执行: initialize → list_tools
- 如果音乐意图:\
→ Call query_rag → summarize_context → 渲染摘要
- 如果非音乐意图:\
→ Call general_knowledge_query → 渲染标签
- 在UI上呈现答案
体系结构图(ASCII)
\[用户\] | \[流媒体用户界面\] |(SSE:初始化→ list_tools→ 调用工具) v \[MCP服务器\] |--query_rag─┐ | ├─> RAG索引(文件、嵌入) |--summarize_context┘ | |--通用知识查询(LLM:Groq/OpenAI;动态标签) | \[答案渲染器\] |\_\_显示RAG的摘要或GK的标签
MCP服务器工具
| 工具 | 功能 |
|---|---|
query_rag(question, top_k) | 从本地RAG指数中检索基于证据的答案。 |
summarize_context(context, max_sentences) | 生成检索到的顶部上下文的2-3句话摘要。 |
general_knowledge_query(query) | 使用Groq/OpenAI LLM来回答一般查询并自动生成动态标签。 |
Agent算法
| 步骤 | 功能 |
|---|---|
| 意图检测 | 根据关键字识别音乐与非音乐查询。 |
| 置信度估计(可选) | 使用象征性回忆来评估相关性。 |
| 决策逻辑 | 路线至 query_rag 如果音乐意图;其他电话 general_knowledge_query. |
| 输出渲染 | 在Streamlit UI上显示RAG摘要或GK动态标签。 |
快速入门(Docker)
先决条件
- Docker桌面(≥4 GB RAM)
- 用于LLM API调用的互联网(Groq/OpenAI)
运行命令
在项目根节点:
docker compose up --build然后打开:
- App → http://localhost:8501
- MCP SSE → http://localhost:8001/sse
环境变量
| 变量 | 目的 |
|---|---|
GROQ_API_KEY | Groq通过OpenAI兼容端点 |
OPENAI_API_KEY | 如果Groq未设置,则回退 |
SMTP_USER, SMTP_PASS, FEEDBACK_TO | 可选用于反馈电子邮件 |
示例提示
| 查询类型 | 示例 |
|---|---|
| 音乐(RAG路径) | “这张专辑是什么时候的 *比以往更快乐* 由Billie Eilish发布?” |
| 音乐(风格) | “什么是音乐风格 *比以往更快乐*?” |
| 一般知识(GK路径) | “排灯节什么时候庆祝?”或“谁在2024年获得格莱美最佳流行专辑奖?” |
评估和结果
- 指标:音乐专辑问题测试子集的精确度、召回率和F1。
- 可视化:显示性能指标的流线型仪表板。
部队展开情况综合
| 步骤 | 说明 |
|---|---|
| 1.️⃣ | 保存 Dockerfile.app, Dockerfile.mcp,以及 docker-compose.yaml 在repo根目录 |
| 2.️⃣ | 创建 .env 带有API密钥的文件 |
| 3.️⃣ | 跑 docker compose up --build |
| 4.️⃣ | 访问应用程序 http://localhost:8501 |
| 5.️⃣ | 使用示例提示测试RAG和GK路径 |
备注
- MCP客户端仅调用工具 广告宣传的 由服务器。
修改任何工具后重新启动服务器,以便 initialize 和 list_tools 反映变化。
- 一般知识答案 不要 声称RAG来源;标签是 LLM生成.
- 该架构是模块化的——MCP工具可以很容易地扩展或替换。
参考文献
- 模型上下文协议(MCP) –OpenAI工具API规范
- Groq API文件 –OpenAI兼容端点
- Docker编写文档 –多容器应用程序部署
- Streamlit框架 –快速LLM仪表板
作者 Swathie M 项目名称: *基于MCP代理路由的RAG音乐专辑评论* 技术栈: Python、Streamlit、FastAPI(Uvicorn)、Groq/OpenAI、Docker Compose 年份: 2025
