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/11/7 0:01:40 阅读更多 →
FastAPI + SQLAlchemy2.0 异步数据库

FastAPI + SQLAlchemy2.0 异步数据库

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

2026/11/9 10:30:47 阅读更多 →
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/11/9 6:53:25 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/13 5:13:25 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/13 5:13:25 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/13 5:13:25 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/12 18:22:26 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/12 18:22:25 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/13 5:13:25 阅读更多 →

日新闻

周新闻

月新闻