[!WARNING] 重要免责声明 / IMPORTANT DISCLAIMER
本项目仅供技术学习和研究之用,严禁用于任何商业或非法用途。 This project is for educational and research purposes ONLY. Commercial or illegal use is strictly prohibited.
微信聊天记录包含大量个人隐私信息。您在使用本项目时,必须承担所有数据安全和隐私泄露的风险。开发者不对任何数据丢失、泄露或滥用负责。 WeChat chat history contains extensive private information. By using this project, you assume all risks related to data security and privacy breaches. The developers are not responsible for any data loss, leakage, or misuse.
强烈建议您在完全隔离的本地环境中运行本项目,切勿将其部署在任何可公开访问的服务器上。 It is STRONGLY recommended that you run this project in a completely isolated, local environment. DO NOT deploy it on any publicly accessible server.
WeChat RAG Agent 是一个基于检索增强生成(RAG)技术的微信聊天记录智能问答系统。通过向量化微信聊天记录,结合先进的大语言模型,为用户提供基于历史聊天内容的智能问答服务。

现代化的聊天界面,支持实时流式回答和智能聊天记录检索
wechat-rag-agent/
├── agent-web/ # 主Web应用模块 (端口:8080) - 系统编排层
├── agent-datasync/ # 数据同步服务模块 - 向量化处理
├── agent-core/ # 核心RAG功能库 - 嵌入模型和查询处理
└── docker/ # Docker配置文件
模块依赖关系: - agent-web: 主应用,依赖 agent-core 和 agent-datasync - agent-datasync: 依赖 agent-core 进行嵌入向量化 - agent-core: 独立的共享库,无外部模块依赖
sequenceDiagram
participant User as 用户
participant WebApp as agent-web
(端口8080)
participant DataSync as agent-datasync
participant WeChatAPI as 微信API服务
(端口5030)
participant Embedding as SiliconFlow
(向量化)
participant VectorDB as Elasticsearch
participant Redis as Redis
(状态管理)
User->>WebApp: POST /api/vectorization/chatlog/stream
WebApp->>DataSync: 调用ChatlogVectorService
DataSync->>WeChatAPI: 分页请求聊天记录
WeChatAPI-->>DataSync: 返回聊天记录
DataSync->>DataSync: 并行处理(4线程)
DataSync->>Embedding: 批量文本向量化(50条/批)
Embedding-->>DataSync: 返回向量
DataSync->>VectorDB: 存储文档和向量
DataSync->>Redis: 更新同步检查点
DataSync-->>WebApp: 返回处理进度
WebApp-->>User: SSE流式推送进度
sequenceDiagram
participant User as 用户
participant WebApp as agent-web
participant Core as agent-core
participant QueryParser as QueryParser
(查询解析)
participant TimeParser as TimeParser
(时间解析)
participant Embedding as SiliconFlow
(向量化)
participant VectorDB as Elasticsearch
participant Reranker as SiliconFlow
(重排序)
participant LLM as OpenRouter
(大语言模型)
User->>WebApp: GET /api/chat?question=...
WebApp->>Core: 调用Assistant
Core->>QueryParser: 解析查询意图
Core->>TimeParser: 解析时间表达式
Core->>Embedding: 向量化用户问题
Embedding-->>Core: 返回问题向量
Core->>VectorDB: 向量相似度搜索
VectorDB-->>Core: 返回相关文档
Core->>Reranker: 重排序文档
Reranker-->>Core: 返回优化后的文档
Core->>LLM: 构建增强Prompt
LLM-->>Core: 返回最终答案
Core-->>WebApp: 返回结构化响应
WebApp-->>User: 流式响应答案
git clone https://github.com/WechatRagAgent/agent
cd agent
创建环境配置文件:
cd docker/ && cp .env.example .env
编辑 .env 文件,添加您的API密钥:
# ============= AI服务密钥 =============
# 用于解析问题
# 推荐OpenRouter API密钥 (获取地址:https://openrouter.ai/keys)
RAG_PARSE_MODEL_API_KEY=your_openrouter_api_key
# 用于向量化模型和重排序模型服务
# 推荐SiliconFlow API密钥 (获取地址:https://cloud.siliconflow.cn/me/account/ak)
RAG_EMBEDDING_API_KEY=your_siliconflow_api_key
RAG_RERANK_API_KEY=your_siliconflow_api_key
# 启动所有服务 (首次启动需要下载镜像,请耐心等待)
docker-compose up -d
# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs -f wechat-rag-agent
检查服务健康状态:
# 检查应用健康状态
curl http://localhost:8080/actuator/health
# 检查Elasticsearch
curl http://localhost:9200/_cluster/health
# 检查Redis
docker exec redis redis-cli ping
如果所有服务都正常运行,您应该看到类似以下的响应:
{
"status": "UP",
"components": {
"elasticsearch": {"status": "UP"},
"redis": {"status": "UP"}
}
}
curl -X POST "http://localhost:8080/api/vectorization/chatlog/stream" \
-H "Content-Type: application/json" \
-d '{
"talker": "好友昵称",
"time": "2024-01-01~2024-01-31"
}'
支持的时间格式:
- 单日:2024-01-01
- 时间范围:2024-01-01~2024-01-31
该接口返回Server-Sent Events (SSE) 流,实时推送处理进度:
data: {"taskId":"uuid","status":"PROCESSING","processedCount":150,"totalCount":1000,"progress":0.15}
data: {"taskId":"uuid","status":"COMPLETED","processedCount":1000,"totalCount":1000,"progress":1.0}
curl -X DELETE "http://localhost:8080/api/vectorization/progress/{taskId}"
curl -G "http://localhost:8080/api/chat" \
--data-urlencode "question=总结一下最近的工作安排" \
--data-urlencode "modelName=google/gemini-2.5-flash" \
--data-urlencode "apiKey=your-openrouter-api-key"
-H "Accept: text/event-stream"
返回格式兼容OpenAI格式,支持流式输出。
# 健康检查
curl http://localhost:8080/actuator/health
# 系统指标
curl http://localhost:8080/actuator/metrics
# Prometheus指标
curl http://localhost:8080/actuator/prometheus
# 仅启动依赖的基础设施服务
docker-compose up -d elasticsearch redis kibana
# 编译整个项目
mvn clean compile
# 打包项目
mvn clean package -DskipTests
# 运行主应用 (推荐 - 包含完整功能)
mvn spring-boot:run -pl agent-web
# 可选:单独运行数据同步服务进行测试
mvn spring-boot:run -pl agent-datasync
注意:推荐运行 agent-web 模块,它整合了所有功能并提供完整的REST API。
修改配置文件(application.yml)中的API密钥和服务地址。
# 运行所有测试
mvn test
# 运行特定模块测试
mvn test -pl agent-core
项目使用Spring Boot的配置管理,主要配置文件为 application.yml:
# 服务器配置
server:
port: 8080
# Redis配置
spring:
data:
redis:
host: localhost
port: 6379
# 微信API配置
wechat:
chatlog:
base-url: http://127.0.0.1:5030
# RAG相关配置
rag:
# 大语言模型配置
parse-model:
api-key: your-openrouter-api-key
model: google/gemini-2.5-flash
# 向量化模型配置
embedding:
provider: siliconflow
model: BAAI/bge-m3
api-key: your-siliconflow-api-key
base-url: https://api.siliconflow.cn/v1
# 重排序模型配置
rerank:
provider: siliconflow
model: BAAI/bge-reranker-v2-m3
api-key: your-siliconflow-api-key
base-url: https://api.siliconflow.cn/v1
# 向量数据库配置
vector-store:
provider: elasticsearch # 或 chroma
url: http://localhost:9200
collection-name: wechat_chatlog
rag.embedding.provider)rag.rerank.provider)rag.vector-store.provider)rag.parse-model)问题:docker-compose up 执行失败
解决方案:
# 检查Docker服务状态
systemctl status docker
# 检查端口占用
netstat -tulpn | grep -E "(8080|9200|6379)"
# 清理Docker资源
docker system prune -f
docker-compose down --volumes
问题:401 Unauthorized 或向量化失败
解决方案: - 确认OpenRouter和SiliconFlow API密钥的有效性 - 检查API密钥是否正确配置在环境变量中 - 验证API账户余额是否充足
问题:Connection refused 错误
解决方案:
# 检查微信API服务是否运行
curl http://localhost:5030/health
# 检查Docker网络配置
docker network ls
docker network inspect wechat-rag_default
问题:向量存储操作失败
解决方案:
# 检查Elasticsearch状态
curl http://localhost:9200/_cluster/health?pretty
# 查看Elasticsearch日志
docker-compose logs elasticsearch
# 重启Elasticsearch服务
docker-compose restart elasticsearch
问题:容器因内存不足被杀死
解决方案:
# 调整Docker Compose中的内存限制
# 编辑 docker-compose.yml
services:
elasticsearch:
environment:
- "ES_JAVA_OPTS=-Xms2g -Xmx2g" # 增加内存分配
# 查看所有服务日志
docker-compose logs -f
# 查看特定服务日志
docker-compose logs -f wechat-rag-agent
docker-compose logs -f elasticsearch
docker-compose logs -f redis
# 查看应用日志文件
tail -f logs/application.log
我们欢迎社区贡献!请遵循以下指南:
git checkout -b feature/your-feature-namegit commit -am 'Add some feature'git push origin feature/your-feature-name在Issues页面报告问题时,请提供:
本项目采用 MIT License 开源许可证。
感谢以下开源项目和服务:
⚠️ 请再次注意:
隐私保护:本项目处理的微信聊天记录包含极其敏感的个人隐私信息,使用前请确保充分理解相关风险。
本地运行:强烈建议仅在本地隔离环境中运行,不要将包含真实聊天数据的服务暴露到公网。
合规使用:请确保您的使用方式符合当地法律法规和微信用户协议。
数据安全:开发者不对任何数据泄露、丢失或滥用承担责任。
学习目的:本项目仅供技术学习和研究使用,禁止用于任何商业用途。
如果此项目对您有帮助,请给我们一个 ⭐ Star!
Built with ❤️ for learning and research purposes only
$ claude mcp add agent \
-- python -m otcore.mcp_server <graph>