58 lines
1.9 KiB
Java
58 lines
1.9 KiB
Java
package com.ai.controller;
|
|
|
|
import com.ai.service.SimilarService;
|
|
import dev.langchain4j.community.model.dashscope.QwenEmbeddingModel;
|
|
import dev.langchain4j.data.document.Document;
|
|
import dev.langchain4j.data.document.loader.FileSystemDocumentLoader;
|
|
import dev.langchain4j.data.document.splitter.DocumentByLineSplitter;
|
|
import dev.langchain4j.data.embedding.Embedding;
|
|
import dev.langchain4j.data.segment.TextSegment;
|
|
import dev.langchain4j.store.embedding.EmbeddingStore;
|
|
import jakarta.annotation.Resource;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
import java.util.List;
|
|
|
|
@RestController
|
|
@RequestMapping("/milvus")
|
|
public class MilvusController {
|
|
|
|
@Autowired
|
|
private SimilarService similarService;
|
|
|
|
@Resource
|
|
private QwenEmbeddingModel embeddingModel;
|
|
|
|
@Resource
|
|
private EmbeddingStore<TextSegment> embeddingStore;
|
|
|
|
@Value("${rag.path}")
|
|
private String ragPath;
|
|
|
|
@RequestMapping("/create")
|
|
public String create() {
|
|
similarService.createCollection();
|
|
return "milvus collection create";
|
|
}
|
|
|
|
@RequestMapping("/vector")
|
|
public String vector() {
|
|
similarService.insertProducts();
|
|
return "vector create";
|
|
}
|
|
|
|
@RequestMapping("/import")
|
|
public void ImportShopData() {
|
|
List<Document> documents = FileSystemDocumentLoader.loadDocuments(ragPath);
|
|
for (Document document : documents) {
|
|
DocumentByLineSplitter splitter = new DocumentByLineSplitter(150,30);
|
|
List<TextSegment> segments = splitter.split(document);
|
|
List<Embedding> embeddings = embeddingModel.embedAll(segments).content();
|
|
embeddingStore.addAll(embeddings, segments);
|
|
}
|
|
}
|
|
}
|