Springboot RAG 一站式混合搜索方案

   日期:2024-12-26    作者:fuqs0 移动:http://mip.riyuangf.com/mobile/quote/39181.html

第一章 Springboot RAG 一站式混合搜索方案

Springboot RAG 一站式混合搜索方案



最近在做一个政策类查询的RAG方案,做成一站式可以快速使用的方案。
数据库是PG, PGVector作为向量数据库,采用Hybrid Search方法来同时匹配向量和其他字段。
项目采用Springboot 作为后端;大模型相关的,使用到的API有Chatgpt, moonshot, qwen,讯飞星火等不同厂家的方案。
该方案从产品方面来考虑,可扩展性,可便利性等没有太多考虑;从单个项目来说,算是一个可用的方案。
Spring AI 支持所有主要的模型提供商,如 OpenAI、Microsoft、Amazon、Google 和 Huggingface;国内的大模型还没有支持,国内大模型的API的返回,有几个是兼容OpenAI的,另外一些是不兼容的,需要做不少工作来完全兼容。这是后面可以优化的方向,做成一个统一的接口,便于系统维护和更多人的上手使用。

系统的数据库采用PG, 文本也是放在一个text字段中,用PG自带的全文检索,同时把向量匹配也放到一起过滤,所以向量数据库采用PGVector。

PGVector的安装有很多写的详细的过程,这里略过。

PostgreSQL 全文检索:PostgreSQL 自带的全文检索功能可以使用 tsvector 和 tsquery 数据类型,通过分词和倒排索引来实现语义搜索的基本需求。
Zhparser 分词插件:对于中文文本,可以使用 PostgreSQL 的 Zhparser 插件进行中文分词,结合全文检索功能实现语义搜索。

系统里面使用SpringBoot, MyBatisPlus的方式来,目前MyBatisPlus本身并不支持PGVector。需要增加一个PGVector的方式
PGVector有项目https://github.com/pgvector/pgvector-java.git, 实现过程中参考该项目来实现PGVector(也可以参考SpringAI项目对PGVector支持)

 
 
 

MyBatisConfig.java对应修改

 

PGvectorConfiguration.java

 

FaguikuMapper.java

 

FaguikuMapper.xml

 

embeddings 通过Embedding API去获取,可以通过各个大模型的Embedding API,也可以通过部署Embeddings API, 根据huggingface中的排名来选择中文支持较好的Embedding模型



特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号