环境搭建指南
一、项目概述
本项目是基于Spring AI + PgVector的智能文档检索系统,支持向量搜索、关键词搜索和混合搜索等功能。
二、系统要求
硬件要求
- 内存:8GB RAM(推荐16GB)
- 存储:至少10GB可用空间
- CPU:支持AVX指令集的多核处理器
软件要求
- Java 17 或java21
- Maven 3.6+ 或 Gradle 7.0+
- PostgreSQL 16+(需安装pgvector扩展)
- Git
三、开发环境搭建
1、前置条件
安装PostgreSQL并配置pgvector。本人是宝塔安装一件安装既可,但是、宝塔安装的话 🈚 扩展需要自已安装pgvector扩展
✅ 安装步骤(详细流程)参考 ✅ 宝塔 PostgreSQL 安装 contrib 扩展完整指南
✅ UUID创建报错参考 ✅ 宝塔 PostgreSQL 安装UUID指南
在使用 PGvector 之前,需要确保 PostgreSQL 实例已启用以下扩展:
sql
CREATE EXTENSION IF NOT EXISTS vector;
CREATE EXTENSION IF NOT EXISTS hstore;
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
2、手动创建向量存储表
在数据库中创建向量存储表(推荐在应用启动时由 Spring AI 自动创建):
sql
CREATE TABLE IF NOT EXISTS vector_store (
id uuid DEFAULT uuid_generate_v4() PRIMARY KEY,
content text,
metadata json,
embedding vector(1536) -- 1536 是默认的嵌入维度
);
CREATE INDEX IF NOT EXISTS vector_index
ON vector_store USING hnsw (embedding vector_cosine_ops);
💡 重要提示 :如果使用不同的嵌入维度,请将
1536替换为实际的嵌入维度。PGvector 对 HNSW 索引最多支持 2000 个维度。
3、整合依赖
项目是一个基于Spring Boot的AI RAG(检索增强生成)应用,使用PostgreSQL和PgVector进行向量存储。以下是各个依赖的详细说明:
1. Spring Boot 核心依赖
- spring-boot-starter-web : 提供Web开发支持,包括REST API、内嵌Tomcat等
- spring-boot-starter-validation : 提供Bean验证支持(JSR-303)
2. Spring AI 相关依赖
- spring-ai-pgvector-store :这是Spring AI框架中用于PgVector向量数据库的实现,允许将文档嵌入向量存储在PostgreSQL数据库中提供向量相似性搜索功能,支持RAG(检索增强生成)应用
- spring-ai-markdown-document-reader : 专门用于读取和解析Markdown格式文档的组件,能够将Markdown文档转换为文本片段,便于后续处理,支持解析Markdown中的标题、段落、列表等结构化内容,通常与向量存储结合使用,用于构建知识库
3. 阿里云AI服务依赖
- spring-ai-alibaba-starter-dashscope : 阿里云通义千问(DashScope)AI服务集成,提供大语言模型能力
4. 数据库相关依赖
- postgresql : PostgreSQL数据库驱动
- spring-boot-starter-jdbc : 提供JDBC数据库访问支持
- spring-ai-pgvector-store : 与PostgreSQL集成的向量数据库功能,用于存储和检索向量嵌入
5. 开发辅助依赖
- lombok : 简化Java代码的工具,自动生成getter、setter等方法
- spring-boot-starter-test : 测试支持依赖
6. API文档工具
- knife4j-openapi3-jakarta-spring-boot-starter : 增强版Swagger文档工具,提供API接口文档界面
xaml
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-bom</artifactId>
<version>1.0.0.2</version> <!-- 1.0.0.4 笔记 -->
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>1.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-pgvector-store</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-markdown-document-reader</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<!-- 接口文档 -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>4.4.0</version>
</dependency>
</dependencies>
4、 配置数据库连接
编辑 src/main/resources/application.yml 文件:
yml
spring:
datasource:
url: jdbc:postgresql://localhost:5432/vector_store
username: 你的用户名
password: 你的密码
ai:
vectorstore:
pgvector:
index-type: HNSW
distance-type: COSINE_DISTANCE
dimensions: 1536
max-document-batch-size: 10000
5、 配置AI服务API密钥
在 application.yml 中配置阿里云通义千问API密钥:
yml
spring:
application:
name: AiRag
ai:
dashscope:
api-key: "xxxxx"
chat:
options:
model: qwen-plus [看你选择的模型]
6、配置 springdoc-openapi config
yaml
# springdoc-openapi config
springdoc:
swagger-ui:
path: /swagger-ui.html
tags-sorter: alpha
operations-sorter: alpha
api-docs:
path: /v3/api-docs
group-configs:
- group: 'default'
paths-to-match: '/**'
packages-to-scan: com.atg.pgvector_practical.controller
# knife4j config
knife4j:
enable: true
setting:
language: zh_cn
四、常见问题解决
1. pgvector扩展安装失败
- 确保PostgreSQL版本 >= 14
- 检查是否有足够的权限安装扩展
- 验证PostgreSQL编译时是否支持扩展
可参考如下:
2. AI服务连接失败
- 检查API密钥是否正确
- 验证网络连接是否正常
- 确认服务配额是否充足