diff --git a/pom.xml b/pom.xml index e905ef2..d47f76d 100644 --- a/pom.xml +++ b/pom.xml @@ -36,6 +36,11 @@ pom import + + dev.langchain4j + langchain4j-easy-rag + 1.0.0-beta1 + dev.langchain4j diff --git a/src/main/java/com/ai/config/AssistantInit.java b/src/main/java/com/ai/config/AssistantInit.java index d4da441..c824adc 100644 --- a/src/main/java/com/ai/config/AssistantInit.java +++ b/src/main/java/com/ai/config/AssistantInit.java @@ -2,26 +2,40 @@ package com.ai.config; import com.ai.service.Assist; import dev.langchain4j.community.model.dashscope.QwenChatModel; +import dev.langchain4j.data.document.Document; +import dev.langchain4j.data.document.loader.FileSystemDocumentLoader; +import dev.langchain4j.data.segment.TextSegment; import dev.langchain4j.memory.chat.MessageWindowChatMemory; import dev.langchain4j.model.chat.ChatLanguageModel; +import dev.langchain4j.rag.content.retriever.EmbeddingStoreContentRetriever; import dev.langchain4j.service.AiServices; +import dev.langchain4j.store.embedding.EmbeddingStoreIngestor; +import dev.langchain4j.store.embedding.inmemory.InMemoryEmbeddingStore; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import java.util.List; + @Configuration @RequiredArgsConstructor public class AssistantInit { - ChatLanguageModel qwenModel = QwenChatModel.builder() - .apiKey("sk-2f703a41fff0488e9b6888013d2ee58a") - .modelName("deepseek-v3") - .build(); + // All files in a directory, txt seems to be faster @Bean public Assist init() { + ChatLanguageModel qwenModel = QwenChatModel.builder() + .apiKey("sk-2f703a41fff0488e9b6888013d2ee58a") + .modelName("deepseek-v3") + .build(); + List documents = FileSystemDocumentLoader.loadDocuments("E:\\ideaProject\\liang-ai"); + // for simplicity, we will use an in-memory one: + InMemoryEmbeddingStore embeddingStore = new InMemoryEmbeddingStore<>(); + EmbeddingStoreIngestor.ingest(documents, embeddingStore); return AiServices.builder(Assist.class) .chatMemoryProvider(memoryId -> MessageWindowChatMemory.withMaxMessages(10)) - .chatLanguageModel(qwenModel).build(); + .chatLanguageModel(qwenModel) + .contentRetriever(EmbeddingStoreContentRetriever.from(embeddingStore)).build(); } } diff --git a/src/main/java/com/ai/http/chat.http b/src/main/java/com/ai/http/chat.http index dca7d85..b2e8618 100644 --- a/src/main/java/com/ai/http/chat.http +++ b/src/main/java/com/ai/http/chat.http @@ -2,7 +2,7 @@ GET http://localhost:8080/langchain/chat?input=今天天气如何 ### 测试 LangChainController 的 highlevel chat 接口 -GET http://localhost:8080/langchain/high/chat?input=评价一下路飞 +GET http://localhost:8080/langchain/high/chat?input=请推荐3件DWALK商城的商品 ### 测试 LangChainController 的 highlevel memory chat 接口 GET http://localhost:8080/langchain/high/memory-chat?memoryId=1&input=你好,我想要买电脑笔记本 diff --git a/个人知识库 b/个人知识库 new file mode 100644 index 0000000..8507bd9 --- /dev/null +++ b/个人知识库 @@ -0,0 +1,18 @@ +梁靖林个人博客halo +地址:halo.liangjl.top +账号:liangjinglin +密码: 353912918a + +DWALK商城 商品推荐优先级规则 +1.根据本月销量推荐,销量越高,优先级越高,考量占比50% +2.根据评分,评分越高,优先级越高 考量占比50% +3.根据评论数,评论数越多,优先级越高 考量占比10% +4.根据收藏数,收藏数越多,优先级越高 考量占比5% + +DWALK商城商品情况 +1.茅台 销量:100 评分:4 评论数:100 收藏数:100 +2.meta50 销量:200 评分:5 评论数:500 收藏数:5000 +3.机械革命 销量:50 评分:4.5 评论数:80 收藏数:100 +4.潮汕牛肉丸 销量:150 评分:3 评论数:100 收藏数:20 +5.风筒 销量:80 评分:3.5 评论数:50 收藏数:10 +6.口红 销量:30 评分:4.5 评论数:200 收藏数:200 \ No newline at end of file