Skip to main content
Glama
Shruti-Gorhe

enterprise-knowledge-mcp

by Shruti-Gorhe

企业知识助手

一个智能体AI企业知识助手,使用RAG、LangGraph、MCP、RAGAS、Ollama和LangSmith回答企业政策文档中的问题。

该系统从企业PDF中检索相关信息,使用LangGraph工作流生成基于事实的响应,使用RAGAS评估响应,并通过LangSmith提供可观测性。


1. 项目概述

企业知识助手旨在使用企业文档中包含的信息回答自然语言问题。

该应用不依赖LLM的预训练知识,而是采用检索增强生成工作流:

  1. 加载企业PDF文档。

  2. 将文档拆分为更小的块。

  3. 将块转换为嵌入向量。

  4. 将嵌入向量存储在ChromaDB中。

  5. 将用户问题与知识库进行语义匹配。

  6. LangGraph检索代理通过MCP集成获取相关上下文。

  7. 响应代理基于检索到的上下文生成答案。

  8. 评估代理使用RAGAS评估生成的答案。

  9. LangSmith提供端到端追踪和可观测性。

知识来源

该项目使用以下企业文档:

  • Remote_Work_Policy.pdf

  • Employee_Handbook.pdf


Related MCP server: Corporate Tools MCP Server

2. 主要特性

  • 企业文档问答

  • 检索增强生成(RAG)

  • 企业文档语义搜索

  • ChromaDB向量数据库

  • HuggingFace嵌入向量

  • LangGraph代理编排

  • 自定义MCP服务器

  • 基于MCP工具的企业知识检索

  • LangGraph检索代理主动使用MCP

  • Ollama LLM推理

  • 使用gpt-oss:120b-cloud生成响应

  • RAGAS评估

  • 忠实度评估

  • 答案相关性评估

  • LangSmith追踪和可观测性

  • 逐节点LangGraph执行可视化

  • 来源归属

  • 模块化Python架构


3. 架构概览

flowchart TD
    A[User Question] --> B[LangGraph Orchestrator]
    B --> C[Retriever Agent]
    C --> D[MCP Client]
    D --> E[Custom MCP Server]
    E --> F[search_enterprise_knowledge]
    F --> G[ChromaDB Vector Search]
    G --> H[Relevant Document Chunks]
    H --> C
    C --> I[Response Agent]
    I --> J[gpt-oss:120b-cloud]
    J --> K[Evaluator Agent]
    K --> L[RAGAS]
    L --> M[Final Answer + Evaluation]
    B -. tracing .-> N[LangSmith]

高层流程

User Question
      |
      v
LangGraph
      |
      v
Retriever Agent
      |
      v
MCP Client
      |
      v
MCP Server
      |
      v
search_enterprise_knowledge
      |
      v
ChromaDB
      |
      v
Retrieved Context
      |
      v
Response Agent
      |
      v
gpt-oss:120b-cloud
      |
      v
Evaluator Agent
      |
      v
RAGAS
      |
      v
Final Answer

4. 技术栈

技术 用途


Python 核心应用 LangChain LLM和RAG组件 LangGraph 代理工作流编排 ChromaDB 向量数据库 HuggingFace 文档嵌入向量 Ollama LLM推理接口 gpt-oss:120b-cloud 响应生成 qwen3:4b 评估模型 RAGAS RAG评估 MCP 基于工具的知识访问 LangSmith 可观测性和追踪 PyPDF PDF文档加载 python-dotenv 环境配置


5. 项目结构

enterprise-knowledge-assistant/
│
├── data/
│   ├── Remote_Work_Policy.pdf
│   └── Employee_Handbook.pdf
│
├── chroma_db/
│
├── mcp_server/
│   └── server.py
│
├── src/
│   ├── agents/
│   │   ├── retriever_agent.py
│   │   ├── response_agent.py
│   │   └── evaluator_agent.py
│   │
│   ├── rag/
│   │   ├── loader.py
│   │   ├── embeddings.py
│   │   ├── vectorstore.py
│   │   └── retriever.py
│   │
│   ├── graph.py
│   ├── state.py
│   └── config.py
│
├── scripts/
│   ├── ingest.py
│   └── run.py
│
├── screenshots/
│   ├── EKA1.png
│   ├── EKA2.png
│   ├── EKA3.png
│   ├── EKA4.png
│   ├── EKA5.png
│   ├── EKA6.png
│   └── EKA7.png
│
├── .env
├── .gitignore
├── requirements.txt
└── README.md

.env保持在源代码控制之外。API密钥和机密信息绝不能提交到GitHub。


6. RAG设计

6.1 文档来源

知识库包含企业PDF文档:

Remote_Work_Policy.pdf
Employee_Handbook.pdf
Leave_Policy.pdf

PDF使用pypdf加载。

每个页面都带有来源和页码元数据进行处理,以便将检索到的信息与其来源文档关联。


6.2 文档加载

摄取管道为:

PDF Documents
      |
      v
PyPDF
      |
      v
Page-level Text Extraction
      |
      v
Source + Page Metadata

加载器逐页提取文本并存储:

  • 文档文本

  • 来源文件名

  • 页码


6.3 分块策略

该项目使用RecursiveCharacterTextSplitter

当前配置:

chunk_size    = 800
chunk_overlap = 120

重叠有助于保留相邻块之间的上下文。

分块有助于:

  • 提高检索精度

  • 减少不必要的上下文

  • 保持提示词可控

  • 保留有意义的政策章节


6.4 嵌入模型

该项目使用:

BAAI/bge-small-en-v1.5

通过HuggingFaceEmbeddings实现。

嵌入向量在本地使用CPU配置生成,并在相似度搜索前进行归一化。


6.5 向量数据库

该项目使用:

ChromaDB

集合:

enterprise_knowledge

持久化向量数据库:

./chroma_db

6.6 检索

检索器对ChromaDB执行语义相似度搜索。

当前默认检索数量为:

TOP_K = 4

检索到的块作为上下文传递给响应代理。


7. LangGraph设计

LangGraph编排智能体AI工作流。

START
  |
  v
Retriever Agent
  |
  v
Response Agent
  |
  v
Evaluator Agent
  |
  v
END

7.1 节点1 --- 检索代理

职责

为用户的问题检索相关的企业知识。

处理过程

Question
   |
   v
MCP Client
   |
   v
MCP Server
   |
   v
search_enterprise_knowledge
   |
   v
RAG / ChromaDB
   |
   v
Relevant Context

输出

  • 检索到的上下文

  • 来源信息

检索代理在正常LangGraph执行期间主动调用MCP工具。


7.2 节点2 --- 响应代理

职责

使用用户问题和检索到的企业上下文生成最终答案。

模型

gpt-oss:120b-cloud

输入

  • 用户问题

  • 检索到的上下文

输出

基于事实的自然语言响应。


7.3 节点3 --- 评估代理

职责

评估生成的答案。

指标

  • 忠实度

  • 答案相关性

评分和解释被添加到最终应用结果中。


8. MCP集成

该项目包含一个用于企业知识检索的自定义MCP服务器

MCP服务器

mcp_server/server.py

MCP服务器使用MCP Python SDK实现。

MCP工具

search_enterprise_knowledge

使用自然语言查询搜索企业知识库。

示例:

search_enterprise_knowledge(
    query="What are the key requirements for employees working remotely?"
)

get_document_sources

返回可用的企业文档来源。


8.1 LangGraph主动使用MCP

这是项目的关键要求。

MCP集成在正常LangGraph执行期间被主动使用。它不仅仅是独立的服务器。

执行流程为:

LangGraph Retriever Agent
          |
          v
      MCP Client
          |
          v
      MCP Server
          |
          v
search_enterprise_knowledge
          |
          v
       RAG Search
          |
          v
 Retrieved Context

应用输出明确确认了调用:

NODE 1: RETRIEVER AGENT

Calling MCP tool: search_enterprise_knowledge
MCP retrieval completed.

这证明LangGraph节点在执行期间主动使用了MCP集成。


8.2 验证MCP工具

从项目根目录:

python -c "import asyncio; from mcp_server.server import mcp; tools=asyncio.run(mcp.list_tools()); print([t.name for t in tools])"

预期输出:

['search_enterprise_knowledge', 'get_document_sources']

9. RAGAS评估

RAGAS评估生成响应的质量。

收集的指标

忠实度

衡量生成的答案是否得到检索上下文的支持。

答案相关性

衡量生成的响应是否回答了用户的问题。

评估流程

Retrieved Context
       |
       v
Generated Answer
       |
       +----------------------+
       |                      |
       v                      v
Faithfulness          Answer Relevancy
       |                      |
       +----------+-----------+
                  |
                  v
             RAGAS Result

评估示例

最近一次成功的应用执行产生:

Faithfulness: 0.9500
Answer Relevancy: 0.9500
Interpretation: Excellent

评分可能因问题、检索到的上下文、生成的响应、评估模型和评估条件而异。


10. LangSmith可观测性

LangSmith为智能体AI工作流提供可观测性。

它可以检查:

  • LangGraph执行

  • 各个图节点

  • LLM调用

  • 输入和输出

  • 执行延迟

  • 评估结果

  • 工作流行为

示例配置:

LANGSMITH_TRACING=true
LANGSMITH_API_KEY=<your-langsmith-api-key>
LANGSMITH_PROJECT=enterprise-knowledge-assistant

不要将API密钥提交到GitHub。


11. 设置说明

前提条件

  • Python 3.10+

  • Ollama

  • Git

创建虚拟环境

Windows

python -m venv venv
venv\Scripts\activate

Linux/macOS

python3 -m venv venv
source venv/bin/activate

安装依赖

python -m pip install -r requirements.txt

配置环境

在项目根目录创建.env

OLLAMA_BASE_URL=http://localhost:11434

LLM_MODEL=gpt-oss:120b-cloud
EVALUATOR_MODEL=qwen3:4b

