From 1ca5584d7e3200a9af65a099bd26d3593e2ba702 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期四, 07 五月 2026 14:36:08 +0800
Subject: [PATCH] 迁移pro

---
 src/main/java/com/ruoyi/ai/config/XiaozhiAgentConfig.java |   91 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 91 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/ai/config/XiaozhiAgentConfig.java b/src/main/java/com/ruoyi/ai/config/XiaozhiAgentConfig.java
new file mode 100644
index 0000000..27e5a6b
--- /dev/null
+++ b/src/main/java/com/ruoyi/ai/config/XiaozhiAgentConfig.java
@@ -0,0 +1,91 @@
+package com.ruoyi.ai.config;
+
+import com.ruoyi.ai.store.MongoChatMemoryStore;
+import dev.langchain4j.memory.chat.ChatMemoryProvider;
+import dev.langchain4j.memory.chat.MessageWindowChatMemory;
+import dev.langchain4j.model.embedding.EmbeddingModel;
+import dev.langchain4j.rag.content.retriever.ContentRetriever;
+import dev.langchain4j.rag.content.retriever.EmbeddingStoreContentRetriever;
+import dev.langchain4j.store.embedding.EmbeddingStore;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author :yys
+ * @date : 2025/5/2 20:01
+ */
+@Configuration
+public class XiaozhiAgentConfig {
+
+    @Autowired
+    private MongoChatMemoryStore mongoChatMemoryStore;
+
+    @Autowired
+    private EmbeddingStore embeddingStore;
+    @Autowired
+    private EmbeddingModel embeddingModel;
+
+//    @Value("${knowledge.one}")
+//    private String one;
+//
+//    @Value("${knowledge.two}")
+//    private String two;
+//
+//    @Value("${knowledge.three}")
+//    private String three;
+
+    @Bean
+    ChatMemoryProvider chatMemoryProviderXiaozhi() {
+        return memoryId -> MessageWindowChatMemory.builder()
+                .id(memoryId)
+                .maxMessages(20)
+                .chatMemoryStore(mongoChatMemoryStore)
+                .build();
+    }
+
+//    @Bean
+//    ContentRetriever contentRetrieverXiaozhi() {
+//        //浣跨敤FileSystemDocumentLoader璇诲彇鎸囧畾鐩綍涓嬬殑鐭ヨ瘑搴撴枃妗�
+//        //骞朵娇鐢ㄩ粯璁ょ殑鏂囨。瑙f瀽鍣ㄥ鏂囨。杩涜瑙f瀽
+//        Document document1 = FileSystemDocumentLoader.loadDocument(one);
+////        Document document2 = FileSystemDocumentLoader.loadDocument(two);
+////        Document document3 = FileSystemDocumentLoader.loadDocument(three);
+////        List<Document> documents = Arrays.asList(document1, document2, document3);
+//
+//        List<Document> documents = Collections.singletonList(document1);
+////         2. 灏嗘暟鎹簱鏁版嵁杞负LangChain4j鐨凞ocument瀵硅薄
+////        List<Document> documents = new ArrayList<>();
+//
+//        //浣跨敤鍐呭瓨鍚戦噺瀛樺偍
+//        InMemoryEmbeddingStore<TextSegment> inMemoryEmbeddingStore = new InMemoryEmbeddingStore<>();
+//        //浣跨敤榛樿鐨勬枃妗e垎鍓插櫒
+//        EmbeddingStoreIngestor.builder()
+//                .embeddingModel(embeddingModel)
+//                .embeddingStore(inMemoryEmbeddingStore)
+//                .build()
+//                .ingest(documents);
+//        //浠庡祵鍏ュ瓨鍌紙EmbeddingStore锛夐噷妫�绱㈠拰鏌ヨ鍐呭鐩稿叧鐨勪俊鎭�
+//        return EmbeddingStoreContentRetriever.builder()
+//                .embeddingModel(embeddingModel)
+//                .embeddingStore(inMemoryEmbeddingStore)
+//                .build();
+//    }
+
+    @Bean
+    ContentRetriever contentRetrieverXiaozhiPincone() {
+        // 鍒涘缓涓�涓� EmbeddingStoreContentRetriever 瀵硅薄锛岀敤浜庝粠宓屽叆瀛樺偍涓绱㈠唴瀹�
+        return EmbeddingStoreContentRetriever
+                .builder()
+                // 璁剧疆鐢ㄤ簬鐢熸垚宓屽叆鍚戦噺鐨勫祵鍏ユā鍨�
+                .embeddingModel(embeddingModel)
+                // 鎸囧畾瑕佷娇鐢ㄧ殑宓屽叆瀛樺偍
+                .embeddingStore(embeddingStore)
+                // 璁剧疆鏈�澶ф绱㈢粨鏋滄暟閲忥紝杩欓噷琛ㄧず鏈�澶氳繑鍥� 1 鏉″尮閰嶇粨鏋�
+                .maxResults(1)
+                // 璁剧疆鏈�灏忓緱鍒嗛槇鍊硷紝鍙湁寰楀垎澶т簬绛変簬 0.8 鐨勭粨鏋滄墠浼氳杩斿洖
+                .minScore(0.8)
+                // 鏋勫缓鏈�缁堢殑 EmbeddingStoreContentRetriever 瀹炰緥
+                .build();
+    }
+}

--
Gitblit v1.9.3