diff --git a/pom.xml b/pom.xml index 79326ea..24d0bf7 100644 --- a/pom.xml +++ b/pom.xml @@ -56,6 +56,17 @@ 1.0.0-beta1 + + dev.langchain4j + langchain4j-milvus + 1.0.0-beta1 + + + dev.langchain4j + langchain4j-embeddings-all-minilm-l6-v2 + 1.0.0-beta1 + + dev.langchain4j langchain4j-community-dashscope-spring-boot-starter diff --git a/src/main/java/com/ai/config/AssistantInit.java b/src/main/java/com/ai/config/AssistantInit.java index 7c7ecc8..39ac764 100644 --- a/src/main/java/com/ai/config/AssistantInit.java +++ b/src/main/java/com/ai/config/AssistantInit.java @@ -39,15 +39,10 @@ public class AssistantInit { ChatLanguageModel qwenModel = QwenChatModel.builder() .apiKey(apiKey) .modelName(model) - .build(); - List documents = FileSystemDocumentLoader.loadDocuments(ragPath); - // for simplicity, we will use an in-memory one: - InMemoryEmbeddingStore embeddingStore = new InMemoryEmbeddingStore<>(); - EmbeddingStoreIngestor.ingest(documents, embeddingStore); + .build();// for simplicity, we will use an in-memory one: return AiServices.builder(Assist.class) .chatMemoryProvider(memoryId -> MessageWindowChatMemory.withMaxMessages(10)) .chatLanguageModel(qwenModel) - .contentRetriever(EmbeddingStoreContentRetriever.from(embeddingStore)) // .tools(new MyCalculator()) .build(); } diff --git a/src/main/java/com/ai/config/SegmentConfig.java b/src/main/java/com/ai/config/SegmentConfig.java index 5dfb4a9..dd83f15 100644 --- a/src/main/java/com/ai/config/SegmentConfig.java +++ b/src/main/java/com/ai/config/SegmentConfig.java @@ -13,7 +13,11 @@ import dev.langchain4j.model.chat.ChatLanguageModel; import dev.langchain4j.rag.content.retriever.ContentRetriever; import dev.langchain4j.rag.content.retriever.EmbeddingStoreContentRetriever; import dev.langchain4j.service.AiServices; -import dev.langchain4j.store.embedding.inmemory.InMemoryEmbeddingStore; +import dev.langchain4j.store.embedding.EmbeddingStore; +import dev.langchain4j.store.embedding.milvus.MilvusEmbeddingStore; +import io.milvus.common.clientenum.ConsistencyLevelEnum; +import io.milvus.param.IndexType; +import io.milvus.param.MetricType; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; @@ -41,7 +45,21 @@ public class SegmentConfig { .modelName(model) .build(); QwenEmbeddingModel embeddingModel = QwenEmbeddingModel.builder().apiKey(apiKey).build(); - InMemoryEmbeddingStore embeddingStore = new InMemoryEmbeddingStore<>(); +// InMemoryEmbeddingStore embeddingStore = new InMemoryEmbeddingStore<>(); + EmbeddingStore embeddingStore = MilvusEmbeddingStore.builder() + .host("localhost") + .port(19530) + .collectionName("langchain4j_collection") + .dimension(1536) + .indexType(IndexType.FLAT) + .metricType(MetricType.COSINE) + .consistencyLevel(ConsistencyLevelEnum.EVENTUALLY) + .autoFlushOnInsert(true) + .idFieldName("id") + .textFieldName("text") + .metadataFieldName("metadata") + .vectorFieldName("vector") + .build(); List documents = FileSystemDocumentLoader.loadDocuments(ragPath); for (Document document : documents) { DocumentByLineSplitter splitter = new DocumentByLineSplitter(300,30); diff --git a/src/main/java/com/ai/controller/LangChainController.java b/src/main/java/com/ai/controller/LangChainController.java index fa461a2..b97d99a 100644 --- a/src/main/java/com/ai/controller/LangChainController.java +++ b/src/main/java/com/ai/controller/LangChainController.java @@ -95,7 +95,7 @@ public class LangChainController { @GetMapping("/embedd/chat") public String embeddChat(@RequestParam("input") String input) { System.out.println("start embedd chat..."); - embeddingService.embedding(input); +// embeddingService.embedding(input); return segmentAssist.chat(input); }