From c17113c9be8b3279dfbd2fd6f6f76aba5156ec9b Mon Sep 17 00:00:00 2001 From: liangjinglin Date: Sat, 19 Jul 2025 16:33:11 +0800 Subject: [PATCH] =?UTF-8?q?20250719=20=E5=BC=95=E5=85=A5ES=E4=BD=9C?= =?UTF-8?q?=E4=B8=BA=E5=90=91=E9=87=8F=E6=95=B0=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 58 ++++++++++++++++--- .../controller/RagController.java | 21 +++++++ .../springaidemo/service/VectorService.java | 21 ++++++- src/main/resources/application.yml | 6 +- 4 files changed, 93 insertions(+), 13 deletions(-) create mode 100644 src/main/java/com/example/springaidemo/controller/RagController.java diff --git a/pom.xml b/pom.xml index 9a18b21..aa990d5 100644 --- a/pom.xml +++ b/pom.xml @@ -7,19 +7,18 @@ org.springframework.boot spring-boot-starter-parent - 3.2.5 + 3.3.6 com.example spring-ai-demo - 1.0.0 + 1.1.0 spring-ai-demo Spring AI Demo Project 17 - 0.8.1 @@ -35,27 +34,53 @@ spring-boot-starter-thymeleaf - - org.springframework.ai - spring-ai-starter-model-openai - + + + + org.springframework.ai spring-ai-starter-model-deepseek + + org.springframework.ai + spring-ai-starter-model-zhipuai + + + org.springframework.ai spring-ai-starter-vector-store-elasticsearch + co.elastic.clients elasticsearch-java - 8.13.3 + 8.13.4 + + org.elasticsearch.client + elasticsearch-rest-client + 8.13.4 + + + + + com.fasterxml.jackson.core + jackson-core + + + com.fasterxml.jackson.core + jackson-databind + + + com.fasterxml.jackson.core + jackson-annotations + @@ -93,6 +118,13 @@ pom import + + com.alibaba.cloud.ai + spring-ai-alibaba-bom + 1.0.0.2 + pom + import + @@ -116,6 +148,14 @@ + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + spring-snapshots Spring Snapshots @@ -137,4 +177,4 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/main/java/com/example/springaidemo/controller/RagController.java b/src/main/java/com/example/springaidemo/controller/RagController.java new file mode 100644 index 0000000..947fc77 --- /dev/null +++ b/src/main/java/com/example/springaidemo/controller/RagController.java @@ -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"; + } + +} diff --git a/src/main/java/com/example/springaidemo/service/VectorService.java b/src/main/java/com/example/springaidemo/service/VectorService.java index 764cd1b..7534bb0 100644 --- a/src/main/java/com/example/springaidemo/service/VectorService.java +++ b/src/main/java/com/example/springaidemo/service/VectorService.java @@ -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 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 results = this.vectorStore.similaritySearch(SearchRequest.builder().query("Spring").topK(5).build()); + } } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 5bd8389..1fa879e 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -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: