liang-ai/src/main/java/com/ai/controller/MilvusController.java

58 lines
1.9 KiB
Java
Raw Normal View History

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);
}
}
}