添加ai功能开关

This commit is contained in:
liuhanqing
2025-11-04 08:59:46 +08:00
parent 597f92b566
commit cb32173d1c
23 changed files with 225 additions and 229 deletions

View File

@@ -1,35 +1,23 @@
package com.ruoyi.ai.chat.config; package com.ruoyi.ai.chat.config;
import com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceBuilder;
import com.mysql.cj.jdbc.MysqlDataSource;
import com.ruoyi.ai.chat.service.impl.InSqlMemory; import com.ruoyi.ai.chat.service.impl.InSqlMemory;
import com.ruoyi.ai.util.service.BasStockToolService; import com.ruoyi.ai.util.service.BasStockToolService;
import com.ruoyi.ai.util.service.ToolService;
import org.mariadb.jdbc.MariaDbDataSource; import org.mariadb.jdbc.MariaDbDataSource;
import org.springframework.ai.chat.client.ChatClient; import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.client.advisor.MessageChatMemoryAdvisor; import org.springframework.ai.chat.client.advisor.MessageChatMemoryAdvisor;
import org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor; import org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor;
import org.springframework.ai.chat.client.advisor.vectorstore.QuestionAnswerAdvisor;
import org.springframework.ai.chat.memory.ChatMemory; import org.springframework.ai.chat.memory.ChatMemory;
import org.springframework.ai.embedding.EmbeddingModel; import org.springframework.ai.embedding.EmbeddingModel;
import org.springframework.ai.openai.OpenAiChatModel; import org.springframework.ai.openai.OpenAiChatModel;
import org.springframework.ai.openai.OpenAiEmbeddingModel;
import org.springframework.ai.openai.api.OpenAiApi;
import org.springframework.ai.tool.ToolCallback;
import org.springframework.ai.tool.ToolCallbackProvider;
import org.springframework.ai.vectorstore.SearchRequest;
import org.springframework.ai.vectorstore.SimpleVectorStore;
import org.springframework.ai.vectorstore.VectorStore; import org.springframework.ai.vectorstore.VectorStore;
import org.springframework.ai.vectorstore.mariadb.MariaDBVectorStore; import org.springframework.ai.vectorstore.mariadb.MariaDBVectorStore;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
import javax.sql.DataSource;
import java.sql.SQLException; import java.sql.SQLException;
@Configuration @Configuration
@@ -40,6 +28,11 @@ public class ChatModelConfig {
@Bean @Bean
@ConditionalOnProperty(
name = "spring.ai.enable", // 配置项名称
havingValue = "true", // 期望的值
matchIfMissing = false // 配置不存在时是否匹配(false=不注册)
)
public ChatClient chatClient(OpenAiChatModel openAiChatModel, ChatMemory chatMemory, BasStockToolService toolService/*, ToolCallbackProvider toolCallbackProvider*/) { public ChatClient chatClient(OpenAiChatModel openAiChatModel, ChatMemory chatMemory, BasStockToolService toolService/*, ToolCallbackProvider toolCallbackProvider*/) {
return ChatClient return ChatClient
//使用的模型 //使用的模型
@@ -63,11 +56,21 @@ public class ChatModelConfig {
* @return * @return
*/ */
@Bean @Bean
@ConditionalOnProperty(
name = "spring.ai.enable", // 配置项名称
havingValue = "true", // 期望的值
matchIfMissing = false // 配置不存在时是否匹配(false=不注册)
)
public ChatMemory chatMemory() { public ChatMemory chatMemory() {
return new InSqlMemory(); return new InSqlMemory();
} }
@Bean @Bean
@ConditionalOnProperty(
name = "spring.ai.enable", // 配置项名称
havingValue = "true", // 期望的值
matchIfMissing = false // 配置不存在时是否匹配(false=不注册)
)
@ConfigurationProperties("spring.datasource.druid.slave") @ConfigurationProperties("spring.datasource.druid.slave")
public MariaDbDataSource dataSource() throws SQLException { public MariaDbDataSource dataSource() throws SQLException {
return DataSourceBuilder.create().username("root") return DataSourceBuilder.create().username("root")
@@ -77,6 +80,11 @@ public class ChatModelConfig {
@Bean @Bean
@ConditionalOnProperty(
name = "spring.ai.enable", // 配置项名称
havingValue = "true", // 期望的值
matchIfMissing = false // 配置不存在时是否匹配(false=不注册)
)
public VectorStore vectorStore(MariaDbDataSource dataSource, EmbeddingModel embeddingModel) throws SQLException { public VectorStore vectorStore(MariaDbDataSource dataSource, EmbeddingModel embeddingModel) throws SQLException {
JdbcTemplate customJdbcTemplate = new JdbcTemplate(dataSource); JdbcTemplate customJdbcTemplate = new JdbcTemplate(dataSource);
return MariaDBVectorStore.builder(customJdbcTemplate, embeddingModel) return MariaDBVectorStore.builder(customJdbcTemplate, embeddingModel)

View File

@@ -3,7 +3,9 @@ package com.ruoyi.ai.chat.controller;
import com.ruoyi.ai.chat.domain.CustomMessage; import com.ruoyi.ai.chat.domain.CustomMessage;
import com.ruoyi.ai.chat.service.ChatService; import com.ruoyi.ai.chat.service.ChatService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
@RestController @RestController

View File

@@ -12,17 +12,16 @@ import org.springframework.core.io.FileSystemResource;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.io.File;
import java.util.List; import java.util.List;
@RestController @RestController
@RequestMapping("/api/embedding") @RequestMapping("/api/embedding")
public class EmbeddingDemoController { public class EmbeddingDemoController {
@Autowired @Autowired(required = false)
private OpenAiEmbeddingModel embeddingModel; private OpenAiEmbeddingModel embeddingModel;
@Autowired @Autowired(required = false)
private VectorStore vectorStore; private VectorStore vectorStore;
/** /**

View File

@@ -6,39 +6,34 @@ import com.ruoyi.ai.chat.domain.CustomMessage;
import com.ruoyi.ai.chat.service.ChatService; import com.ruoyi.ai.chat.service.ChatService;
import com.ruoyi.ai.conversation.domain.Conversations; import com.ruoyi.ai.conversation.domain.Conversations;
import com.ruoyi.ai.conversation.service.IConversationsService; import com.ruoyi.ai.conversation.service.IConversationsService;
import com.ruoyi.ai.message.domain.ChatMessage;
import com.ruoyi.ai.message.service.IChatMessageService; import com.ruoyi.ai.message.service.IChatMessageService;
import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.ai.chat.client.ChatClient; import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.client.advisor.vectorstore.QuestionAnswerAdvisor; import org.springframework.ai.chat.client.advisor.vectorstore.QuestionAnswerAdvisor;
import org.springframework.ai.chat.memory.ChatMemory; import org.springframework.ai.chat.memory.ChatMemory;
import org.springframework.ai.chat.prompt.PromptTemplate; import org.springframework.ai.chat.prompt.PromptTemplate;
import org.springframework.ai.document.Document;
import org.springframework.ai.openai.OpenAiChatModel; import org.springframework.ai.openai.OpenAiChatModel;
import org.springframework.ai.template.st.StTemplateRenderer; import org.springframework.ai.template.st.StTemplateRenderer;
import org.springframework.ai.vectorstore.SearchRequest;
import org.springframework.ai.vectorstore.VectorStore; import org.springframework.ai.vectorstore.VectorStore;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import java.util.Date; import java.util.Date;
import java.util.List;
@Service @Service
public class ChatServiceImpl implements ChatService { public class ChatServiceImpl implements ChatService {
@Autowired @Autowired(required = false)
private ChatClient chatClient; private ChatClient chatClient;
@Autowired @Autowired(required = false)
private OpenAiChatModel openAiChatModel; private OpenAiChatModel openAiChatModel;
@Autowired @Autowired(required = false)
private ChatMemory chatMemory; private ChatMemory chatMemory;
@Autowired @Autowired(required = false)
private VectorStore vectorStore; private VectorStore vectorStore;
@Autowired @Autowired(required = false)
private IChatMessageService chatMessageService; private IChatMessageService chatMessageService;
@Autowired @Autowired(required = false)
private IConversationsService conversationsService; private IConversationsService conversationsService;
// 定义问答模板 // 定义问答模板
@@ -110,6 +105,10 @@ public class ChatServiceImpl implements ChatService {
*/ */
@Override @Override
public Flux<String> chatByUserContent(CustomMessage customMessage) { public Flux<String> chatByUserContent(CustomMessage customMessage) {
if (chatClient == null){
return Flux.just("未开启聊天模型");
}
// 生成唯一会话ID // 生成唯一会话ID
Long sessionId = IdUtil.getSnowflakeNextId(); Long sessionId = IdUtil.getSnowflakeNextId();
//修改会话 //修改会话

View File

@@ -1,10 +1,9 @@
package com.ruoyi.ai.chat.service.impl; package com.ruoyi.ai.chat.service.impl;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import com.ruoyi.ai.message.domain.ChatMessage;
import com.ruoyi.ai.chat.domain.CustomMessage; import com.ruoyi.ai.chat.domain.CustomMessage;
import com.ruoyi.ai.message.domain.ChatMessage;
import com.ruoyi.ai.message.service.IChatMessageService; import com.ruoyi.ai.message.service.IChatMessageService;
import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.ai.chat.memory.ChatMemory; import org.springframework.ai.chat.memory.ChatMemory;
import org.springframework.ai.chat.messages.AssistantMessage; import org.springframework.ai.chat.messages.AssistantMessage;
import org.springframework.ai.chat.messages.Message; import org.springframework.ai.chat.messages.Message;

View File

@@ -1,32 +1,22 @@
package com.ruoyi.ai.conversation.controller; package com.ruoyi.ai.conversation.controller;
import java.util.List;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.ai.conversation.domain.Conversations;
import jakarta.servlet.http.HttpServletResponse; import com.ruoyi.ai.conversation.service.IConversationsService;
import org.springframework.security.access.prepost.PreAuthorize; import com.ruoyi.ai.message.service.IChatMessageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.ai.conversation.domain.Conversations;
import com.ruoyi.ai.conversation.service.IConversationsService;
import com.ruoyi.ai.message.domain.ChatMessage;
import com.ruoyi.ai.message.service.IChatMessageService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import java.util.HashMap; import com.ruoyi.common.enums.BusinessType;
import java.util.Map; import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/** /**
* RAG项目会话管理Controller * RAG项目会话管理Controller

View File

@@ -1,11 +1,12 @@
package com.ruoyi.ai.conversation.domain; package com.ruoyi.ai.conversation.domain;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.Date;
/** /**
* RAG项目会话管理对象 conversations * RAG项目会话管理对象 conversations

View File

@@ -1,8 +1,9 @@
package com.ruoyi.ai.conversation.mapper; package com.ruoyi.ai.conversation.mapper;
import java.util.List;
import com.ruoyi.ai.conversation.domain.Conversations; import com.ruoyi.ai.conversation.domain.Conversations;
import java.util.List;
/** /**
* RAG项目会话管理Mapper接口 * RAG项目会话管理Mapper接口
* *

View File

@@ -1,8 +1,9 @@
package com.ruoyi.ai.conversation.service; package com.ruoyi.ai.conversation.service;
import java.util.List;
import com.ruoyi.ai.conversation.domain.Conversations; import com.ruoyi.ai.conversation.domain.Conversations;
import java.util.List;
/** /**
* RAG项目会话管理Service接口 * RAG项目会话管理Service接口
* *

View File

@@ -1,15 +1,15 @@
package com.ruoyi.ai.conversation.service.impl; package com.ruoyi.ai.conversation.service.impl;
import java.util.Date;
import java.util.List;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import com.ruoyi.ai.conversation.domain.Conversations;
import com.ruoyi.ai.conversation.mapper.ConversationsMapper;
import com.ruoyi.ai.conversation.service.IConversationsService;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.ruoyi.ai.conversation.mapper.ConversationsMapper;
import com.ruoyi.ai.conversation.domain.Conversations; import java.util.Date;
import com.ruoyi.ai.conversation.service.IConversationsService; import java.util.List;
/** /**
* RAG项目会话管理Service业务层处理 * RAG项目会话管理Service业务层处理

View File

@@ -1,25 +1,19 @@
package com.ruoyi.ai.message.controller; package com.ruoyi.ai.message.controller;
import java.util.List; import com.ruoyi.ai.message.domain.ChatMessage;
import jakarta.servlet.http.HttpServletResponse; import com.ruoyi.ai.message.service.IChatMessageService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.ai.message.domain.ChatMessage;
import com.ruoyi.ai.message.service.IChatMessageService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/** /**
* 聊天消息Controller * 聊天消息Controller

View File

@@ -1,10 +1,11 @@
package com.ruoyi.ai.message.domain; package com.ruoyi.ai.message.domain;
import java.math.BigDecimal;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.math.BigDecimal;
/** /**
* 聊天消息对象 chat_message * 聊天消息对象 chat_message

View File

@@ -1,8 +1,9 @@
package com.ruoyi.ai.message.mapper; package com.ruoyi.ai.message.mapper;
import java.util.List;
import com.ruoyi.ai.message.domain.ChatMessage; import com.ruoyi.ai.message.domain.ChatMessage;
import java.util.List;
/** /**
* 聊天消息Mapper接口 * 聊天消息Mapper接口
* *

View File

@@ -1,8 +1,9 @@
package com.ruoyi.ai.message.service; package com.ruoyi.ai.message.service;
import java.util.List;
import com.ruoyi.ai.message.domain.ChatMessage; import com.ruoyi.ai.message.domain.ChatMessage;
import java.util.List;
/** /**
* 聊天消息Service接口 * 聊天消息Service接口
* *

View File

@@ -1,12 +1,13 @@
package com.ruoyi.ai.message.service.impl; package com.ruoyi.ai.message.service.impl;
import java.util.List; import com.ruoyi.ai.message.domain.ChatMessage;
import com.ruoyi.ai.message.mapper.ChatMessageMapper;
import com.ruoyi.ai.message.service.IChatMessageService;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.ruoyi.ai.message.mapper.ChatMessageMapper;
import com.ruoyi.ai.message.domain.ChatMessage; import java.util.List;
import com.ruoyi.ai.message.service.IChatMessageService;
/** /**
* 聊天消息Service业务层处理 * 聊天消息Service业务层处理

View File

@@ -1,25 +1,19 @@
package com.ruoyi.ai.vector.controller; package com.ruoyi.ai.vector.controller;
import java.util.List; import com.ruoyi.ai.vector.domain.KnowledgeFile;
import jakarta.servlet.http.HttpServletResponse; import com.ruoyi.ai.vector.service.IKnowledgeFileService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.ai.vector.domain.KnowledgeFile;
import com.ruoyi.ai.vector.service.IKnowledgeFileService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/** /**
* 知识库文件Controller * 知识库文件Controller

View File

@@ -1,11 +1,12 @@
package com.ruoyi.ai.vector.domain; package com.ruoyi.ai.vector.domain;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.Date;
/** /**
* 知识库文件对象 knowledge_file * 知识库文件对象 knowledge_file

View File

@@ -1,8 +1,9 @@
package com.ruoyi.ai.vector.mapper; package com.ruoyi.ai.vector.mapper;
import java.util.List;
import com.ruoyi.ai.vector.domain.KnowledgeFile; import com.ruoyi.ai.vector.domain.KnowledgeFile;
import java.util.List;
/** /**
* 知识库文件Mapper接口 * 知识库文件Mapper接口
* *

View File

@@ -14,7 +14,6 @@ import org.springframework.ai.reader.pdf.config.PdfDocumentReaderConfig;
import org.springframework.ai.reader.tika.TikaDocumentReader; import org.springframework.ai.reader.tika.TikaDocumentReader;
import org.springframework.ai.vectorstore.VectorStore; import org.springframework.ai.vectorstore.VectorStore;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource; import org.springframework.core.io.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@@ -24,7 +23,7 @@ import java.util.List;
@Service @Service
public class DataVectorService { public class DataVectorService {
@Autowired @Autowired(required = false)
private VectorStore vectorStore; private VectorStore vectorStore;
/** /**

View File

@@ -1,8 +1,9 @@
package com.ruoyi.ai.vector.service; package com.ruoyi.ai.vector.service;
import java.util.List;
import com.ruoyi.ai.vector.domain.KnowledgeFile; import com.ruoyi.ai.vector.domain.KnowledgeFile;
import java.util.List;
/** /**
* 知识库文件Service接口 * 知识库文件Service接口
* *

View File

@@ -1,11 +1,12 @@
package com.ruoyi.ai.vector.service.impl; package com.ruoyi.ai.vector.service.impl;
import java.util.List; import com.ruoyi.ai.vector.domain.KnowledgeFile;
import com.ruoyi.ai.vector.mapper.KnowledgeFileMapper;
import com.ruoyi.ai.vector.service.IKnowledgeFileService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.ruoyi.ai.vector.mapper.KnowledgeFileMapper;
import com.ruoyi.ai.vector.domain.KnowledgeFile; import java.util.List;
import com.ruoyi.ai.vector.service.IKnowledgeFileService;
/** /**
* 知识库文件Service业务层处理 * 知识库文件Service业务层处理

View File

@@ -92,6 +92,7 @@ spring:
max-wait: -1ms max-wait: -1ms
ai: ai:
enable: false
openai: openai:
api-key: sk-dzftrybcpjujsjgehjgtsjzjuhqxciosldcncjtlazxvjams # 密钥key api-key: sk-dzftrybcpjujsjgehjgtsjzjuhqxciosldcncjtlazxvjams # 密钥key
base-url: https://api.siliconflow.cn # 产商地址 base-url: https://api.siliconflow.cn # 产商地址
@@ -120,9 +121,9 @@ spring:
#向量数据库 #向量数据库
vectorstore: vectorstore:
mariadb: mariadb:
initialize-schema: true initialize-schema: truea
distance-type: COSINE distance-type: COSINEa
dimensions: 1024 dimensions: 1024a
# token配置 # token配置