检索增强生成聊天机器人

一个基于Godspeed框架构建的检索增强生成(RAG)聊天机器人,利用本地FAISS向量数据库和最新文档提供快速、相关且可追溯的答案。

  • by godspeedsystems
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 godspeedsystems/rag-mcp-server

使用说明

Godspeed RAG聊天机器人

使用 Godspeed框架,旨在使用最新的Godspeed Systems文档智能地响应查询。它利用嵌入和本地FAISS矢量数据库来提供快速、相关和源可追溯的答案。


主要特点

1. 查询处理通过 mcp.handle-query 工具

  • 目的:负责接收用户查询并返回相关上下文和来源的核心组件。
  • 原理:
    • 托管于 stdio 并自动连接到 萨尔蒂 助理。
    • 当Saarthi中的“Godspeed模式”被激活时,用户查询会被转发到此工具。
    • 该工具在FAISS矢量存储中搜索相关内容并返回:
      • 提取的上下文
      • 源文档路径

2. GitHub文档摄取

  • 源: Godspeed文档GitHub回购
  • 原理:
    • 已配置回购URL和分支。
    • 摄入脚本通过GitHub API和SHA哈希比较检查差异,以确定修改的文件。
    • 使用Google Gemini嵌入模型对新的或修改过的文件进行分块和嵌入,然后将其转换为FAISS。

3. FAISS矢量库(本地)

  • 为什么Faiss:
    • FAISS快速高效,特别是在本地存储方面。
    • 与远程矢量数据库相比,最大限度地减少了延迟。
  • 运营:
    • 查找、搜索、删除向量
    • 将文档路径存储为 doc_id 用于高效跟踪文件更改

4. 用户查询HTTP端点

  • 通过HTTP接受用户查询,并实时返回上下文和结果。
  • 可用于测试聊天机器人或将其集成到前端应用程序中。

5. 文档上传HTTP端点

  • 接受原始文档文件以供摄取。
  • 使用SHA比较来避免冗余向量操作。

6. LLM配置HTTP终结点

  • 允许动态配置嵌入/LLM密钥,以实现更好的模块化。
  • 目前支持 谷歌Gemini嵌入.

7. 回购同步的Cron作业

  • 频率:每分钟检查一次。
  • 同步触发器:检测自上次更新以来是否已过去24小时。
  • 行动:如果一天过去了,它会重新获取GitHub数据并重新接收更改的文件。

8. API密钥管理通过 mcp.handle-api-key

  • 整合:API键输入可以通过 萨尔蒂 通过MCP层。
  • 确保嵌入模型的密钥注入安全灵活。

🧱 建筑

                          ┌────────────┐
                          │   Saarthi  │
                          └─────┬──────┘
                                │
                                ▼
                      ┌────────────────────┐
                      │ mcp.handle-query   │◄────┐
                      └────────┬───────────┘     │
                               │                 │
          ┌────────────────────▼────────────┐    │
          │  FAISS Vector Store (Local)     │    │
          └─────────────────────────────────┘    │
                               ▲                 │
        ┌──────────────────────┴────────────┐    │
        │ ingest_and_update_docs.ts         │◄───┘
        └────────────────┬──────────────────┘
                         │
       ┌─────────────────▼───────────────────────┐
       │ GitHub Repo: gs-documentation           │
       └─────────────────────────────────────────┘

🚀 运行项目

干净启动(Windows)

start_clean.bat

干净启动(Linux/macOS)

./start_clean.sh

两个脚本:

  • 杀死端口10947上的任何进程
  • 跑 godspeed serve 启动后端

局限性

嵌入模型限制

  • 目前仅支持 谷歌Gemini嵌入
  • 其他型号如 OpenAI, 凝聚等尚未集成

当地公平指数

  • 优点:快速高效
  • 缺点:不适用于分布式或云原生架构

单一文档来源

  • 目前绑定到特定的GitHub仓库(gs-documentation)
  • 没有对多个源或域的内置支持

无GUI/Web界面

  • 通过CLI、MCP或HTTP端点进行操作
  • 没有与机器人交互的默认前端

🧪 测试场景

  • 通过Saarthi和 mcp.handle-query
  • 通过GitHub同步(cron作业)更新文档
  • 使用SHA和GitHub diffs进行文件级更改检测
  • 通过HTTP端点接收文档

🧩 未来改进

  • 🧠 嵌入模型选择和模块化配置
  • 📊 改进日志记录和使用情况分析