当前位置: 首页 > news >正文

(六) Spring AI 1.0版本 + 千问大模型+RAG

上篇文章我们大概讲了一下向量模型的知识,本篇文章,我们将会通过RAG实战的形式,来感受一下RAG。

项目准备

pom.xml
这里我们需要引入向量库和pdf相关的包

    <dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-vector-store-redis</artifactId></dependency><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-pdf-document-reader</artifactId></dependency>

application.yaml

spring:ai:vectorstore:redis:index-name: spring_ai_index  ##向量库索引名称initialize-schema: true   ##是否初始化向量索引结构prefix: "doc:"   ##向量库前缀data:redis:host: 127.0.0.1   ##redis地址,我这里使用的Docker安装的Redis-stack的向量库

EmbeddingController类

@RestController
@RequestMapping(value = "/api/embedding")
public class EmbeddingController {@Autowiredprivate VectorStore vectorStore;@GetMapping("/vector/store")public List<Document> vectoreStore() {List<Document> documents = List.of(new Document("Spring AI rocks!! Spring AI rocks!! Spring AI rocks!! Spring AI rocks!! Spring AI rocks!!", Map.of("meta1", "meta1")),new Document("The World is Big and Salvation Lurks Around the Corner"),new Document("You walk forward facing the past and you turn back toward the future.", Map.of("meta2", "meta2")));vectorStore.add(documents);List<Document> results = this.vectorStore.similaritySearch(SearchRequest.builder().query("Spring").topK(5).build());return results;}@GetMapping("/vector/store/pdf")public List<Document> vectorStorePdf() throws MalformedURLException {org.springframework.core.io.Resource resource =  new FileUrlResource("funcationCall.pdf");PdfDocumentReaderConfig pdfDocumentReaderConfig = PdfDocumentReaderConfig.builder().withPageExtractedTextFormatter(ExtractedTextFormatter.defaults()).withPagesPerDocument(1).build();PagePdfDocumentReader pagePdfDocumentReader = new PagePdfDocumentReader(resource, pdfDocumentReaderConfig);List<Document> documents = pagePdfDocumentReader.read();vectorStore.add(documents);List<Document> results = this.vectorStore.similaritySearch(SearchRequest.builder().query("FunctionTool").topK(5).build());return results;}}

向量库我是使用的redis-stack:7.2.0-v18。建议使用docker-desktop安装。
方法里面的查询方法是比较简单的用法,详细复杂的查询可以查看SpringAi的官网
https://docs.spring.io/spring-ai/reference/api/vectordbs/redis.html

以上就是本次分享的主要内容。

http://www.dtcms.com/a/300024.html

相关文章:

  • 在python3.8和pytorch1.8.1的基础上安装tensorflow
  • Flink是如何实现物理分区?
  • 深入解析C++原子指针std::atomic
  • GIS地理信息系统建设:高精度3D建模
  • [Linux入门] 初学者入门:Linux DNS 域名解析服务详解
  • Anaconda常用命令及环境管理指南
  • kali [DNS劫持] 实验(详细步骤)
  • Containerd简介
  • 【Ubuntu】发展历程
  • 如何做数据增强?
  • 框架式3D打印机结构设计cad【9张】三维图+设计说明书
  • 【升级U8+】不能将值 NULL 插入列 ‘LocaleID‘,表 ‘hr_sys_function_Base‘;列不允许有 Null 值。
  • flink查看taskManager日志
  • 数组内存学习
  • Django5.1(130)—— 表单 API一(API参考)
  • 【Luogu】每日一题——Day14. P5960 【模板】差分约束 (图论 + 最短路)
  • Nacos-服务注册,服务发现(二)
  • mac版SVN客户端
  • Pythong高级入门Day5
  • npm ERR! cb() never called!
  • 昇思学习营-DeepSeek-R1-Distill-Qwen-1.5B 模型LoRA微调学习心得
  • 数据结构 二叉树(2)---二叉树的实现
  • 2025年SEVC SCI2区,混沌编码量子粒子群算法QPSO+柔性车间调度,深度解析+性能实测
  • 每日一题7.26
  • WorkManager vs Flow 适用场景分析
  • 抖音短视频矩阵系统源码搭建---底层框架5年开发分享
  • idea中无法删除模块,只能remove?
  • 二叉搜索树(Binary Search Tree)详解与java实现
  • 代码随想录打卡第十五天
  • 睡眠函数 Sleep() C语言