音乐专辑评论RAG系统

一个专注于音乐专辑评论的检索增强生成系统,集成了模型上下文协议服务器,通过服务器发送事件实现智能路由和反馈机制。

  • by Swathee-07
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Swathee-07/music-rag-mcp

使用说明

🎵 音乐专辑评论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,用于一般查询和动态标记生成。

数据流

  1. 用户查询→ Streamlit客户端
  2. 客户端→ MCP服务器(SSE)
    执行: initialize → list_tools
  3. 如果音乐意图:
    → Call query_rag → summarize_context → 渲染摘要
  4. 如果非音乐意图:
    → Call general_knowledge_query → 渲染标签
  5. 在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

然后打开:

环境变量

变量 目的
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