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

spring Ai---向量知识库(一)

在一些垂直领域以及公司内部信息相关或者实时性相关的大模型应用,就无法直接使用chatGPT。
这个时候,向量知识库就进入了。
通过坐标向量最接近的即为匹配相关答案。
向量模型定义:将文档向量化,保证内容越相似的文本,在向量空间中距离越近;
第一步:引入依赖

    <dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-openai</artifactId></dependency>

测试输入一段文本,被存储在里面的坐标

 float[] textFlot = openAiEmbeddingModel.embed("我是中国人");System.out.println("输出"+ Arrays.toString(textFlot));

第二步,配置:

      embedding:options:model: text-embedding-v3dimensions: 1024

存储文档的可以用redis, es等;
对于API调用层,都是如下的调用方法
在这里插入图片描述
本次案例使用自带的SimpleVectorStore

    @Beanpublic VectorStore vectorStore(OpenAiEmbeddingModel embeddingModel) {return SimpleVectorStore.builder(embeddingModel).build();}

第三步:实现测试
我们需要先将文档转为Document,存入向量库

        // 1.创建PDF的读取器PagePdfDocumentReader reader = new PagePdfDocumentReader(resource, // 文件源PdfDocumentReaderConfig.builder().withPageExtractedTextFormatter(ExtractedTextFormatter.defaults()).withPagesPerDocument(1) // 每1页PDF作为一个Document.build());// 2.读取PDF文档,拆分为DocumentList<Document> documents = reader.read();// 3.写入向量库vectorStore.add(documents);

然后进行组装搜索

    SearchRequest request = SearchRequest.builder().query("论语中教育的目的是什么").topK(1).similarityThreshold(0.6).filterExpression("file_name == '知识笔记.pdf'").build();

最后通过调用接口搜索

 List<Document> docs = vectorStore.similaritySearch(request);

以上就实现了一个简单的自带存储PDF,然后进行向量接口搜索的demo

http://www.xdnf.cn/news/30457.html

相关文章:

  • 43.[前端开发-JavaScript高级]Day08-ES6-模板字符串-展开运算符-ES7~ES11
  • PyTorch深度学习框架60天进阶学习计划 - 第46天:自动化模型设计(一)
  • 在RK3588上使用哪个流媒体服务器合适
  • 在swiftui项目中使用WKWebView加载自定义脚本文件
  • 【HDFS入门】HDFS性能调优实战:关键参数对吞吐量的影响深度解析
  • c++ 类的语法1
  • UI文件上传
  • 深入解析进程与线程:区别、联系及Java实现
  • 设计模式-桥接模式
  • 14.解码器的Mask
  • End-to-End从混沌到秩序:基于LLM的Pipeline将非结构化数据转化为知识图谱
  • 从GET到POST:HTTP请求的攻防实战与CTF挑战解析
  • EF Core中动态加载关联的导航属性
  • 直线轴承的正确安装方式是什么?
  • LeetCode 热题 100_乘积最大子数组(88_152_中等_C++)(动态规划)
  • 虚拟现实(VR)技术在教育领域的创新应用
  • QML中的3D功能--入门开发
  • Chat2DB创始人姬朋飞:AI在 text2sql应用领域的实践
  • Java从入门到“放弃”(精通)之旅——数组的定义与使用⑥
  • 进程程序替换
  • 【橘子大模型】初探rag知识库的构建
  • Linux基础IO(八)之硬链接
  • 完整游戏排行榜系统实现
  • Redux Promise 中间件
  • C++ 数组 array ™实现动画效果全解析⚡YQW · Studio ⚡
  • Http基础
  • QML中的3D功能--自定义着色器开发
  • 硬件操作指南——ATK-MD0430 V20
  • 什么是超类实体和派生属性
  • JavaScript 变量语法扩展