mirror of
https://gitcode.com/ageerle/ruoyi-ai.git
synced 2026-03-14 05:03:43 +08:00
增加Excel文档加载功能,处理向量库管理createSchema方法WeaviateEmbeddingStore.builder().build();直接构建报错问题。
This commit is contained in:
@@ -103,6 +103,18 @@
|
||||
<version>1.19.6</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>dev.langchain4j</groupId>
|
||||
<artifactId>langchain4j-document-parser-apache-tika</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- ruoyi-knowledge-api/pom.xml -->
|
||||
<dependency>
|
||||
<groupId>commons-io</groupId>
|
||||
<artifactId>commons-io</artifactId>
|
||||
<version>2.17.0</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
package org.ruoyi.chain.loader;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.ruoyi.chain.split.CharacterTextSplitter;
|
||||
import org.ruoyi.chain.split.CodeTextSplitter;
|
||||
import org.ruoyi.chain.split.MarkdownTextSplitter;
|
||||
import org.ruoyi.chain.split.TokenTextSplitter;
|
||||
import org.ruoyi.chain.split.*;
|
||||
|
||||
import org.ruoyi.constant.FileType;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -16,6 +13,8 @@ public class ResourceLoaderFactory {
|
||||
private final CodeTextSplitter codeTextSplitter;
|
||||
private final MarkdownTextSplitter markdownTextSplitter;
|
||||
private final TokenTextSplitter tokenTextSplitter;
|
||||
private final ExcelTextSplitter excelTextSplitter;
|
||||
|
||||
public ResourceLoader getLoaderByFileType(String fileType){
|
||||
if (FileType.isTextFile(fileType)){
|
||||
return new TextFileLoader(characterTextSplitter);
|
||||
@@ -25,6 +24,8 @@ public class ResourceLoaderFactory {
|
||||
return new PdfFileLoader(characterTextSplitter);
|
||||
} else if (FileType.isMdFile(fileType)) {
|
||||
return new MarkDownFileLoader(markdownTextSplitter);
|
||||
}else if (FileType.isExcel(fileType)) {
|
||||
return new ExcelFileLoader(excelTextSplitter);
|
||||
}else if (FileType.isCodeFile(fileType)) {
|
||||
return new CodeFileLoader(codeTextSplitter);
|
||||
}else {
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package org.ruoyi.chain.split;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Component
|
||||
@AllArgsConstructor
|
||||
@Slf4j
|
||||
public class ExcelTextSplitter implements TextSplitter{
|
||||
@Override
|
||||
public List<String> split(String content, String kid) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,8 @@ public class FileType {
|
||||
public static final String DOC = "doc";
|
||||
public static final String DOCX = "docx";
|
||||
public static final String PDF = "pdf";
|
||||
public static final String XLS = "xls";
|
||||
public static final String XLSX = "xlsx";
|
||||
|
||||
public static final String LOG = "log";
|
||||
public static final String XML = "xml";
|
||||
@@ -88,4 +90,13 @@ public class FileType {
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isExcel(String type){
|
||||
if (type.equalsIgnoreCase(XLS) || type.equalsIgnoreCase(XLSX)){
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ import dev.langchain4j.store.embedding.EmbeddingSearchRequest;
|
||||
import dev.langchain4j.store.embedding.EmbeddingStore;
|
||||
import dev.langchain4j.store.embedding.filter.Filter;
|
||||
import dev.langchain4j.store.embedding.filter.comparison.IsEqualTo;
|
||||
import dev.langchain4j.store.embedding.inmemory.InMemoryEmbeddingStore;
|
||||
import dev.langchain4j.store.embedding.milvus.MilvusEmbeddingStore;
|
||||
import dev.langchain4j.store.embedding.qdrant.QdrantEmbeddingStore;
|
||||
import dev.langchain4j.store.embedding.weaviate.WeaviateEmbeddingStore;
|
||||
@@ -39,11 +40,11 @@ public class VectorStoreServiceImpl implements VectorStoreService {
|
||||
|
||||
private final ConfigService configService;
|
||||
|
||||
Map<String,EmbeddingStore<TextSegment>> storeMap;
|
||||
Map<String,EmbeddingStore<TextSegment>> storeMap = new HashMap<>();
|
||||
|
||||
@Override
|
||||
public void createSchema(String kid,String modelName) {
|
||||
EmbeddingStore<TextSegment> embeddingStore = WeaviateEmbeddingStore.builder().build();
|
||||
EmbeddingStore<TextSegment> embeddingStore;
|
||||
switch (modelName) {
|
||||
case "weaviate" -> {
|
||||
String protocol = configService.getConfigValue("weaviate", "protocol");
|
||||
@@ -78,6 +79,10 @@ public class VectorStoreServiceImpl implements VectorStoreService {
|
||||
.collectionName(collectionName)
|
||||
.build();
|
||||
}
|
||||
default -> {
|
||||
//使用内存
|
||||
embeddingStore = new InMemoryEmbeddingStore<>();
|
||||
}
|
||||
}
|
||||
storeMap.put(kid,embeddingStore);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user