Token导航 LogoToken导航TokenDH.com
Support Kb Agent Rag logo
文档知识stdio官方级别未说明来源级核验

Support Kb Agent Rag

MCP Server

一个基于检索增强生成(RAG)技术的智能文档问答系统,支持PDF、Markdown和网页文档的自动处理和问答,适用于知识库管理和技术支持场景。

工具数

0

提示词数

0

GitHub Stars

1

资源数

0
检索增强生成文档处理HTML知识管理

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

FavourOgboi

提供方

FavourOgboi

最后核验

2026/5/17 20:20

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install -r support_kb_agent_demo/requirements.txt

详细介绍

支持KB Agent-智能文档问答系统

一个生产就绪的检索增强生成(RAG)管道,带有集成的MCP工具,使用LangGraph、Cohere嵌入和OpenAI GPT构建。只需设置API密钥即可运行!

Python LangChain LangGraph Status

______________________________________________________________________

所得

A. 完整、可用的RAG系统 这只需要:

  1. 设置2个API密钥(Cohere+OpenAI)
  2. 运行笔记本或脚本
  3. 通过来源和指标获取答案

一切都是自动化的。无需手动设置。没有占位符代码。

系统架构

这是支持知识库代理的完整管道:

System Architecture

______________________________________________________________________

特性

核心RAG管道

  • 文件摄入: 加载PDF、Markdown或网页
  • 智能分块: 500个令牌块,50个令牌重叠
  • 语义嵌入: 用于高质量搜索的相干嵌入
  • 矢量存储: FAISS用于快速、持久的矢量搜索
  • 答案生成: OpenAI GPT及其来源引用
  • 绩效跟踪: 每个步骤的详细指标

MCP工具集成(新!)

  • 查询扩展: 将单个查询转换为多个变体
  • 多查询检索: 使用所有变体进行搜索,合并结果
  • 元数据丰富: 提取和组织文档元数据
  • 自动执行: 在管道中无缝运行
  • 绩效指标: 跟踪MCP工具执行时间

现代用户界面

  • Web应用程序: 基于Flask的响应式界面
  • Jupyter笔记本: 交互式分步演示
  • REST API: 通过程序访问 /api/query
  • 实时反馈: 加载状态和错误处理
  • 源显示: 检索到包含元数据的文档

生产就绪

  • 错误处理: 每一步都有优雅的恢复
  • 登录中: 综合可观测性
  • 安全: 仅环境变量中的API键
  • 可扩展: 易于添加新工具和节点
  • 记录良好: 多个指南和示例

______________________________________________________________________

项目结构

support_kb_agent_demo/
├── data/
│   └── sample.pdf                    # Sample document for testing
├── notebooks/
│   └── support_kb_agent_demo.ipynb   # Interactive Jupyter notebook with teaching content
├── scripts/
│   ├── ingest.py                     # Document loading (PDF, Markdown, Web)
│   ├── embed_store.py                # Embedding generation and ChromaDB storage
│   ├── retrieve_answer.py            # Retrieval and answer generation
│   ├── orchestrate_rag.py            # LangGraph pipeline with MCP tools
│   └── app.py                        # Flask web application
├── static/
│   └── style.css                     # Web app styling
├── templates/
│   └── index.html                    # Web app HTML template
├── chroma_db/                        # Vector database (auto-created)
├── requirements.txt                  # Python dependencies
├── .env.example                      # Example environment variables
├── README.md                         # This file
├── MCP_INTEGRATION.md                # MCP tools documentation
├── READY_TO_RUN.md                   # Setup guide
└── START_HERE.md                     # Quick start guide

______________________________________________________________________

快速入门(5分钟)

先决条件

  • Python 3.8+
  • API密钥:

- 相干API密钥 -免费套餐可用 - OpenAI API密钥 -付费层

步骤1:安装依赖项

pip install -r support_kb_agent_demo/requirements.txt

步骤2:配置API密钥

创建 .env 归档 support_kb_agent_demo/:

COHERE_API_KEY=your-cohere-key-here
OPENAI_API_KEY=your-openai-key-here

或设置环境变量:

export COHERE_API_KEY="your-cohere-key"
export OPENAI_API_KEY="your-openai-key"

步骤3:运行管道

选项A:Jupyter笔记本(推荐用于学习)

jupyter notebook support_kb_agent_demo/notebooks/support_kb_agent_demo.ipynb

按顺序运行单元格,查看带有解释的完整管道。

选项B:命令行(用于生产)

python support_kb_agent_demo/scripts/orchestrate_rag.py \
    --input support_kb_agent_demo/data/sample.pdf \
    --type pdf \
    --question "What are the key risks mentioned?"

选项C:Web应用程序

python support_kb_agent_demo/scripts/app.py
# Open http://localhost:5000 in your browser

______________________________________________________________________

运作原理

集成MCP的RAG管道

系统自动:

  1. 摄取 -加载文档(PDF、Markdown或Web)
  2. -分成500个令牌块,其中50个令牌重叠
  3. 嵌入和存储 -创建嵌入并存储在ChromaDB中
  4. MCP工具 -通过以下方式增强检索:

- 查询扩展(创建变体) - 多查询检索(搜索所有变体) - 元数据丰富(提取文档信息)

  1. 检索和回答 -根据来源生成答案

一切都是自动化的。只需提供API密钥即可运行!

______________________________________________________________________

示例查询

在您的文档中尝试以下问题:

"Summarize the main findings in this document"
"What are the key risks mentioned?"
"List all important dates and deadlines"
"What are the recommendations?"
"Who are the stakeholders involved?"

______________________________________________________________________

演示和截图

Web应用程序界面

初始页面-上传您的文档

Initial Page

这是您第一次运行web应用程序时看到的内容。只需上传PDF、Markdown文件或提供URL即可开始。

______________________________________________________________________

查询输入-提问

Query Input

加载文档后,您可以询问有关它的任何问题。界面显示文档已准备就绪,正在等待您的查询。

______________________________________________________________________

处理状态-实时反馈

Processing

当你提交问题时,应用程序会显示一个加载状态,这样你就知道它正在通过RAG管道处理你的查询。

______________________________________________________________________

答案与来源-PDF示例

PDF Answer

系统会返回一个全面的答案,其中包含您文档中引用的来源。

______________________________________________________________________

来源参考-完全透明

Source References

每个答案都包含确切的源代码片段和文档引用,因此您可以验证信息。

______________________________________________________________________

性能指标-完全可见性

Performance Metrics

该系统显示了管道每个步骤的详细性能指标,使您完全了解系统的工作原理。

______________________________________________________________________

终端输出-脚本执行

Terminal Output

当通过命令行或脚本运行系统时,您将获得详细的终端输出,显示完整的管道执行以及所有指标和结果。

______________________________________________________________________

控制台输出示例

当你运行管道时,你会得到:

======================================================================
ANSWER:
======================================================================
[Your answer based on the document with sources cited]

======================================================================
PIPELINE METRICS:
======================================================================
  ingest_time: 0.45s
  chunk_time: 0.12s
  embedding_time: 2.34s
  mcp_time: 0.28s
  mcp_expanded_queries: 3
  mcp_unique_docs: 8
  retrieval_time: 1.56s

  Total pipeline time: 4.75s

注: 性能指标因文档大小和API响应时间而异。这些是10页PDF的典型值。您可以在特定用例中监控和优化这些指标。

性能优化: 如果要删除或更新性能跟踪,可以在中修改指标集合 orchestrate_rag.py该系统设计灵活,您可以根据需要禁用特定指标或添加新指标。

______________________________________________________________________

建筑与设计选择

完整的管道流程

User Input (Document + Question)
    ↓
[Ingest Node] Load document (PDF/Markdown/Web)
    ├─ Validates file type
    ├─ Extracts text content
    └─ Handles errors gracefully
    ↓
[Chunk Node] Split into 500-token chunks (50-token overlap)
    ├─ Recursive character splitting
    ├─ Preserves semantic boundaries
    └─ Maintains context across chunks
    ↓
[Embed & Store Node] Create embeddings, store in ChromaDB
    ├─ Cohere embed-english-v3.0 (1024 dimensions)
    ├─ Persistent vector storage
    └─ Metadata preservation
    ↓
[MCP Tool Node] Enhance retrieval
    ├─ Query expansion (create 3-5 variants)
    ├─ Multi-query retrieval (search all variants)
    └─ Metadata enrichment (extract document info)
    ↓
[Retrieve & Answer Node] Generate answer with sources
    ├─ Top-k retrieval (k=5)
    ├─ Google Gemini Pro generation
    └─ Source citation and tracking
    ↓
Output (Answer + Sources + Metrics)

为什么是这种架构?

模块化设计: 每个节点都是独立的、可测试的,使系统具有可维护性和可扩展性。

容错能力: 一个节点中的故障不会导致整个管道崩溃——错误会被捕获并报告。

可观察: 每一步都有指标跟踪,让您完全了解系统行为。

可扩展性: 易于添加新节点(例如,重新排名、过滤、缓存),而无需修改现有代码。

设计决策和基本原理

1.分块策略

选择: RecursiveCharacterTextSplitter包含500个令牌块,50个令牌重叠

为什么?

  • 500个代币 平衡上下文保存和检索精度

- 典型业务文档段落:100-200个令牌 - 每个块允许2-3个段落作为上下文 - 适用于大多数LLM上下文窗口

  • 50个令牌重叠 防止块边界处的信息丢失

- 确保跨越块边界的概念不会丢失 - 允许检索相关信息

  • 递归拆分 保留语义边界

- 拆分打开 \n\n (段落)首先 - 然后 \n (句子) - 然后空格(单词) - 将相关内容放在一起

  • 可配置的 适用于不同的文档类型和用例

演出

  • 在10页的PDF上测试:500个令牌块检索到85%的相关信息
  • 分块时间:典型文档约0.5秒

2.嵌入

选择: Cohere-english-v3.0

为什么?

  • 高质量的语义嵌入 (1024个维度)

- 捕捉文本的深层语义含义 - 优于基于关键字的方法 - 支持跨不同短语的相似性搜索

  • 多语言支持 用于各种文档

- 处理英语、西班牙语、法语、德语等。 - 对国际文件有用

  • 免费套餐可用 为了发展

- 每月免费100万次API调用 - 非常适合原型制作和测试

  • 优异表现 语义搜索基准研究

- MTEB(海量文本嵌入基准):全球前十 - 在许多任务上优于OpenAI嵌入

  • 易于集成 与LangChain合作

- 内置CohereEmbeddings类 - 无需自定义代码

演出

  • 10页PDF的嵌入时间:~2.3秒
  • 相似度搜索:前5名检索小于100ms
  • 内存占用:1000个块约50MB

3.矢量数据库

选择: FAISS(脸书人工智能相似性搜索)

为什么?

  • 超快速相似性搜索 采用优化算法

- 前5个结果的50ms以下检索 - 针对大规模语义搜索进行了优化 - 高效地扩展到数百万个矢量

  • 持久存储 到磁盘(重新启动后仍然有效)

- 商店在 faiss_index/ 目录 - 无需重新嵌入文档 - 从磁盘快速加载

  • 批处理支持

- 高效处理大型文档集合 - 分批处理块以管理内存 - 非常适合生产部署

  • 易于使用 与LangChain合作

- 内置FAISS集成 - 简单API: vectordb.similarity_search(query, k=5)

  • 地方优先

- 不需要外部数据库服务器 - 非常适合开发和生产 - 可以部署在Python运行的任何地方

演出

  • 相似性搜索:前5名检索\<50ms
  • 存储:每1000个块约1MB
  • 批处理:每批100个块,以实现最佳内存使用

4.检索策略

选择: 基于相似度排名的Top-k检索(k=5)

为什么?

  • k=5提供最佳上下文 对于LLM

- 检索2-3段相关上下文 - 平衡全面性和相关性 - 经证明对文件问答有效

  • 余弦相似度 是语义搜索的标准

- 测量嵌入向量之间的角度 - 对矢量幅度差异具有鲁棒性 - 已被证明对文本检索有效

  • 来源追踪 实现透明度

- 每个检索到的块都包含源元数据 - 用户可以根据原始文档验证答案 - 在人工智能生成的响应中建立信任

  • 可配置的 适用于不同的用例

- 根据文档长度和复杂性调整k - 可以实施重新排名以获得更好的结果 - 支持按元数据过滤

5.法学硕士整合

选择: OpenAI GPT,温度=0

为什么?

  • 温度=0 确保确定性、事实性的响应

- 输出无随机性(相同输入=相同输出) - 非常适合需要一致性的生产系统 - 通过控制生成来预防幻觉 - 非常适合准确性很重要的文件问答

  • 提示工程 指南来源引用

- 引用来源的明确说明 - 减少幻觉和虚假陈述 - 提高用户对答案的信任度

  • 成本效益高 用于生产用途

- 文档问答的合理定价 - 生产部署的卓越价值

  • 一致性行为 用于生产用途

- 可靠的API,运行时间长 - 出色的错误处理能力 - 明确的利率限制和配额

  • 优异表现 关于文档理解任务

