| ¶Ô±ÈÐÂÎļþ |
| | |
| | | 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读åæå®ç®å½ä¸çç¥è¯åºææ¡£ |
| | | // //并使ç¨é»è®¤çææ¡£è§£æå¨å¯¹ææ¡£è¿è¡è§£æ |
| | | // 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çDocument对象 |
| | | //// List<Document> documents = new ArrayList<>(); |
| | | // |
| | | // //使ç¨å
ååéåå¨ |
| | | // InMemoryEmbeddingStore<TextSegment> inMemoryEmbeddingStore = new InMemoryEmbeddingStore<>(); |
| | | // //使ç¨é»è®¤çææ¡£åå²å¨ |
| | | // 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(); |
| | | } |
| | | } |