大模型springai,Rag,redis-stack向量数据库存储

1.利用docker搭建redis-stack

bash 复制代码
docker pull redis-stack :latest

2.运行

bash 复制代码
docker run -d \
  --name redis-stack \
  -p 6379:6379 \  # Redis服务端口(默认)
  -p 8001:8001 \  # RedisInsight可视化工具端口(可选)
  -v /root/redis-stack/data:/data \  # 挂载数据目录(持久化数据)
  -v /root/redis-stack/config/redis.config:/etc/redis-stack/redis.conf \  # 挂载自定义配置
  --restart always \  # 容器开机自启
  redis/redis-stack:latest  # 使用最新版redis-stack镜像

3.引入依赖

XML 复制代码
<!--向量库redis-->
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-advisors-vector-store</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-starter-vector-store-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-starter-model-transformers</artifactId>
        </dependency>

        <!--解析文档-->
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-tika-document-reader</artifactId>
        </dependency>

启动时会从github上拉取这个文件,直接下载到本地,就不用拉取了

https://github.com/spring-projects/spring-ai/raw/main/models/spring-ai-transformers/src/main/resources/onnx/all-MiniLM-L6-v2/model.onnx

前缀为spring:

ai:

填写存储的配置

配置redis连接。。。。。

4.自定义文档解析器,自定义如何解析文档

java 复制代码
public class CustomTextSplitter extends TextSplitter {

    @Override
    protected List<String> splitText(String text) {
        // 自定义文本分割逻辑
        return List.of(split(text));
    }

    public String[] split(String text) {
        return text.split("\\s*\\R\\s*\\R\\s*");
    }
}

5.controller仅为参考

java 复制代码
@RestController
@RequestMapping("rag")
@RequiredArgsConstructor
public class RagController {
    private final ChatService chatService;
    private final RagService ragService;


      @PostMapping("uploadRagDoc")
      public MikasResult doChat(@RequestParam("file")MultipartFile file){
          String fileName=file.getOriginalFilename();
          ragService.loadText(file.getResource(),fileName);
          return MikasResult.ok();
      }




}

6.service

resource是springai提供的一个读取文件的内容的

文本读取器TextReader读取划分为Documents对象

采用自定义的文本分割器按自己定义的划分流程来划分文档

redisVectorStore来存入数据库

java 复制代码
@Service
@RequiredArgsConstructor
public class RagServiceImpl implements RagService {
    private final RedisVectorStore redisVectorStore;
    @Override
    public void loadText(Resource resource, String fileName) {
        //加载读取文档转换为Document对象
        TextReader textReader = new TextReader(resource);
        textReader.getCustomMetadata().put("fileName",fileName);
        List<Document> documents = textReader.get();

        //默认的文本分割器
       /* TokenTextSplitter tokenTextSplitter = new TokenTextSplitter();
        List<Document> apply = tokenTextSplitter.apply(documents);*/

        //自定义文本分割器
        CustomTextSplitter customTextSplitter = new CustomTextSplitter();
        List<Document> apply = customTextSplitter.apply(documents);

        //向量存储
        redisVectorStore.add(apply);
    }
}
相关推荐
golang学习记几秒前
IDEA 2026.1全新调试新特性:Spring Boot调试不再靠猜!
java·spring boot·intellij-idea
smachao7 分钟前
Redis Desktop Manager(Redis可视化工具)安装及使用详细教程
redis·git·bootstrap
橘子编程13 分钟前
OpenClaw(小龙虾)完整知识汇总
java·前端·spring boot·spring·spring cloud·html5
大阿明16 分钟前
SpringBoot - Cookie & Session 用户登录及登录状态保持功能实现
java·spring boot·后端
Binary-Jeff18 分钟前
Spring 创建 Bean 的关键流程
java·开发语言·前端·spring boot·后端·spring·学习方法
NaMM CHIN27 分钟前
SQL sever数据导入导出实验
数据库·sql·oracle
rOuN STAT39 分钟前
MySQL:基础操作(增删查改)
java
→长歌41 分钟前
2026Java面试30题精解
java·python·面试
SHoM SSER43 分钟前
Spring Boot性能提升的核武器,速度提升500%!
java·spring boot·后端
weixin_425023001 小时前
Spring Boot 2.7 + JDK8 集成 Knife4j 4.1.0 教程(仅展示带注解接口)
java·spring boot·后端