解决AI中大文件上传的问题
This commit is contained in:
parent
081bbbd629
commit
98ed6eafdb
|
|
@ -62,6 +62,10 @@ public class ElePropertyConfig {
|
||||||
@Value("${backup.mysql.path}")
|
@Value("${backup.mysql.path}")
|
||||||
private String sqlDirs;
|
private String sqlDirs;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Value("${ai.store.max.docs:200}")
|
||||||
|
private Integer aiMaxDocs;
|
||||||
|
|
||||||
public String getEleTmpPath() {
|
public String getEleTmpPath() {
|
||||||
if (EleCommonUtil.isWinOs()) {
|
if (EleCommonUtil.isWinOs()) {
|
||||||
return winPrefix + eleTmpPath;
|
return winPrefix + eleTmpPath;
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@ import org.springframework.ai.document.DocumentReader;
|
||||||
import org.springframework.ai.ollama.OllamaChatModel;
|
import org.springframework.ai.ollama.OllamaChatModel;
|
||||||
import org.springframework.ai.reader.TextReader;
|
import org.springframework.ai.reader.TextReader;
|
||||||
import org.springframework.ai.reader.pdf.PagePdfDocumentReader;
|
import org.springframework.ai.reader.pdf.PagePdfDocumentReader;
|
||||||
|
import org.springframework.ai.transformer.splitter.TokenTextSplitter;
|
||||||
import org.springframework.ai.vectorstore.VectorStore;
|
import org.springframework.ai.vectorstore.VectorStore;
|
||||||
import org.springframework.ai.chat.model.ChatResponse;
|
import org.springframework.ai.chat.model.ChatResponse;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
@ -115,7 +116,7 @@ public class ChatService {
|
||||||
case "txt", "csv", "text" -> {
|
case "txt", "csv", "text" -> {
|
||||||
Path tempFile = saveUploadedFileToTemp(file);
|
Path tempFile = saveUploadedFileToTemp(file);
|
||||||
DocumentReader documentReader = new TextReader(String.valueOf(tempFile.toUri().toURL()));
|
DocumentReader documentReader = new TextReader(String.valueOf(tempFile.toUri().toURL()));
|
||||||
documents = documentReader.get();
|
documents = new TokenTextSplitter().apply(documentReader.get());
|
||||||
Files.deleteIfExists(tempFile);
|
Files.deleteIfExists(tempFile);
|
||||||
}
|
}
|
||||||
case "xls" -> {
|
case "xls" -> {
|
||||||
|
|
@ -212,6 +213,7 @@ public class ChatService {
|
||||||
return ElectromagneticResultUtil.fail("-1", StrFormatter.format("当前格式 {} 不支持", fileType));
|
return ElectromagneticResultUtil.fail("-1", StrFormatter.format("当前格式 {} 不支持", fileType));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
documents = documents.subList(0, Math.min(elePropertyConfig.getAiMaxDocs(), documents.size()));
|
||||||
vectorStore.write(documents);
|
vectorStore.write(documents);
|
||||||
for (Document document : documents) {
|
for (Document document : documents) {
|
||||||
aiFileUploadRecordMapper.insert(new AiFileUploadRecord().setId(IdWorker.getSnowFlakeIdString())
|
aiFileUploadRecordMapper.insert(new AiFileUploadRecord().setId(IdWorker.getSnowFlakeIdString())
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,7 @@ pagehelper.reasonable=false
|
||||||
server.port=12396
|
server.port=12396
|
||||||
winPrefix:D:/tmp
|
winPrefix:D:/tmp
|
||||||
data.ele.tmp.path=/szsd/data/ele/prj/dev/tmp
|
data.ele.tmp.path=/szsd/data/ele/prj/dev/tmp
|
||||||
|
ai.store.max.docs=200
|
||||||
# sys path
|
# sys path
|
||||||
data.sys.prj.path=/szsd/data/ele/prj/dev/sys_project/
|
data.sys.prj.path=/szsd/data/ele/prj/dev/sys_project/
|
||||||
data.sys.upload.path=/szsd/data/ele/prj/dev/sys_upload/
|
data.sys.upload.path=/szsd/data/ele/prj/dev/sys_upload/
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,15 @@
|
||||||
//import jakarta.annotation.Resource;
|
//import jakarta.annotation.Resource;
|
||||||
//import org.junit.jupiter.api.Test;
|
//import org.junit.jupiter.api.Test;
|
||||||
//import org.springframework.ai.document.Document;
|
//import org.springframework.ai.document.Document;
|
||||||
//import org.springframework.ai.reader.pdf.PagePdfDocumentReader;
|
//import org.springframework.ai.document.DocumentReader;
|
||||||
|
//import org.springframework.ai.reader.TextReader;
|
||||||
|
//import org.springframework.ai.transformer.splitter.TokenTextSplitter;
|
||||||
//import org.springframework.ai.vectorstore.VectorStore;
|
//import org.springframework.ai.vectorstore.VectorStore;
|
||||||
//import org.springframework.boot.test.context.SpringBootTest;
|
//import org.springframework.boot.test.context.SpringBootTest;
|
||||||
//
|
//
|
||||||
|
//import java.io.File;
|
||||||
|
//import java.net.MalformedURLException;
|
||||||
|
//import java.nio.file.Path;
|
||||||
//import java.util.List;
|
//import java.util.List;
|
||||||
//
|
//
|
||||||
//@SpringBootTest(classes = Application.class)
|
//@SpringBootTest(classes = Application.class)
|
||||||
|
|
@ -15,11 +20,19 @@
|
||||||
// private VectorStore vectorStore;
|
// private VectorStore vectorStore;
|
||||||
//
|
//
|
||||||
// @Test
|
// @Test
|
||||||
// public void testTree() {
|
// public void testTree() throws MalformedURLException {
|
||||||
// String path = "D:/wjj.pdf";
|
// String path = "D:/明朝那些事儿.txt";
|
||||||
// PagePdfDocumentReader pagePdfDocumentReader = new PagePdfDocumentReader(path);
|
// File file = new File(path);
|
||||||
// List<Document> read = pagePdfDocumentReader.read();
|
// Path tempFile = file.toPath();
|
||||||
// System.out.println("read = " + read);
|
// DocumentReader documentReader = new TextReader(String.valueOf(tempFile.toUri().toURL()));
|
||||||
|
// List<Document> documents = new TokenTextSplitter().apply(documentReader.get());
|
||||||
|
// documents = documents.subList(0, 200);
|
||||||
|
// vectorStore.write(documents);
|
||||||
|
//
|
||||||
|
//// Path tempFile = Paths.get(file.getAbsolutePath());
|
||||||
|
//// DocumentReader documentReader = new TextReader(String.valueOf(tempFile.toUri().toURL()));
|
||||||
|
//// List<Document> documents = documentReader.get();
|
||||||
|
//// vectorStore.write(documents);
|
||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
//}
|
//}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue