SpringAI集成RAG实操(postgresql+pgvector)中(集成到项目中)
1、在pom.xml 引入依赖!-- 自动整合 PGVector 向量存储 --dependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-starter-vector-store-pgvector/artifactIdversion1.0.0-M7/version/dependency2、application.yml 加入pgvector配置spring:ai:dashscope:# 需要替换为你自己的 keyapi-key:你的API-Keyembedding:options:model:qwen3.7-text-embeddingdimensions:1024################################################################# postgresql 向量数据库配置 ###################################################################vectorstore:pgvector:initialize-schema:true# 会自定初始化向量数据表 vector_storeindex-type:HNSW# 量索引的类型为 HNSW分层可导航小世界图。dimensions:1024# 存储的向量维度为 1024。distance-type:COSINE_DISTANCE# 相似度度量方式为“余弦距离max-document-batch-size:10000# Optional: Maximum number of documents per batchid-type:uuidtable-name:vector_store# 向量数据表表名schema-name:publicdatasource:url:jdbc:postgresql://localhost:5432/postgresusername:postgrespassword:123456项目启动时会自动创建向量数据表表名为vector_store3、测试向表中vector_store 插入数据service/** * 向量数据库表 vector_store 业务操作接口类 */publicinterfaceIVectorStoreService{/** * 简单示例往向量数据库中插入字符串类型的数据 * param knowledge * return */StringaddSimple(Stringknowledge);/** * 从向量数据库中筛选文档 * param content * return */ListDocumentsimilaritySearch(Stringcontent);}serviceImplServiceSlf4jpublicclassVectorStoreServiceImplimplementsIVectorStoreService{AutowiredprivatePgVectorStorepgVectorStore;AutowiredQualifier(openAiChatModel)privateChatModelchatModel;OverridepublicStringaddSimple(Stringknowledge){DocumentdocumentnewDocument(knowledge);pgVectorStore.add(List.of(document));return添加知识库成功;}/** * 根据内容相识度查询 * param content */publicListDocumentsimilaritySearch(Stringcontent){QueryquerynewQuery(content);ChatClient.BuilderchatClientBuilderChatClient.builder(chatModel);// 构建查询重写转换器RewriteQueryTransformerqueryTransformerRewriteQueryTransformer.builder().chatClientBuilder(chatClientBuilder).build();// 构建翻译成中文转换器/* QueryTransformer queryTransformer TranslationQueryTransformer.builder() .chatClientBuilder(chatClientBuilder) .targetLanguage(Chinese) .build();*/// 重写QuerytransformqueryTransformer.transform(query);SearchRequestsearchRequestSearchRequest.builder().query(transform.text())//搜索的查询文本,重写后的查询.topK(5)// 返回的最大结果数.similarityThreshold(0.5)// 相似度阈值分数用于筛选搜索结果。只有相似度得分大于或等于该“阈值”的文档才会被返回。请注意这是一个在客户端而非服务端执行的后处理步骤。阈值设为 0.0 表示接受任意相似度或禁用相似度阈值过滤阈值设为 1.0 则表示要求完全匹配。//.filterExpression(title in [如何提升自身魅力吸引潜在伴侣]) //基于文档元数据的过滤表达式.build();// Retrieve documents similar to a queryListDocumentresultspgVectorStore.similaritySearch(searchRequest);log.info(匹配到的知识库内容{},results.toArray());returnresults;}}测试方法这里就直接写controller了在页面上测试/** * 向量数据库接口 */RestControllerRequestMapping(/vectorStore)publicclassVectorStoreController{AutowiredprivateIVectorStoreServicevectorStoreService;/** * 新增数据 * 向vector_store插入数据 * param knowledge 字符串类型的知识 */PostMapping(/add)publicStringaddSimple(Stringknowledge){returnvectorStoreService.addSimple(knowledge);}/** * 查询-直接接口查询 * param content * return */GetMapping(/query)publicListDocumentsimilaritySearch(Stringcontent){returnvectorStoreService.similaritySearch(content);}}先测试下插入数据查看数据库发现插入成功embedding字段即为向量数组metadata元信息为空是因为我们暂时还没有设置。继续多插入几条测试下检索功能发现只匹配到一条分数为0.664、哪为什么会检索到这条呢先将用户输入的信息向量化再通过jdbc在数据库中匹配5、总结在这里其实我们对RAG中的向量化检索有初步的了解了。在这篇文章中主要是将向量数据库pgvector集成到项目中并用简单的插入表检索表了解了向量化。在检索文档前会将用户输入的文本转化为向量表示再从表中检索内容。【下图红色圈出部分】附上一张RAG的架构图

