# smart-rag-java **Repository Path**: cybdev/smart-rag-java ## Basic Information - **Project Name**: smart-rag-java - **Description**: Smart RAG Java 是一个企业级 RAG(Retrieval Augmented Generation)框架,使用 Spring Boot + Qdrant + OpenAI/DeepSeek/Qwen 构建,帮助你在项目中快速集成“基于私有知识库的 AI 问答能力”。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2025-12-13 - **Last Updated**: 2025-12-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Smart RAG Java > A lightweight, production-ready RAG engine powered by Spring Boot + Qdrant + LLMs. Smart RAG Java 是一个企业级 RAG(Retrieval Augmented Generation)框架,使用 Spring Boot + Qdrant + OpenAI/DeepSeek/Qwen 构建,帮助你在项目中快速集成“基于私有知识库的 AI 问答能力”。 ## ✨ Features 📄 文件上传(PDF/TXT/DOCX) 🔍 向量化存储(Qdrant) 🧩 Chunking + Embedding 🤖 RAG Pipeline(检索增强生成) 🗂 文档元数据管理 🧵 多轮对话支持 📈 可扩展架构(Kafka / Redis / MySQL) 🧠 支持云端模型和本地模型 🏗️ Architecture ``` User -> rag-api -> rag-core -> rag-store -> Qdrant ↓ OpenAI/DeepSeek ``` ## 📦 Install & Run 1. 启动 Qdrant ``` docker compose -f ./docker/qdrant-docker-compose.yml up -d ``` 启动完成之后可以通过 http://localhost:6333 访问 Qdrant 控制台。 2. 启动 Spring Boot ``` cd rag-api ./mvnw spring-boot:run ``` ## 💬 多轮对话与历史存储(新增) 本项目现在支持多轮对话并将历史对话持久化到轻量数据库(默认 H2 内存数据库)。 主要端点: - POST /api/sessions?seed={seed} -> 创建会话,返回 sessionId - POST /api/sessions/{sessionId}/messages -> 添加一条消息(role: USER|ASSISTANT|SYSTEM),可选参数 reply=true 会触发模型回复并保存 - GET /api/sessions/{sessionId}/messages?limit=100 -> 获取会话历史 默认数据库配置(见 rag-api/src/main/resources/application.yml)使用内存 H2: ``` spring.datasource.url=jdbc:h2:mem:ragdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE spring.jpa.hibernate.ddl-auto=update ``` 如果你想改为文件持久化 H2: ``` spring.datasource.url=jdbc:h2:file:./data/ragdb;DB_CLOSE_ON_EXIT=FALSE ``` 或切换到 SQLite(需要在父 pom 中添加 org.xerial:sqlite-jdbc 依赖,并在 application.yml 中设置): ``` spring.datasource.url=jdbc:sqlite:./data/rag.sqlite spring.jpa.database-platform=org.hibernate.dialect.SQLiteDialect ``` ## 🚀 Quick Start 上传文档 ``` POST /ingest Content-Type: multipart/form-data ``` 提问 ``` POST /ask { "query": "介绍一下合同发票流程", "conversationId": "test" } ``` ## 📆 Roadmap - 基础 RAG 管道 - 支持 URL 抓取 - 支持 Excel 解析 - Kafka 异步解析 - 本地模型(Qwen Mini) - Web UI 管理界面 ## 项目结构 ``` smart-rag-java ├── README.md ├── docker │ └── qdrant-docker-compose.yml ├── rag-api // 提供 REST API 层 │ ├── src/main/java/com/smartrag/api │ └── build.gradle / pom.xml ├── rag-core // RAG 核心逻辑(管道、检索、推理) │ ├── src/main/java/com/smartrag/core └── rag-ingest // 文档解析、分段、元信息处理 │ ├── src/main/java/com/smartrag/ingest └── rag-store // 向量数据库(Qdrant)访问层 │ ├── src/main/java/com/smartrag/store ``` ## 模块职责说明 rag-api - 上传文件 API:POST /ingest - 提问 API:POST /ask - 文档管理 API rag-ingest - PDF/Word/Text 解析 - chunking(段落切分) - 生成 Embedding 调用请求 rag-store - Qdrant 的向量写入、检索 - Collection 管理 - 元数据结构定义 rag-core - RAG 主流程: - Query Embedding - Vector Search - Prompt 构造 - 调用 LLM(OpenAI/DeepSeek/Qwen) - 多轮对话、引用段落处理