基于 Spring AI 的 RAG (Retrieval-Augmented Generation) 知识库系统,提供文档管理、向量检索和智能问答功能。
AI RAG Knowledge 是一个完整的 RAG 知识库解决方案,集成了文档解析、向量化存储、语义检索和 AI 问答能力,支持从文件上传或 Git 仓库构建知识库。
- 框架: Spring Boot 3.2.3
- AI 框架: Spring AI 0.8.1
- 向量数据库: PgVector (PostgreSQL)
- 缓存: Redis (Redisson)
- AI 模型: OpenAI / Ollama
- 文档解析: Apache Tika
- Git 操作: JGit
- 构建工具: Maven 3.x
- Java 版本: JDK 17
ai-rag-knowledge/
├── xfg-dev-tech-api/ # API 接口定义模块
│ └── src/main/java/ # 接口定义
├── xfg-dev-tech-app/ # 主应用模块
│ ├── src/main/java/ # Java 源代码
│ ├── src/main/resources/ # 配置文件
│ └── pom.xml # Maven 配置
├── xfg-dev-tech-trigger/ # HTTP 接口实现模块
│ ├── src/main/java/ # Controller 层
│ └── pom.xml # Maven 配置
├── docs/ # 文档和运维配置
│ └── dev-ops/ # Docker 和部署配置
└── pom.xml # 父 POM 配置
- 支持多种文档格式解析(PDF、Word、TXT、Markdown 等)
- 使用 Apache Tika 提取文档内容
- 自动文本分块和 Token 分割
- 基于 PgVector 的向量数据库存储
- 支持文档元数据管理
- 知识库标签分类管理
- 支持从 Git 仓库拉取代码
- 自动遍历仓库文件并解析
- 支持私有仓库认证
- 集成 OpenAI 和 Ollama 模型
- 基于向量检索的上下文增强
- 支持多知识库查询
- JDK 17+
- Maven 3.6+
- PostgreSQL (支持 pgvector 扩展)
- Redis 6.0+
- (可选) Ollama 本地部署
- 数据库配置 (
application-dev.yml):
spring:
datasource:
url: jdbc:postgresql://localhost:5432/your_database
username: your_username
password: your_password- Redis 配置:
spring:
data:
redis:
host: localhost
port: 6379- OpenAI 配置 (可选):
spring:
ai:
openai:
api-key: your-api-key- Ollama 配置 (可选):
spring:
ai:
ollama:
base-url: http://localhost:11434
chat:
model: llama2# 编译项目
mvn clean package -DskipTests
# 运行应用
cd xfg-dev-tech-app
java -jar target/xfg-dev-tech-app.jar项目提供了 Docker Compose 配置文件,位于 docs/dev-ops/ 目录:
cd docs/dev-ops
docker-compose -f docker-compose-environment.yml up -dGET /api/v1/rag/query_rag_tag_list
响应:
{
"code": "0000",
"info": "调用成功",
"data": ["知识库1", "知识库2"]
}
POST /api/v1/rag/file/upload
Content-Type: multipart/form-data
参数:
- ragTag: 知识库标签(必填)
- file: 文件列表(必填,支持多文件)
响应:
{
"code": "0000",
"info": "调用成功"
}
POST /api/v1/rag/analyze_git_repository
参数:
- repoUrl: Git 仓库地址(必填)
- userName: 用户名(必填)
- token: 访问令牌(必填)
响应:
{
"code": "0000",
"info": "调用成功"
}
定义服务接口,包括:
IRAGService: RAG 服务接口IAiService: AI 服务接口Response: 统一响应对象
核心应用模块,包含:
- 应用启动类
- 配置类(Ollama、Redis 等)
- 业务逻辑实现
HTTP 接口实现,提供:
RAGController: RAG 相关接口OpenAiController: OpenAI 相关接口OllamaController: Ollama 相关接口
项目支持多环境配置:
dev: 开发环境test: 测试环境prod: 生产环境
通过 spring.profiles.active 指定激活的环境。
# 运行所有测试
mvn test
# 运行特定测试类
mvn test -Dtest=RAGTest
# 跳过测试构建
mvn package -DskipTests日志配置位于 logback-spring.xml,支持按环境配置不同的日志级别。
- 文档解析: 使用 Apache Tika 支持多种文档格式
- 向量化: 自动将文档分块并生成向量
- 批量处理: 支持批量上传和处理文档
- Git 集成: 支持从 Git 仓库构建知识库
- 多模型支持: 同时支持 OpenAI 和 Ollama
- 缓存管理: 使用 Redis 管理知识库元数据
- 数据库准备: 确保 PostgreSQL 已安装并创建数据库,启用 pgvector 扩展
- Redis 配置: 确保 Redis 服务正常运行
- Git 认证: 私有仓库需要提供有效的用户名和访问令牌
- 文件大小: 建议控制上传文件大小,避免内存溢出
- 向量维度: 确保向量维度与模型配置一致
A: 在 PostgreSQL 中执行:
CREATE EXTENSION IF NOT EXISTS vector;A: 确保 Ollama 服务运行在配置的地址,并下载相应的模型。
A: 支持 Tika 支持的所有格式,包括 PDF、Word、TXT、Markdown、HTML 等。
Apache License 2.0
Daniel G