From 7efa94871b0931d1da0b16f9565eb79ce5fb81fc Mon Sep 17 00:00:00 2001 From: chenxudong Date: Mon, 26 May 2025 09:55:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E9=80=9A=E4=BA=86=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../software/manage/config/AiAdvisor.java | 4 +++- .../manage/service/serviceimpl/ChatService.java | 17 ++++++++++++++++- .../src/main/resources/application.properties | 6 +++--- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/config/AiAdvisor.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/config/AiAdvisor.java index 1cee6ba..5607318 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/config/AiAdvisor.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/config/AiAdvisor.java @@ -1,9 +1,12 @@ package com.electromagnetic.industry.software.manage.config; import org.springframework.ai.chat.client.advisor.MessageChatMemoryAdvisor; +import org.springframework.ai.embedding.EmbeddingModel; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; +import java.util.Map; + @Component public class AiAdvisor { @@ -11,5 +14,4 @@ public class AiAdvisor { // public MessageChatMemoryAdvisor messageChatMemoryAdvisor() { // return new MessageChatMemoryAdvisor(new InMemoryChatMemory()); // } - } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/ChatService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/ChatService.java index 86f8655..411fad6 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/ChatService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/ChatService.java @@ -32,6 +32,7 @@ import org.springframework.ai.ollama.OllamaChatModel; import org.springframework.ai.ollama.api.OllamaOptions; import org.springframework.ai.reader.TextReader; import org.springframework.ai.transformer.splitter.TokenTextSplitter; +import org.springframework.ai.vectorstore.SearchRequest; import org.springframework.ai.vectorstore.VectorStore; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -74,6 +75,16 @@ public class ChatService { // return ElectromagneticResultUtil.success(true); // } +// @Transactional(rollbackFor = Exception.class) +// public ElectromagneticResult addFromUpload(MultipartFile file) throws Exception { +// String s = FileUtil.readString("D:\\datas\\aidocs\\HB8451民用飞机燃油系统电搭接要求.txt", Charset.defaultCharset()); +// Document document = new Document(s); +// List newDocuments = new TokenTextSplitter().apply(List.of(document)); +// vectorStore.write(newDocuments); +// return ElectromagneticResultUtil.success(true); +// } + + @Transactional(rollbackFor = Exception.class) public ElectromagneticResult addFromUpload(MultipartFile file) throws Exception { @@ -208,7 +219,11 @@ public class ChatService { UserThreadLocal.set(userLoginInfo); aiQuestionRecordMapper.insert(record); UserThreadLocal.remove(); - List documents = vectorStore.similaritySearch(queryDTO.getMsg()); + List documents = vectorStore.similaritySearch(SearchRequest.builder() +// .topK(20) +// .similarityThreshold(0.7) + .query(queryDTO.getMsg()) + .build()); Set files = new LinkedHashSet<>(); assert documents != null; diff --git a/electrmangnetic/src/main/resources/application.properties b/electrmangnetic/src/main/resources/application.properties index b333390..5d5d804 100644 --- a/electrmangnetic/src/main/resources/application.properties +++ b/electrmangnetic/src/main/resources/application.properties @@ -12,13 +12,13 @@ spring.datasource.password=123456 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource #ai spring.ai.ollama.base-url=http://localhost:11434 -spring.ai.ollama.chat.options.model=deepseek-r1:14b +spring.ai.ollama.chat.options.model=qwen3:8b spring.ai.ollama.chat.options.num-g-p-u=1 spring.ai.ollama.embedding.options.internal-tool-execution-enabled=true -spring.ai.ollama.embedding.options.model=nomic-embed-text +spring.ai.ollama.embedding.options.model=bge-m3:567m spring.ai.vectorstore.mariadb.initialize-schema=true spring.ai.vectorstore.mariadb.distance-type=COSINE -spring.ai.vectorstore.mariadb.dimensions=768 +spring.ai.vectorstore.mariadb.dimensions=1024 spring.ai.vectorstore.mariadb.table-name=ai_rag spring.thymeleaf.suffix=.html spring.thymeleaf.prefix=classpath:/templates/