返回 MCP 目录
public公开dns本地运行

ragstack-lambda

RAGStack-Lambda是一个基于AWS Lambda的无服务器AI文档与媒体处理平台,支持上传文档、图片、视频和音频,通过OCR、转录和向量化技术构建知识库,并提供带来源追溯的AI聊天功能。采用按需付费的零闲置成本架构。

article

README

🚀 无服务器文档与媒体处理,支持AI聊天

本项目提供了一种无服务器的文档和媒体处理方案,结合AI聊天功能。采用零扩展架构,无需支付向量数据库费用,也没有闲置成本。用户可以上传文档、图像、视频和音频,通过OCR或转录提取文本,并使用Amazon Bedrock或通过MCP使用自己的AI助手进行查询。

✨ 主要特性

  • ☁️ 全无服务器架构(Lambda、Step Functions、S3、DynamoDB)
  • 🧠 新增:用于文本和图像向量化的Amazon Nova多模态嵌入
  • 📄 文档处理与向量化(PDF、图像、办公文档、HTML、CSV、JSON、XML、EML、EPUB)→ 存储在托管知识库中
  • 🎬 新增:视频/音频处理 - 使用AWS Transcribe转录语音,可按时间戳搜索
  • 💬 具有检索增强上下文和来源归因的AI聊天
  • 📎 可折叠的来源引用,支持可选的文档下载
  • ⏱️ 新增:带有时间戳链接的媒体源 - 点击可在精确位置播放
  • 🔍 元数据过滤 - 自动发现文档元数据并过滤搜索结果
  • 🎯 过滤结果的相关性提升 - 优先匹配元数据过滤器中的内容
  • 🔄 知识库重新索引 - 使用更新的设置为现有文档重新生成元数据
  • 🗑️ 文档管理 - 从仪表板重新处理、重新索引或删除文档
  • 🌐 适用于任何框架的Web组件(React、Vue、Angular、Svelte)
  • 🚀 一键部署
  • 💰 每月7 - 10美元(1000份文档,Textract + Haiku)

📦 安装指南

选项1:一键部署(AWS Marketplace)

注意:仓库正在积极开发中,内容可能经常变动

可直接从AWS控制台进行部署,无需本地设置:

  1. 在AWS Marketplace订阅RAGStack(免费,非必需 - 如果订阅,Lambda角色会在首次调用时自动接受Bedrock模型协议)
  2. 点击此处进行部署
  3. 输入堆栈名称(仅支持小写,例如 "my-docs")和管理员电子邮件
  4. 点击 创建堆栈(部署大约需要10分钟)

部署完成后

  • 查看电子邮件获取临时密码(来自Cognito)
  • 转到CloudFormation → 您的堆栈 → 输出 选项卡,找到仪表板URL (UIUrl)

选项2:从源代码部署

适用于定制或开发:

前提条件

  • 具有管理员访问权限的AWS账户
  • Python 3.13+、Node.js 24+
  • 已配置的AWS CLI、SAM CLI
  • Docker(用于Lambda层构建)
git clone https://github.com/HatmanStack/RAGStack-Lambda.git
cd RAGStack-Lambda

# 创建虚拟环境并安装依赖
python -m venv venv
source venv/bin/activate  # 在Windows上:venv\Scripts\activate
pip install -r requirements.txt

# 部署(默认使用us-east-1进行Nova多模态嵌入)
python publish.py \
  --project-name my-docs \
  --admin-email admin@example.com

选项3:嵌套堆栈部署

将RAGStack作为更大的CloudFormation堆栈的一部分进行部署。详细信息请参阅 嵌套堆栈部署指南

快速示例

Resources:
  RAGStack:
    Type: AWS::CloudFormation::Stack
    Properties:
      TemplateURL: https://ragstack-quicklaunch-public.s3.us-east-1.amazonaws.com/ragstack-template.yaml
      Parameters:
        StackPrefix: 'my-app-ragstack'  # 必需:小写前缀
        AdminEmail: admin@example.com

💻 使用示例

服务器端集成

服务器端集成使用API密钥进行身份验证。从仪表板 → 设置中获取您的密钥。

