新增模块

dev_1.0.0^2
liu 10 months ago
parent 6eb2f5f7e1
commit 822b766890

@ -14,6 +14,11 @@ server:
spring:
elasticsearch:
uris: http://192.168.10.137:9200
ai:
vectorstore:
elasticsearch:
index-name: 11
main:
allow-bean-definition-overriding: true
servlet:

@ -25,10 +25,10 @@
<artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>io.springboot.ai</groupId>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-elasticsearch-store</artifactId>
<version>1.0.3</version>
</dependency>
<dependency>
@ -73,6 +73,19 @@
</dependencies>
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<build>
<plugins>

@ -1,7 +1,10 @@
package com.supervision.knowsub.config;
import org.elasticsearch.client.RestClient;
import org.springframework.ai.embedding.EmbeddingClient;
import org.springframework.ai.embedding.EmbeddingModel;
import org.springframework.ai.vectorstore.ElasticsearchVectorStore;
import org.springframework.ai.vectorstore.ElasticsearchVectorStoreOptions;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
@ -13,15 +16,19 @@ import org.springframework.util.Assert;
public class ElasticsearchVectorStoreConfig {
@Bean
// @ConditionalOnProperty(prefix = "embedding", name = "url")
public VectorEmbeddingClient vectorEmbeddingClient(EmbeddingProperties embeddingProperties) {
@ConditionalOnProperty(prefix = "embedding", name = "url")
public EmbeddingModel embeddingModel(EmbeddingProperties embeddingProperties) {
Assert.notNull(embeddingProperties.getUrl(), "配置文件embedding:url未找到");
return new VectorEmbeddingClient(embeddingProperties.getUrl());
return new VectorEmbeddingModel(embeddingProperties.getUrl());
}
@Bean
public ElasticsearchVectorStore vectorStore(VectorEmbeddingClient embeddingModel, RestClient restClient) {
return new ElasticsearchVectorStore(restClient, embeddingModel);
@ConditionalOnProperty(prefix = "embedding", name = "url")
public ElasticsearchVectorStore vectorStore(EmbeddingModel embeddingModel, RestClient restClient) {
ElasticsearchVectorStoreOptions options = new ElasticsearchVectorStoreOptions();
options.setIndexName("test_rag");
options.setDimensions(1024);
return new ElasticsearchVectorStore(options, restClient, embeddingModel, true);
}
}

@ -14,11 +14,11 @@ import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
@Slf4j
public class VectorEmbeddingClient extends AbstractEmbeddingClient {
public class VectorEmbeddingModel implements EmbeddingModel {
private final String embeddingUrl;
public VectorEmbeddingClient(String embeddingUrl) {
public VectorEmbeddingModel(String embeddingUrl) {
this.embeddingUrl = embeddingUrl;
}

@ -0,0 +1,33 @@
package com.supervision.knowsub.controller;
import cn.hutool.json.JSONUtil;
import org.springframework.ai.document.Document;
import org.springframework.ai.vectorstore.ElasticsearchVectorStore;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("esTest")
public class EsTestController {
@Autowired
private ElasticsearchVectorStore elasticsearchVectorStore;
@GetMapping("add")
public void add(){
Document document = new Document("测试测试");
elasticsearchVectorStore.add(List.of(document));
}
@GetMapping("search")
public void search(){
List<Document> result = elasticsearchVectorStore.similaritySearch("");
for (Document document : result) {
System.out.println(JSONUtil.toJsonStr(document));
}
}
}

@ -52,6 +52,14 @@
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>1.0.0-M1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
@ -112,4 +120,15 @@
</dependencies>
</dependencyManagement>
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
</project>

Loading…
Cancel
Save