内容
# 社交AI RAG 代理
一个全栈式AI助手,支持PDF文档摄入、语义问答、语音交互和混合网络搜索,使用React、Node.js、LangChain、OpenAI API和基于MCP的工具集成。
## 功能特点
- 上传PDF文档并基于其内容提问
- 使用检索增强生成(RAG)管道生成上下文感知答案
- 使用LangChain进行文档处理、分割、检索和LLM编排
- 通过React语音库支持语音输入和文本转语音响应
- 集成基于MCP的网络搜索与SerpAPI,结合文档检索和外部搜索结果
- 提供React前端和Express后端进行全栈交互
## 技术栈
**前端**
- React
- Ant Design
- Axios
- react-speech-recognition
- speak-tts
**后端**
- Node.js
- Express
- LangChain
- OpenAI API
- Model Context Protocol SDK
- SerpAPI
- Multer
- pdf-parse
## 架构
```text
用户
↓
React 前端
↓
Express API 服务器
↓
PDF 上传 / 查询处理器
↓
LangChain RAG 管道
↓
OpenAI API + MCP 网络搜索
↓
响应返回到前端
```
## 关键实现细节
- 构建了一个React前端,用于PDF上传、基于聊天的问答、语音输入和文本转语音交互。
- 实现了一个Express后端,用于处理文件上传、API路由和AI查询编排。
- 使用LangChain处理PDF文本,将文档分成块,并生成上下文感知响应。
- 集成OpenAI API用于语言模型响应,通过基于MCP的工具与SerpAPI集成,用于外部网络搜索。
- 将前端和后端依赖项分开,以支持独立开发和部署。
## 项目结构
```text
social-ai-rag-agent/
public/
src/
components/
ChatComponent.js
PdfUploader.js
RenderQA.js
App.js
index.js
server/
server.js
chat.js
chat-mcp.js
mcp-server.js
uploads/
.env.example
package.json
package.json
README.md
```
## 入门指南
### 1. 克隆仓库
```bash
git clone https://github.com/rogerthedager/social-ai-rag-agent.git
cd social-ai-rag-agent
```
### 2. 安装前端依赖项
```bash
npm install
```
### 3. 安装后端依赖项
```bash
cd server
npm install
cd ..
```
### 4. 配置环境变量
在`server/`目录内创建一个`.env`文件:
```env
OPENAI_API_KEY=your_openai_api_key_here
SERPAPI_API_KEY=your_serpapi_key_here
PORT=5001
```
### 5. 运行应用程序
要同时启动前端和后端:
```bash
npm run dev
```
或者单独运行它们。
前端:
```bash
npm start
```
后端:
```bash
cd server
npm start
```
前端运行在:
```text
http://localhost:3000
```
后端运行在:
```text
http://localhost:5001
```
## 主要API端点
### 上传PDF
```http
POST /upload
```
上传PDF文档进行处理。
### 提问
```http
GET /chat?question=your_question_here
```
使用文档上下文和可选的网络搜索返回AI生成的答案。
## 截图
### 主界面
<img width="1650" height="964" alt="image" src="https://github.com/user-attachments/assets/ac0d4571-cb31-4ade-8c96-d2663ffb3163" />
### PDF上传
<img width="1633" height="978" alt="image" src="https://github.com/user-attachments/assets/b502340a-0764-4ecd-9df9-d686347d5f1d" />
### AI响应
<img width="1739" height="1202" alt="image" src="https://github.com/user-attachments/assets/5ffa3644-c15b-47fe-9b1f-bff3d5eac497" />
## 我学到了什么
- 使用React和Express构建了全栈AI应用程序
- 实现PDF摄入和基于文档的语义搜索
- 使用LangChain构建检索增强生成工作流
- 通过MCP和SerpAPI集成外部工具
- 提高了对API编排、环境配置和AI驱动应用程序设计的理解
## 未来的改进
- 添加持久向量数据库存储
- 添加用户身份验证
- 添加聊天历史记录
- 改进文件验证和错误处理
- 使用云服务部署前端和后端