EMBEDDING_MODEL=BAAI/bge-small-en-v1.5

VECTOR_DB_PATH=./chroma_db
COLLECTION_NAME=enterprise_knowledge
TOP_K=4

LANGSMITH_TRACING=true
LANGSMITH_API_KEY=<your-langsmith-api-key>
LANGSMITH_PROJECT=enterprise-knowledge-assistant

12. 文档摄取

将企业PDF放入:

data/
├── Remote_Work_Policy.pdf
└── Employee_Handbook.pdf

运行:

python -m scripts.ingest

摄取管道为:

PDF
 |
 v
Text Extraction
 |
 v
Chunking
 |
 v
Embedding Generation
 |
 v
ChromaDB

13. 运行应用

摄取之后:

python -m scripts.run

您将看到:

============================================================
ENTERPRISE KNOWLEDGE ASSISTANT
============================================================

Ask your question:

输入一个自然语言问题。


14. 示例问题

What are the key requirements for employees working remotely?
What is the remote work policy?
What are the rules regarding working from another city or country?
What information security requirements apply to remote workers?
What should an employee do if internet or power issues prevent them from working remotely?

15. 预期执行

一次成功的运行遵循以下顺序:

============================================================
NODE 1: RETRIEVER AGENT
============================================================

Calling MCP tool: search_enterprise_knowledge
MCP retrieval completed.

============================================================
NODE 2: RESPONSE AGENT
============================================================

Generated answer:
...

============================================================
NODE 3: EVALUATOR AGENT
============================================================

Running local evaluation...

EVALUATION RESULTS
----------------------------------------
Faithfulness: 0.9500
Answer Relevancy: 0.9500
Interpretation: Excellent

最终结果包含:

  • 问题

  • 生成的答案

  • 来源

  • RAGAS评分

  • 评估解释


16. 证据和截图

将所有截图放入screenshots/目录。

EKA1 --- LangSmith可观测性

展示LangGraph工作流的LangSmith追踪和可观测性。

EKA1 - LangSmith可观测性

EKA2 --- 应用启动

展示应用启动和用户问题。

EKA2 - 应用启动

EKA3 --- RAGAS评估结果

展示RAGAS评估结果。

EKA3 - RAGAS评估

EKA4 --- 最终应用输出

展示应用生成的最终答案。

EKA4 - 最终输出

EKA5 --- MCP工具调用

展示检索代理调用:

Calling MCP tool: search_enterprise_knowledge
MCP retrieval completed.

这是MCP在图执行期间被主动使用的直接证据。

EKA5 - MCP工具调用

EKA6 --- RAGAS评估和最终结果

展示评估代理、忠实度、答案相关性、解释和生成的结果。

EKA6 - RAGAS评估

EKA7 --- 最终输出、来源和RAGAS

展示最终答案、MCP来源信息和RAGAS评分。

EKA7 - 最终输出和RAGAS


17. 需求符合性

该项目在RAG、LangGraph、MCP、评估、可观测性和最终响应生成方面满足指定的企业知识助手需求。

需求

状态

实现

企业知识来源

已满足

使用PyPDF加载企业PDF文档,包括Remote_Work_Policy.pdfEmployee_Handbook.pdf,并保留来源和页码元数据。

RAG实现

已满足

文档使用递归文本拆分进行分块(chunk_size=800chunk_overlap=120),使用BAAI/bge-small-en-v1.5生成嵌入向量,存储在ChromaDB中,通过语义搜索检索,并传递给LLM生成基于事实的响应。

LangGraph

已满足

一个StateGraph使用共享状态编排检索代理 → 响应代理 → 评估代理工作流。

MCP集成

已满足

自定义MCP服务器暴露search_enterprise_knowledgeget_document_sources。LangGraph检索代理在执行期间主动调用MCP工具检索企业知识。

RAGAS评估

已满足

评估代理计算忠实度和答案相关性,并显示评估结果和解释。示例结果:0.95忠实度,0.95答案相关性 — 优秀

可观测性

已满足

LangSmith追踪提供对LangGraph执行、各个节点、LLM调用、输入、输出、延迟、检索到的上下文和评估结果的可视性。

图执行追踪

已满足

在应用输出和LangSmith中均捕获了检索代理、响应代理和评估代理的逐节点执行。

最终应用输出

已满足

应用生成基于事实的最终答案,包含用户问题、生成的响应、来源信息、RAGAS评分和评估解释。

总体状态

所有指定的项目需求均已实现并满足。

完整工作流为:

企业PDF → RAG检索 → MCP工具 → LangGraph智能体 → LLM响应 → RAGAS评估 → LangSmith可观测性 → 最终输出

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Your company's brain for AI agents. Cited, permission-aware knowledge across every system.

  • Shared, permission-aware company context for AI agents, with provenance, approvals and audit.

  • Search your knowledge bases from any AI assistant using hybrid RAG.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Shruti-Gorhe/enterprise-knowledge-assistant'

If you have feedback or need assistance with the MCP directory API, please join our Discord server