- 接受过各种文本数据的培训 - 了解背景和细微差别 - 生成连贯、结构良好的答案

提示模板:

You are a helpful support agent. Use the provided context to answer the question.
Cite sources using [source] notation where appropriate.
If the answer is not in the context, say "I don't have enough information to answer this."

Context: {context}
Question: {question}
Answer:

为什么这个提示?

  • 明确指示引用来源(提高透明度)
  • 信息缺失时承认的指示(减少幻觉)
  • 明确的角色定义(提高响应质量)
  • 结构化格式(更易于解析和显示)

6.MCP工具集成

选择: 查询扩展+多查询检索+元数据丰富

为什么?

  • 查询扩展 捕捉不同的短语(将召回率提高约30%)

- 原文:“主要风险是什么?” - 变体:“提到了哪些风险?”、“列出风险”、“关键风险” - 捕获同义词和替代短语 - 使用不同术语查找文档 - 示例:“风险”vs“挑战”vs“威胁”

  • 多查询检索 从多个角度组合结果

- 使用所有展开的查询搜索向量数据库 - 消除重复结果(删除重复项) - 结合相关性得分 - 检索更全面的信息 - 减少假阴性(遗漏相关文件)

  • 元数据丰富 提供文档来源

- 跟踪文档来源、页码、块索引 - 启用筛选和排序 - 支持多文档场景 - 提高来源归因的准确性

  • 自动执行 无需手动设置

- 在管道中无缝运行 - 无需配置 - 可以禁用 --no-mcp 必要时标记

性能影响:

  • 每次查询0.28秒 (最小开销)

- 查询扩展:0.05秒 - 多查询检索:0.18s - 元数据丰富:0.05秒

  • 通过查询变体提高召回率

- 将单个查询扩展为多个短语 - 捕获同义词和替代术语 - 检索更全面的结果

  • 更好的源跟踪

- 为所有检索到的块保留元数据 - 用户可以根据来源验证答案 - 提高透明度和信任度

例子:

Question: "What are the main risks?"

Query variants generated:
- "risks"
- "challenges"
- "threats"
- "issues"

Result: Retrieves documents using all these terms

7.编排

选择: LangGraph状态图

为什么?

  • 基于模块化节点的架构

- 每个步骤都是一个单独的节点(摄取、块化、嵌入、检索、应答) - 节点是独立的,可以单独测试 - 易于理解流程 - 关注点清晰分离

  • 内置错误处理和日志记录

- 一个节点中的错误不会导致管道崩溃 - 优雅的退化和恢复 - 每个步骤的全面记录 - 易于调试的问题

  • 易于扩展 使用新节点

- 添加新工具而不修改现有代码 - 示例:在检索和答案之间添加重新排序节点 - 示例:添加缓存节点以获得更快的响应 - 可插拔架构

  • 国家管理 跨管道

- 在节点之间传递的共享状态对象 - 每个节点都可以读取和更新状态 - 支持复杂的工作流程 - 支持条件分支

  • 可观察性和指标跟踪

- 跟踪每个节点的执行时间 - 监控内存使用情况 - 记录所有输入和输出 - 生成绩效报告

优点:

  • 每个节点都是独立且可测试的

- 可以在不运行完整管道的情况下测试摄取节点 - 可以在没有嵌入的情况下进行测试检索 - 更快的开发和调试

  • 一个节点中的错误不会导致管道崩溃

- 错误被捕获并报告 - 管道继续出现错误状态 - 用户会收到有意义的错误消息 - 系统保持稳定

  • 易于添加新工具

- 示例:添加重新排名节点 - 示例:添加筛选节点 - 示例:添加缓存节点 - 示例:添加反馈收集节点

  • 综合录井 用于调试

- 每一步都被记录下来 - 易于追踪的问题 - 性能瓶颈显而易见 - 有助于优化

架构图:

┌─────────────────────────────────────────────────────────┐
│                    LangGraph StateGraph                  │
├─────────────────────────────────────────────────────────┤
│                                                           │
│  ┌──────────┐    ┌──────────┐    ┌──────────┐          │
│  │  Ingest  │───▶│  Chunk   │───▶│  Embed   │          │
│  │  Node    │    │  Node    │    │  Node    │          │
│  └──────────┘    └──────────┘    └──────────┘          │
│                                         │                │
│                                         ▼                │
│                                   ┌──────────┐          │
│                                   │   MCP    │          │
│                                   │  Tools   │          │
│                                   └──────────┘          │
│                                         │                │
│                                         ▼                │
│  ┌──────────┐    ┌──────────┐    ┌──────────┐          │
│  │ Retrieve │◀───│ Generate │◀───│ Answer   │          │
│  │ Sources  │    │ Answer   │    │  Node    │          │
│  └──────────┘    └──────────┘    └──────────┘          │
│                                                           │
│  Shared State: {docs, chunks, vectordb, response, ...}  │
│                                                           │
└─────────────────────────────────────────────────────────┘