相关新闻

从静态图到动态视频:让 InternVL3-2B-hf 看懂视频的完整实践指南

从静态图到动态视频:让 InternVL3-2B-hf 看懂视频的完整实践指南

从静态图到动态视频:让 InternVL3-2B-hf 看懂视频的完整实践指南 【免费下载链接】InternVL3-2B-hf 项目地址: https://ai.gitcode.com/hf_mirrors/OpenGVLab/InternVL3-2B-hf InternVL3-2B-hf 是 OpenGVLab 发布的 InternVL3 系列中最轻量的 20 亿参数多模…

2026/8/26 20:20:51 阅读更多 →
FastAPI + SQLAlchemy2.0 异步数据库

FastAPI + SQLAlchemy2.0 异步数据库

FastAPI 集成 SQLAlchemy2.0 异步数据库 主流 Python ORM 对比 Python 生态有很多 ORM 库:SQLAlchemy、Peewee、Pony ORM、Tortoise‑ORM。 SQLAlchemy:生态最成熟,支持异步,社区活跃 SQLModel:FastAPI 作者开发&…

2026/8/26 20:20:51 阅读更多 →
mentor PRO操作要点

mentor PRO操作要点

手动创建symbol_右键新建设置格点(0.1in)文本0.05引脚可以复制黏贴(改pin num和pin type)GND_1原点放在左下角Excel创建symbol需要.csv文件IC 新建symbol-右键import pin,引脚shift选中往里拖Padstack_edit---oblong(长宽)mm新建一…

2026/8/26 20:20:50 阅读更多 →

最新新闻

TM4C入门到实战:基于Cortex-M4F的嵌入式开发与底层原理

TM4C入门到实战:基于Cortex-M4F的嵌入式开发与底层原理

做嵌入式这些年,我上手过不少厂商的微控制器。如果让我给刚入行的朋友推荐一款既能用来打基础、又能真正干活的芯片,TI(Texas Instruments)的TM4C系列绝对排得上前三。这颗基于ARM Cortex-M4F内核的微控制器,在高校单片…

2026/8/26 20:52:06 阅读更多 →
leetcode 3718. 缺失的最小倍数 简单

leetcode 3718. 缺失的最小倍数 简单

给你一个整数数组 nums 和一个整数 k,请返回从 nums 中缺失的、最小的正整数 k 的倍数。倍数 指能被 k 整除的任意正整数。示例 1:输入: nums [8,2,3,4,6], k 2输出: 10解释:当 k 2 时,其倍数为 2、4、6…

2026/8/26 20:52:06 阅读更多 →
C++ set容器自定义排序:从仿函数到Lambda的实战指南

C++ set容器自定义排序:从仿函数到Lambda的实战指南

1. 项目概述:为什么需要关注set容器的排序? 在C的日常开发中, std::set 是一个我们再熟悉不过的关联容器,它以红黑树为底层数据结构,自动维护元素的唯一性和有序性。很多初学者,甚至一些有一定经验的开发…

2026/8/26 20:52:06 阅读更多 →
Node.js项目Windows便携包制作:一键打包AI Agent等应用

Node.js项目Windows便携包制作:一键打包AI Agent等应用

1. 为什么我们需要“解压即用”的 Windows 便携包?在开源社区,尤其是 AI Agent、前端工具链这类 Node.js 项目里,我们经常遇到一个尴尬的局面:你兴致勃勃地 clone 了一个看起来很酷的项目,比如某个 AI Agent 框架&…

2026/8/26 20:52:06 阅读更多 →
UE4 Actor/Pawn/Character职责区分与选型指南

UE4 Actor/Pawn/Character职责区分与选型指南

1. 从“能动的方块”开始:为什么UE4里要设计这么多看似重复的类? 刚进UE4编辑器,拖一个StaticMeshActor进去——它能放、能转、能缩,像个听话的积木。但很快你就发现:想让它走两步?不行。想用键盘控制它&am…

2026/8/26 20:52:06 阅读更多 →
绿色金融:碳中和背景下的金融工具、运作逻辑与实操指南

绿色金融:碳中和背景下的金融工具、运作逻辑与实操指南

1. 项目概述:当金融遇见“绿色”最近几年,但凡关注点经济新闻的朋友,肯定对“碳中和”这个词不陌生。它从一个略显专业的环保术语,迅速演变成了全球各国、各大企业战略规划里的核心KPI。简单来说,就是通过植树造林、节…

2026/8/26 20:51:06 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/26 14:45:33 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/26 17:46:43 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 14:46:37 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/26 17:46:39 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →