关于 RagWiser
RagWiser 是基于 Spring Boot 的 PDF 文档问答系统,面向需要通过自然语言检索并询问文档内容的用户。它将文档向量存入 PostgreSQL 的 pgvector,并可通过工具回调提供 RAG 能力。
主要功能
- 01通过 REST API 上传 PDF
- 02提取文本、分块并生成向量
- 03使用自然语言语义搜索
- 04根据检索内容生成回答
- 05React 界面支持上传和问答
- 06提供基于工具回调的 RAG 集成
适用场景
- 01上传 PDF 并询问文档内容
- 02检索与问题相关的文档片段
- 03通过界面查看生成的答案
- 04将 RAG 能力作为工具供 AI 系统调用
MCP 相关
README 提到通过 Spring AI 的工具回调将 RAG 能力提供给其他 AI 系统,但未说明 MCP 服务或 MCP 客户端集成。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
RagWiser
RagWiser 是一个基于 Spring Boot 构建的检索增强生成(RAG)系统,用户可以上传 PDF 文档、处理文档,并使用自然语言询问文档内容。
项目概览
RagWiser 使用 Spring AI 和 PGVector 构建高级文档问答系统。系统会处理 PDF 文档,将文档的向量化表示存储在启用了 pgvector 扩展的 PostgreSQL 数据库中,并通过检索相关上下文,使用 OpenAI 的 GPT 模型生成回答来响应用户查询。
功能
- PDF 文档上传:通过 REST API 上传并处理 PDF 文档
- 文档向量化:自动从 PDF 中提取文本,将文本拆分为多个块,并存储嵌入向量
- 语义搜索:使用自然语言查询文档
- RAG 驱动的回答生成:根据文档内容获取准确回答
- Spring AI 集成:利用 Spring AI 集成向量存储和大模型
- Docker 支持:使用启用了 pgvector 扩展的容器化 PostgreSQL
UI
RagWiser 使用 React 构建用户界面,提供与 RAG 系统交互的简单直观方式。用户可以上传 PDF 文档、提出问题,并以友好的方式查看回答。

技术栈
- Java 21
- Spring Boot 3.3.2
- Spring AI 1.0.0-M1
- 启用了 pgvector 扩展的 PostgreSQL
- Docker
- OpenAI GPT-4
- React
开始使用
先决条件
- Java Development Kit (JDK) 21
- Docker 和 Docker Compose
- OpenAI API Key
- NodeJS
设置和安装
-
克隆代码仓库:
git clone https://github.com/RobertoDure/RagWiser.git cd RagWiser -
在
src/main/resources/application.yaml中配置 OpenAI API 密钥:spring: ai: openai: api-key: YOUR_OPENAI_API_KEY -
启动启用了 pgvector 的 PostgreSQL 数据库:
docker-compose up -d -
构建并运行 Spring Boot 后端应用:
./mvnw spring-boot:run -
运行 React 前端应用:
cd frontend npm install npm start
API 端点
上传 PDF 文档
POST /api/rag/upload
Content-Type: multipart/form-data
参数:
file:PDF 文件(必填)
提出问题
GET /api/rag?question=YOUR_QUESTION_HERE
参数:
question:要回答的问题(默认值:"列出《爱尔兰宪法》中的所有条款")
工作原理
-
文档处理:
- 通过
/api/rag/upload端点上传 PDF 文档 - 应用使用
PagePdfDocumentReader从 PDF 中提取文本 - 使用
TokenTextSplitter将文本拆分为多个块 - 将文本块转换为嵌入向量并存储在向量数据库中
- 通过
-
问题回答:
- 用户通过
/api/question端点提交问题 - 系统使用向量相似度搜索检索最相关的文档块
- 提示词模板将问题与检索到的文档组合起来
- OpenAI 的 GPT 模型根据上下文生成回答
- 用户通过
-
MCP 集成:
- 应用还通过 Spring AI 的工具回调提供基于工具的 RAG 功能集成
- 这样,其他 AI 系统就可以将 RAG 功能用作工具
数据库架构
应用使用带有 pgvector 扩展的 PostgreSQL 数据库存储文档嵌入向量:
CREATE TABLE vector_store (
id uuid DEFAULT uuid_generate_v4() PRIMARY KEY,
content text,
metadata json,
embedding vector(1536)
);
CREATE INDEX ON vector_store USING HNSW (embedding vector_cosine_ops);
配置
application.yaml 中的关键配置选项:
spring:
datasource:
url: jdbc:postgresql://localhost:5432/rag_db
username: postgres
password: postgres
ai:
openai:
api-key: YOUR_OPENAI_API_KEY
chat:
options:
model: gpt-4
vectorstore:
pgvector:
index-type: HNSW
distance-type: COSINE_DISTANCE
dimensions: 1536
servlet:
multipart:
enabled: true
max-file-size: 100MB
max-request-size: 100MB
贡献
欢迎贡献!欢迎提交 Pull Request。
许可证
本项目采用 MIT 许可证。详情请参阅 LICENSE 文件。
致谢
- 感谢 Spring AI 团队提供出色的框架
- 感谢 PostgreSQL 和 pgvector 提供向量存储功能
- 感谢 OpenAI 提供强大的语言模型
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。