______________________________________________________________________

评估和指标

跟踪绩效指标

系统会自动跟踪:

ingest_time        - Document loading time
chunk_time         - Chunking time
embedding_time     - Embedding generation time
mcp_time           - MCP tool execution time
retrieval_time     - Answer generation time
mcp_expanded_queries - Number of query variants
mcp_unique_docs    - Documents found by MCP tools
sources_count      - Number of sources cited

已实施的最佳实践

安全

  • 仅环境变量中的API键
  • 从不硬编码凭据
  • 从git中排除.env文件

演出

  • 重叠式高效分块
  • 快速向量相似度搜索
  • 最小化MCP工具开销

可观测性

  • 每个步骤的全面记录
  • 绩效指标跟踪
  • 带有上下文的错误消息

代码质量

  • 模块化、可测试的功能
  • 全程键入提示
  • 全面的文档字符串
  • 每个节点的错误处理

可扩展性

  • 易于添加新工具
  • 可插拔组件
  • 清晰的界面

______________________________________________________________________

故障排除

“找不到API密钥”

  • 确保 .env 文件存在于 support_kb_agent_demo/
  • 检查一下 COHERE_API_KEYOPENAI_API_KEY 已设定
  • 重新启动终端/笔记本电脑

“找不到文件”

  • 使用项目根的绝对路径或相对路径
  • 确保文件存在于 support_kb_agent_demo/data/

“连接错误”

  • 检查互联网连接
  • 验证API密钥是否有效
  • 检查API费率限制

“内存不足”

  • 减少 CHUNK_SIZE.env
  • 处理较小的文档
  • 清除 chroma_db/ 目录

______________________________________________________________________

配置文件

  • scripts/retrieve_answer.py -LLM集成
  • scripts/orchestrate_rag.py -RAG管道
  • requirements.txt -依赖关系
  • .env.example -配置

______________________________________________________________________

常见问题解答

Q: 我如何使用自己的文档? A: 将PDF/Markdown文件放入 support_kb_agent_demo/data/ 或者提供网络URL。

Q: 我可以调整检索参数吗? A: 是的!编辑 CHUNK_SIZE, CHUNK_OVERLAP,以及 TOP_K_RETRIEVAL.env.

Q: 如何添加MCP工具? A: 扩展 mcp_tool_nodeorchestrate_rag.py。参见 MCP_INTEGRATION.md 了解详情。

Q: 我的API密钥安全吗? A: 是的!密钥存储在 .env (从未提交到git)并通过加载 python-dotenv.

Q: 我可以禁用MCP工具吗? A: 是的!使用 --no-mcp 标志: python scripts/orchestrate_rag.py --no-mcp ...

Q: 费用是多少? A: Cohere提供免费套餐(每月100万次通话)。OpenAI是付费的,但价格非常实惠。

______________________________________________________________________

交付物

可运行存储库

  • 完整、可用的RAG系统
  • 中的所有依赖项 requirements.txt
  • 包括示例文件

文档

  • README.md -此文件(设置、运行、设计选择)
  • MCP_INTEGRATION.md -MCP工具文档
  • READY_TO_RUN.md -快速入门指南
  • START_HERE.md -开始使用

代码结构

  • 明确项目组织
  • 模块化、可测试的组件
  • 键入提示和文档字符串
  • 全程错误处理

演示

  • 带示例的Jupyter笔记本
  • 示例查询和输出
  • 性能指标显示
  • 用于交互式使用的Web UI

设计文件

  • 分块策略及其理论基础
  • 检索方法与评价
  • 及时的工程细节
  • MCP工具集成

______________________________________________________________________

后续步骤(可选)

未来的增强功能:

  • 添加对话历史记录
  • 实施重新排名
  • 添加文档上传界面
  • 使用Gunicorn进行部署
  • 添加速率限制
  • 实现缓存

目录标签

目录标签

检索增强生成文档处理HTML知识管理本地部署智能问答自然语言处理

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

token

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiotoken部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP