20250719 引入ES作为向量数据库
This commit is contained in:
parent
0ee73fd3de
commit
c17113c9be
58
pom.xml
58
pom.xml
@ -7,19 +7,18 @@
|
||||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>3.2.5</version>
|
||||
<version>3.3.6</version>
|
||||
<relativePath/>
|
||||
</parent>
|
||||
|
||||
<groupId>com.example</groupId>
|
||||
<artifactId>spring-ai-demo</artifactId>
|
||||
<version>1.0.0</version>
|
||||
<version>1.1.0</version>
|
||||
<name>spring-ai-demo</name>
|
||||
<description>Spring AI Demo Project</description>
|
||||
|
||||
<properties>
|
||||
<java.version>17</java.version>
|
||||
<spring-ai.version>0.8.1</spring-ai.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
@ -35,27 +34,53 @@
|
||||
<artifactId>spring-boot-starter-thymeleaf</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.ai</groupId>
|
||||
<artifactId>spring-ai-starter-model-openai</artifactId>
|
||||
</dependency>
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>org.springframework.ai</groupId>-->
|
||||
<!-- <artifactId>spring-ai-starter-model-openai</artifactId>-->
|
||||
<!-- </dependency>-->
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.ai</groupId>
|
||||
<artifactId>spring-ai-starter-model-deepseek</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.ai</groupId>
|
||||
<artifactId>spring-ai-starter-model-zhipuai</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- Elasticsearch Vector Store -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.ai</groupId>
|
||||
<artifactId>spring-ai-starter-vector-store-elasticsearch</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 对于Spring Boot 3.3.6 + Spring AI 1.0.0,显式指定Elasticsearch版本 -->
|
||||
<dependency>
|
||||
<groupId>co.elastic.clients</groupId>
|
||||
<artifactId>elasticsearch-java</artifactId>
|
||||
<version>8.13.3</version>
|
||||
<version>8.13.4</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.elasticsearch.client</groupId>
|
||||
<artifactId>elasticsearch-rest-client</artifactId>
|
||||
<version>8.13.4</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Jackson Core 和 Databind for JSON processing -->
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-annotations</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- Spring Boot DevTools (开发工具) -->
|
||||
<dependency>
|
||||
@ -93,6 +118,13 @@
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud.ai</groupId>
|
||||
<artifactId>spring-ai-alibaba-bom</artifactId>
|
||||
<version>1.0.0.2</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
@ -116,6 +148,14 @@
|
||||
</build>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>spring-milestones</id>
|
||||
<name>Spring Milestones</name>
|
||||
<url>https://repo.spring.io/milestone</url>
|
||||
<snapshots>
|
||||
<enabled>false</enabled>
|
||||
</snapshots>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>spring-snapshots</id>
|
||||
<name>Spring Snapshots</name>
|
||||
@ -137,4 +177,4 @@
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
</project>
|
||||
</project>
|
@ -0,0 +1,21 @@
|
||||
package com.example.springaidemo.controller;
|
||||
|
||||
import com.example.springaidemo.service.VectorService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/RagController")
|
||||
public class RagController {
|
||||
|
||||
@Autowired
|
||||
private VectorService vectorService;
|
||||
|
||||
@RequestMapping("/storeVector")
|
||||
public String storeVector() {
|
||||
vectorService.storeVector();
|
||||
return "success";
|
||||
}
|
||||
|
||||
}
|
@ -1,12 +1,29 @@
|
||||
package com.example.springaidemo.service;
|
||||
|
||||
import org.springframework.ai.document.Document;
|
||||
import org.springframework.ai.vectorstore.SearchRequest;
|
||||
import org.springframework.ai.vectorstore.VectorStore;
|
||||
import org.springframework.ai.vectorstore.elasticsearch.ElasticsearchVectorStore;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class VectorService {
|
||||
|
||||
@Autowired
|
||||
private VectorStore vectorStore;
|
||||
@Autowired VectorStore vectorStore;
|
||||
|
||||
public void storeVector(){
|
||||
List<Document> documents = List.of(
|
||||
new Document("Spring AI rocks!! Spring AI rocks!! Spring AI rocks!! Spring AI rocks!! Spring AI rocks!!"),
|
||||
new Document("The World is Big and Salvation Lurks Around the Corner"),
|
||||
new Document("You walk forward facing the past and you turn back toward the future."));
|
||||
|
||||
// Add the documents to Elasticsearch
|
||||
vectorStore.add(documents);
|
||||
|
||||
// Retrieve documents similar to a query
|
||||
List<Document> results = this.vectorStore.similaritySearch(SearchRequest.builder().query("Spring").topK(5).build());
|
||||
}
|
||||
}
|
||||
|
@ -8,6 +8,8 @@ spring:
|
||||
ai:
|
||||
deepseek:
|
||||
api-key: sk-3043bb4777404970a22c7544dd30aaa2
|
||||
zhipuai:
|
||||
api-key: 73f440ddeafc47ba94ed66e35fbd63d7.VmlulRZ4BMWexncF
|
||||
openai:
|
||||
api-key: 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
|
||||
# 如果您有代理服务,可以修改为代理地址
|
||||
@ -23,7 +25,7 @@ spring:
|
||||
read-timeout: 60000 # 60秒读取超时
|
||||
vectorstore:
|
||||
elasticsearch:
|
||||
initialize-schema: true
|
||||
initialize-schema: false
|
||||
index-name: custom-index
|
||||
dimensions: 1536
|
||||
similarity: cosine
|
||||
@ -34,7 +36,7 @@ spring:
|
||||
# model: ${OLLAMA_MODEL:llama2}
|
||||
|
||||
server:
|
||||
port: 8080
|
||||
port: 8009
|
||||
|
||||
logging:
|
||||
level:
|
||||
|
Loading…
Reference in New Issue
Block a user