Skip to content

CorgiBoyG/ai-rag-knowledge

Repository files navigation

AI RAG Knowledge

基于 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 配置

核心功能

1. 文档管理

  • 支持多种文档格式解析(PDF、Word、TXT、Markdown 等)
  • 使用 Apache Tika 提取文档内容
  • 自动文本分块和 Token 分割

2. 向量存储

  • 基于 PgVector 的向量数据库存储
  • 支持文档元数据管理
  • 知识库标签分类管理

3. Git 集成

  • 支持从 Git 仓库拉取代码
  • 自动遍历仓库文件并解析
  • 支持私有仓库认证

4. AI 问答

  • 集成 OpenAI 和 Ollama 模型
  • 基于向量检索的上下文增强
  • 支持多知识库查询

快速开始

环境要求

  • JDK 17+
  • Maven 3.6+
  • PostgreSQL (支持 pgvector 扩展)
  • Redis 6.0+
  • (可选) Ollama 本地部署

配置说明

  1. 数据库配置 (application-dev.yml):
spring:
  datasource:
    url: jdbc:postgresql://localhost:5432/your_database
    username: your_username
    password: your_password
  1. Redis 配置:
spring:
  data:
    redis:
      host: localhost
      port: 6379
  1. OpenAI 配置 (可选):
spring:
  ai:
    openai:
      api-key: your-api-key
  1. 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 部署

项目提供了 Docker Compose 配置文件,位于 docs/dev-ops/ 目录:

cd docs/dev-ops
docker-compose -f docker-compose-environment.yml up -d

API 接口

1. 查询知识库列表

GET /api/v1/rag/query_rag_tag_list

响应:
{
  "code": "0000",
  "info": "调用成功",
  "data": ["知识库1", "知识库2"]
}

2. 文件上传

POST /api/v1/rag/file/upload
Content-Type: multipart/form-data

参数:
- ragTag: 知识库标签(必填)
- file: 文件列表(必填,支持多文件)

响应:
{
  "code": "0000",
  "info": "调用成功"
}

3. Git 仓库分析

POST /api/v1/rag/analyze_git_repository

参数:
- repoUrl: Git 仓库地址(必填)
- userName: 用户名(必填)
- token: 访问令牌(必填)

响应:
{
  "code": "0000",
  "info": "调用成功"
}

模块说明

xfg-dev-tech-api

定义服务接口,包括:

  • IRAGService: RAG 服务接口
  • IAiService: AI 服务接口
  • Response: 统一响应对象

xfg-dev-tech-app

核心应用模块,包含:

  • 应用启动类
  • 配置类(Ollama、Redis 等)
  • 业务逻辑实现

xfg-dev-tech-trigger

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 管理知识库元数据

注意事项

  1. 数据库准备: 确保 PostgreSQL 已安装并创建数据库,启用 pgvector 扩展
  2. Redis 配置: 确保 Redis 服务正常运行
  3. Git 认证: 私有仓库需要提供有效的用户名和访问令牌
  4. 文件大小: 建议控制上传文件大小,避免内存溢出
  5. 向量维度: 确保向量维度与模型配置一致

常见问题

Q: 如何初始化 pgvector 扩展?

A: 在 PostgreSQL 中执行:

CREATE EXTENSION IF NOT EXISTS vector;

Q: 如何配置 Ollama?

A: 确保 Ollama 服务运行在配置的地址,并下载相应的模型。

Q: 支持哪些文档格式?

A: 支持 Tika 支持的所有格式,包括 PDF、Word、TXT、Markdown、HTML 等。

许可证

Apache License 2.0

作者

Daniel G

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages