springboot结合ES8向量检索实现智能客服
- 一、前言
- 二、实现思路
- 三、代码实现
-
- 1. springboot版本:3.3.2
- 2. ES版本8.13.2
- 3. pom文件
- 4. 创建索引
- 5. 构造数据
- 6. 向量化数据到ES
- 7. ES余弦相似度检索
- 8. 向量检索(运行方式参看[将向量模型构建成可以Java调用的api服务](https://blog.youkuaiyun.com/zhych0828/article/details/144763821)或使用云服务)
- 9. 重排序(运行方式参看[将重排模型构建成可以API调用的服务](https://blog.youkuaiyun.com/zhych0828/article/details/144785193)或使用云服务)
- 10. 模型增强生成,使用的是阿里的通义千问
- 11. controller
- 四、运行测试
一、前言
1. 什么是RAG?
RAG 全称 Retrieval-Augmented Generation,是一种结合了信息检索和语言生成模型的方法,用于改进自然语言处理任务中的文本生成。RAG模型通常会先从大量的文档集合中检索相关信息,然后利用这些信息来辅助生成更准确、更有上下文关联性的文本,以此来优化大模型的生成结果。
二、实现思路
三、代码实现
1. springboot版本:3.3.2
2. ES版本8.13.2
3. pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.3.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.zhych</groupId>
<artifactId>embeddings-for-es</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>embeddings</name>
<description>embeddings</description>
<url/>
<licenses>
<license/>
</licenses>
<developers>
<developer/>
</developers>
<scm>
<connection/>
<developerConnection/>
<tag/>
<url/>
</scm>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.15</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.25</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>5.0.0-alpha.3</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>