curl -X POST 'YOUR_GRAPHQL_ENDPOINT' \
  -H 'x-api-key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"query": "query { searchKnowledgeBase(query: \"...\") { results { content } } }"}'

Web组件

Web组件使用IAM身份验证(无需API密钥 - 自动处理)。每个UI选项卡都会在可展开部分显示服务器端API示例。

MCP服务器(AI助手集成)

可在Claude Desktop、Cursor、VS Code、Amazon Q CLI和其他MCP兼容工具中直接使用您的知识库。

# 安装(或使用uvx实现零安装)
pip install ragstack-mcp

将以下内容添加到您的AI助手的MCP配置中:

{
  "ragstack-kb": {
    "command": "uvx",
    "args": ["ragstack-mcp"],
    "env": {
      "RAGSTACK_GRAPHQL_ENDPOINT": "YOUR_ENDPOINT",
      "RAGSTACK_API_KEY": "YOUR_API_KEY"
    }
  }
}

然后自然地提问:"在我的知识库中搜索身份验证文档"

详细的设置说明请参阅 MCP服务器文档

📚 详细文档

🔧 技术细节

架构

上传 → OCR → 嵌入 → Bedrock知识库
                          ↓
 Web UI(仪表板 + 聊天) ←→ GraphQL API
                          ↓
 Web组件 ←→ 带有来源的AI聊天

使用说明

文档

可上传各种格式的文档。系统会自动检测并路由到最佳处理器:

| 类型 | 格式 | 处理方式 | |------|---------|------------| | 文本 | HTML、TXT、CSV、JSON、XML、EML、EPUB、DOCX、XLSX | 直接提取并进行智能分析 | | OCR | PDF、JPG、PNG、TIFF、GIF、BMP、WebP、AVIF | 使用Textract或Bedrock视觉OCR(WebP/AVIF需要Bedrock) | | 媒体 | MP4、WebM、MP3、WAV、M4A、OGG、FLAC | 使用AWS Transcribe转录 → 分割成30秒片段 → 可按时间戳搜索 | | 直接传递 | Markdown (.md) | 直接复制 |

处理时间:上传 → 处理中 → 已索引(文本通常需要1 - 5分钟,OCR需要2 - 15分钟,媒体需要5 - 20分钟)

图像

可上传带有标题的JPG、PNG、GIF、WebP图像。视觉内容和标题文本均可搜索。

网页抓取

可将网站内容抓取到知识库中。详细信息请参阅 网页抓取

视频和音频

可上传MP4、WebM、MP3、WAV、M4A、OGG或FLAC文件。使用AWS Transcribe转录语音,并分割成30秒的片段进行搜索。来源包含时间戳(例如 "1:30 - 2:00"),点击链接可在精确位置播放。

特性

  • 说话人分离(识别谁说了什么)
  • 可配置语言(支持30多种语言)
  • 聊天响应中带有时间戳链接的来源

语言和说话人设置请参阅 配置

聊天

可对您的内容提问,来源会显示答案的出处。

📄 许可证

文档中未提及许可证相关信息。

开发

npm run check  # 对后端和前端进行代码检查和测试

部署选项

直接部署

# 完整部署(默认使用us-east-1)
python publish.py --project-name myapp --admin-email admin@example.com

# 跳过仪表板构建(仍构建Web组件)
python publish.py --project-name myapp --admin-email admin@example.com --skip-ui

# 跳过所有UI构建(仪表板和Web组件)
python publish.py --project-name myapp --admin-email admin@example.com --skip-ui-all

# 启用演示模式(每日上传限制5次,每日聊天限制30次;禁用重新索引/重新处理/删除功能)
python publish.py --project-name myapp --admin-email admin@example.com --demo-mode

发布到AWS Marketplace(维护者)

要更新一键部署模板:

python publish.py --publish-marketplace

此命令会打包应用程序并上传到S3,以便进行一键部署。

注意:目前需要使用us-east-1(Nova多模态嵌入)。当其他区域可用时,可使用 --region <region>

致谢

本项目受到以下项目的启发:

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端