聊天机器人RAG系统
A. R埃特里瓦尔A.强化 G一代聊天机器人系统 微型宇航员, LangChain4j,以及 没有 用于本地LLM推理。该系统支持PDF文档索引、通过WebSocket进行实时聊天以及MCP兼容工具,以增强AI功能。
🏗️ 架构概述
这是一个干净、模块化的基于Micronaut的多模块Gradle项目,针对在单独的 图形处理器 (生成型人工智能)和 中央处理器 (代理AI)vast.AI上的实例。
项目结构
chatbot-rag/
├── gradle/ # Gradle wrapper & build system
├── gradlew, gradlew.bat # Build scripts
├── build.gradle # Root configuration
├── settings.gradle # Project settings
├── modules/ # 🎯 All source modules organized here
│ ├── core/ # Domain models & vector store services
│ ├── document-processor/ # PDF/text processing with Apache Tika
│ ├── ai-engine/ # Ollama integration & RAG services
│ ├── chatbot-api/ # Main Micronaut REST/WebSocket application
│ ├── chatbot-frontend/ # Static web assets (HTML/CSS/JS)
│ └── tools/ # MCP-compatible tools
└── docker/ # Deployment configurations
├── generative/ # GPU instance deployment
└── agentic/ # CPU instance deployment模块依赖
graph TD
API[chatbot-api] --> CORE[core]
API --> PROCESSOR[document-processor]
API --> AI[ai-engine]
API --> TOOLS[tools]
PROCESSOR --> CORE
AI --> CORE
TOOLS --> CORE
CORE --> LangChain4j
CORE --> ChromaDB
AI --> Ollama
PROCESSOR --> Tika🚀 快速开始
先决条件
- Java 17+ (建议使用OpenJDK)
- 等级9.0+ (包括包装)
- 码头工人 (用于部署)
- 没有 (用于本地LLM推理)
构建与运行
# Clone the repository
git clone
cd chatbot-rag
# Build all modules
./gradlew build
# Run the main application
./gradlew :modules:chatbot-api:run
# Access the web interface
open http://localhost:8080开发命令
| 命令 | 描述 |
|---|---|
./gradlew build | 构建所有模块并运行测试 |
./gradlew test | 跨模块运行所有测试 |
./gradlew clean | 清理构建工件 |
./gradlew :modules:chatbot-api:run | 启动主应用程序(端口8080) |
./gradlew :modules:MODULE_NAME:build | 构建特定模块 |
🧩 模块详细信息
核心模块 (modules/core/)
域模型和矢量存储服务
- 领域模型:
Document,ChatMessage,SearchResult - 服务:
DocumentService,EmbeddingService,VectorStoreService - 配置:ChromaDB矢量存储,嵌入模型
- 依赖项:LangChain4j,反应堆堆芯,Micronaut DI
文档处理器 (modules/document-processor/)
PDF/文本处理与智能分块
- 特性:支持多种格式(PDF、TXT、HTML、Word)
- 处理:用于元数据提取的Apache Tika
- 组块:语义、固定大小、基于句子的策略
- 依赖项Apache Tika,用于网页抓取的JSoup
AI引擎 (modules/ai-engine/)
Ollama集成和RAG逻辑
- 服务:
ChatService,OllamaService,RAGService - 特性:本地LLM推理,动态提示构建
- 配置:可配置的相关性阈值、上下文限制
- 依赖项:LangChain4j Ollama,Micronaut HTTP客户端
聊天机器人 API (modules/chatbot-api/)
Micronaut的主要应用
- 控制器:REST Chat API,文档管理
- 特性:WebSocket实时聊天,文件上传
- 端点:
/api/chat,/api/documents - 依赖项:所有其他模块,Micronaut网络堆栈
前端 (modules/chatbot-frontend/)
静态网络资产
- 资产:用于聊天机器人界面的HTML/CSS/JS
- 特性:WebSocket客户端、文档上传、系统信息
- 样式:采用现代CSS的响应式设计
工具 (modules/tools/)
MCP兼容工具
- 文件搜索工具:本地文件系统搜索和分析
- 网络搜索工具:使用JSoup进行网络抓取
- 系统信息工具:使用OSHI进行系统监控
- 数据库工具:SQL查询功能(H2)
🎯 技术栈
| 组件 | 技术 | 版本 |
|---|---|---|
| 框架 | 微距探测器 | 4.3.5 |
| 语言 | Java | 17 |
| 人工智能/法学硕士 | 朗链4j+奥利玛 | 0.35.0 |
| 矢量存储 | ChromaDB | 最新 |
| 文档处理 | Apache Tika+PDFBox | 2.9.1 |
| 前端 | HTML/CSS/JS+WebSocket | - |
| 构建系统 | Gradle多模块 | 9.0+ |
| 部署 | Docker+Vast.ai | - |
🔧 配置
应用程序配置文件
系统支持两种部署配置文件:
generative:GPU实例配置文件(Ollama+矢量存储+RAG)agentic:CPU实例配置文件(API+前端+工具)
关键配置属性
# Core module configuration
core:
vector-store:
host: localhost
port: 8000
collection: documents
dimension: 384
embedding:
model: sentence-transformers/all-MiniLM-L6-v2
# AI engine configuration
ai:
ollama:
host: localhost
port: 11434
default-model: llama3.2
timeout: 60000
rag:
max-context-results: 5
relevance-threshold: 0.7
max-context-length: 4000🐳 部署
地方发展
# Start Ollama (if not running)
ollama serve
# Pull a model (example)
ollama pull llama3.2
# Start ChromaDB (Docker)
docker run -p 8000:8000 chromadb/chroma
# Run the application
./gradlew :modules:chatbot-api:runDocker部署
# Build for different deployment profiles
./gradlew buildGenerative # GPU-intensive deployment
./gradlew buildAgentic # CPU-based deployment
# Build Docker images
./gradlew dockerBuildAll
# Deploy to Vast.ai
./gradlew deployVastAI \
-Dgenerative.instance.id=12345 \
-Dagentic.instance.id=67890 \
-Dgenerative.host=1.2.3.4Vast.ai建筑
生成式AI实例(GPU)
- 硬件:RTX 4090,24GB VRAM,8+CPU内核,32GB RAM
- 服务:Ollama+LLM模型、ChromaDB矢量存储、RAG处理
- 港口电话:8080(API),11434(接口)
代理AI实例(CPU)
- 硬件:4+CPU内核,8GB RAM
- 服务:聊天机器人API+前端,MCP工具,WebSocket处理程序
- 港口:8080(Web用户界面),80/443(Nginx)
🧪 测试
# Run all tests
./gradlew test
# Run tests for specific module
./gradlew :modules:core:test
# Run with coverage
./gradlew test jacocoTestReport📖 API文档
REST端点
|方法|端点|描述| |----------|---------------------------------|------------- -------------| | POST | /api/chat |发送聊天消息| | GET | /api/chat/{sessionId}/history |获取对话历史记录| | DELETE | /api/chat/{sessionId} |清晰的对话| | GET | /api/documents |列出所有文件| | GET | /api/documents/{id} |获取特定文档| | DELETE | /api/documents/{id} |删除文档|
网络套接字
- 端点:
/ws/chat - 目的:实时聊天通信
- 格式:JSON消息
ChatRequest/ChatResponse
🛠️ 发展
添加新模块
- 在中创建模块目录
modules/ - 将模块添加到
settings.gradle - 在模块中配置依赖关系
build.gradle - 更新根目录
build.gradle如有需要
代码的风格
- Java:遵循标准Java约定
- 依赖项:使用
:modules:module-name格式 - 配置:使用Micronaut的配置注入
- 测试:带有Micronaut测试的JUnit5
🤝 贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 添加新功能的测试
- 跑
./gradlew build确保一切顺利 - 提交拉取请求
📄 许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
🔗 链接
______________________________________________________________________
内置于❤️ 使用Micronaut、LangChain4j和Ollama
