diff --git a/src/main/java/com/huangge1199/ai/config/LangChainConfig.java b/src/main/java/com/huangge1199/ai/config/LangChainConfig.java index 5278a5c..31a0712 100644 --- a/src/main/java/com/huangge1199/ai/config/LangChainConfig.java +++ b/src/main/java/com/huangge1199/ai/config/LangChainConfig.java @@ -4,6 +4,7 @@ import com.huangge1199.ai.service.LangChainService; import dev.langchain4j.memory.ChatMemory; import dev.langchain4j.memory.chat.MessageWindowChatMemory; import dev.langchain4j.model.chat.ChatModel; +import dev.langchain4j.rag.content.retriever.ContentRetriever; import dev.langchain4j.service.AiServices; import jakarta.annotation.Resource; import org.springframework.context.annotation.Bean; @@ -21,6 +22,9 @@ public class LangChainConfig { @Resource private ChatModel qwenChatModel; + @Resource + private ContentRetriever contentRetriever; + @Bean public LangChainService langChainService() { ChatMemory chatMemory = MessageWindowChatMemory.withMaxMessages(10); @@ -28,6 +32,7 @@ public class LangChainConfig { .chatModel(qwenChatModel) .chatMemory(chatMemory) .chatMemoryProvider(memoryId->MessageWindowChatMemory.withMaxMessages(10)) + .contentRetriever(contentRetriever) .build(); } } diff --git a/src/main/java/com/huangge1199/ai/config/RagConfig.java b/src/main/java/com/huangge1199/ai/config/RagConfig.java new file mode 100644 index 0000000..509b499 --- /dev/null +++ b/src/main/java/com/huangge1199/ai/config/RagConfig.java @@ -0,0 +1,61 @@ +package com.huangge1199.ai.config; + +import dev.langchain4j.data.document.Document; +import dev.langchain4j.data.document.loader.FileSystemDocumentLoader; +import dev.langchain4j.data.document.splitter.DocumentByParagraphSplitter; +import dev.langchain4j.data.segment.TextSegment; +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 dev.langchain4j.store.embedding.EmbeddingStoreIngestor; +import jakarta.annotation.Resource; +import lombok.val; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.List; + +/** + * 加载RAG + * + * @author huangge1199 + * @since 2025/7/12 11:25:08 + */ +@Configuration +public class RagConfig { + + @Resource + private EmbeddingModel qwenEmbeddingModel; + + @Resource + private EmbeddingStore embeddingStore; + + @Bean + public ContentRetriever contentRetriever() { + List documents = FileSystemDocumentLoader.loadDocuments("src/main/resources/docs"); + + DocumentByParagraphSplitter documentByParagraphSplitter + = new DocumentByParagraphSplitter(1000, 200); + + EmbeddingStoreIngestor ingestor = EmbeddingStoreIngestor.builder() + .documentSplitter(documentByParagraphSplitter) + .textSegmentTransformer(textSegment -> { + return TextSegment.from( + textSegment.metadata().getString("file_name") + "\n" + textSegment.text(), + textSegment.metadata() + ); + }) + .embeddingModel(qwenEmbeddingModel) + .embeddingStore(embeddingStore) + .build(); + ingestor.ingest(documents); + EmbeddingStoreContentRetriever contentRetriever = EmbeddingStoreContentRetriever.builder() + .embeddingStore(embeddingStore) + .embeddingModel(qwenEmbeddingModel) + .maxResults(5) + .minScore(0.75) + .build(); + return contentRetriever; + } +} diff --git a/src/main/resources/docs/青岛五日游完整行程攻略.md b/src/main/resources/docs/青岛五日游完整行程攻略.md new file mode 100644 index 0000000..32aa28e --- /dev/null +++ b/src/main/resources/docs/青岛五日游完整行程攻略.md @@ -0,0 +1,208 @@ +--- +title: 青岛旅游规划(AI版本) +tags: [游玩] +categories: [游玩] +date: 2025-06-09 17:40:55 +--- +# 🏨 青岛五日游完整行程攻略 + +--- + +## 🏩 酒店住宿 +**海滨花园大酒店** +- 价格控制在200元/晚 +- 每天起始和终止均在此酒店 + +--- + +# 📅 Day 1:青岛经典海滨与市区文化游 + +| 序号 | 景点名称 | 门票(元) | 游玩时长 | 交通费用(元) | 交通耗时 | 游玩时间 | +|-------|-------------------------|----------|---------|--------------|--------|-----------------| +| 🏨 酒店 | 海滨花园大酒店 | — | — | — | — | 08:00 出发 | +| 🏘️ 1 | 栈桥(23) | 免费 | 1小时 | 🚶 0元 | 15分钟 | 08:15~09:15 | +| 🏞️ 2 | 八大峡(17) | 免费 | 1小时 | 🚶 0元 | 10分钟 | 09:25~10:25 | +| 🏖️ 3 | 第一海水浴场(8) | 免费 | 1.5小时 | 🚕 15元 | 20分钟 | 10:45~12:15 | +| 🍜 午餐 | 裴家小吃店(36) | 40元 | 1小时 | 🚕 10元 | 15分钟 | 12:30~13:30 | +| 🌳 4 | 信号山公园山顶(6) | 免费 | 1小时 | 🚕 15元 | 15分钟 | 13:45~14:45 | +| 🌲 5 | 小鱼山公园山顶(5) | 免费 | 1小时 | 🚕 15元 | 15分钟 | 15:00~16:00 | +| 🎡 6 | 中山公园太平山观光索道(14) | 40元 | 1小时 | 🚕 15元 | 15分钟 | 16:15~17:15 | +| 🍲 晚餐 | 裴家小吃店(36) | 40元 | 1小时 | 🚕 15元 | 15分钟 | 17:30~18:30 | +| 🏨 返回酒店 | 海滨花园大酒店 | — | — | 🚕 15元 | 15分钟 | 18:45~19:00 | + +### 💰 当日花销汇总 +- 门票:40元 +- 餐饮:80元 +- 交通:115元 +- **合计:235元** + +--- + +# 📅 Day 2:青岛文化街区与购物小店 + +| 序号 | 景点名称 | 门票(元) | 游玩时长 | 交通费用(元) | 交通耗时 | 游玩时间 | +|-------|-------------------------|----------|---------|--------------|--------|----------------| +| 🏨 酒店 | 海滨花园大酒店 | — | — | — | — | 08:00 出发 | +| 📚 1 | 良友书坊(27) | 免费 | 1小时 | 🚕 15元 | 15分钟 | 08:15~09:15 | +| 🛍️ 2 | 五仁杂货铺(25) | 免费 | 0.5小时 | 🚶 0元 | 10分钟 | 09:25~09:55 | +| 🌳 3 | 小麦岛公园(41) | 免费 | 1小时 | 🚌 5元 | 20分钟 | 10:15~11:15 | +| 🍜 午餐 | 裴家小吃店(36) | 40元 | 1小时 | 🚌 5元 | 20分钟 | 11:35~12:35 | +| ☕ 4 | 年代coffee(20) | 50元 | 1小时 | 🚶 0元 | 10分钟 | 12:45~13:45 | +| 🏘️ 5 | 拜泉路20号(31) | 免费 | 0.5小时 | 🚌 5元 | 20分钟 | 14:05~14:35 | +| 🏪 6 | 友客便利店(嘉定路店)(30) | 免费 | 0.5小时 | 🚶 0元 | 10分钟 | 14:45~15:15 | +| 🛤️ 7 | 琴屿路(22) | 免费 | 0.5小时 | 🚌 5元 | 15分钟 | 15:30~16:00 | +| 🍲 晚餐 | 裴家小吃店(36) | 40元 | 1小时 | 🚌 5元 | 15分钟 | 16:15~17:15 | +| 🏨 返回酒店 | 海滨花园大酒店 | — | — | 🚕 15元 | 15分钟 | 17:30~17:45 | + +### 💰 当日花销汇总 +- 门票:0元 +- 餐饮:80元 +- 交通:55元 +- **合计:135元** + +--- + +# 📅 Day 3:青岛山海风光探秘 + +| 序号 | 景点名称 | 门票(元) | 游玩时长 | 交通费用(元) | 交通耗时 | 游玩时间 | +|-------|-------------------------|----------|---------|--------------|--------|----------------| +| 🏨 酒店 | 海滨花园大酒店 | — | — | — | — | 08:00 出发 | +| 🌊 1 | 第三海水浴场(16) | 免费 | 1.5小时 | 🚕 20元 | 20分钟 | 08:20~09:50 | +| 🏘️ 2 | 太平角四路19号(3) | 免费 | 0.5小时 | 🚶 0元 | 10分钟 | 10:00~10:30 | +| 🏘️ 3 | 太平角六路5号(29) | 免费 | 0.5小时 | 🚌 5元 | 15分钟 | 10:45~11:15 | +| 🍜 午餐 | 裴家小吃店(36) | 40元 | 1小时 | 🚌 5元 | 15分钟 | 11:30~12:30 | +| ⛰️ 4 | 信号山公园山顶(6) | 免费 | 1小时 | 🚕 15元 | 15分钟 | 12:45~13:45 | +| 🛤️ 5 | 黄县路(9) | 免费 | 0.5小时 | 🚌 5元 | 15分钟 | 14:00~14:30 | +| 🛤️ 6 | 金口一路(10) | 免费 | 0.5小时 | 🚌 5元 | 15分钟 | 14:45~15:15 | +| 🛤️ 7 | 金口三路(猫猫台阶)(11) | 免费 | 0.5小时 | 🚌 5元 | 15分钟 | 15:30~16:00 | +| 🍲 晚餐 | 裴家小吃店(36) | 40元 | 1小时 | 🚕 15元 | 20分钟 | 16:20~17:20 | +| 🏨 返回酒店 | 海滨花园大酒店 | — | — | 🚕 20元 | 20分钟 | 17:40~18:00 | + +### 💰 当日花销汇总 +- 门票:0元 +- 餐饮:80元 +- 交通:90元 +- **合计:170元** + +--- + +# 📅 Day 4:极地海洋与主题乐园体验 + +| 序号 | 景点名称 | 门票(元) | 游玩时长 | 交通费用(元) | 交通耗时 | 游玩时间 | +|-------|-------------------------|----------|---------|--------------|--------|----------------| +| 🏨 酒店 | 海滨花园大酒店 | — | — | — | — | 08:00 出发 | +| 🐧 1 | 极地海洋公园(2) | 120元 | 3小时 | 🚕 25元 | 25分钟 | 08:25~11:25 | +| 🍜 午餐 | 裴家小吃店(36) | 40元 | 1小时 | 🚕 20元 | 20分钟 | 11:45~12:45 | +| 🎢 2 | 方特梦幻王国(38) | 180元 | 3小时 | 🚕 25元 | 25分钟 | 13:10~16:10 | +| 🍲 晚餐 | 裴家小吃店(36) | 40元 | 1小时 | 🚕 20元 | 20分钟 | 16:30~17:30 | +| 🏨 返回酒店 | 海滨花园大酒店 | — | — | 🚕 25元 | 25分钟 | 17:55~18:20 | + +### 💰 当日花销汇总 +- 门票:300元 +- 餐饮:80元 +- 交通:135元 +- **合计:515元** + +--- + +# 📅 Day 5:乡村风情与文化深度游 + +| 序号 | 景点名称 | 门票(元) | 游玩时长 | 交通费用(元) | 交通耗时 | 游玩时间 | +|-------|-------------------------|----------|---------|--------------|--------|----------------| +| 🏨 酒店 | 海滨花园大酒店 | — | — | — | — | 08:00 出发 | +| 🏘️ 1 | 胶州湾水库(7) | 免费 | 1小时 | 🚕 20元 | 20分钟 | 08:20~09:20 | +| 🏘️ 2 | 灵山湾生态湿地公园(35) | 免费 | 2小时 | 🚕 20元 | 20分钟 | 09:40~11:40 | +| 🍜 午餐 | 裴家小吃店(36) | 40元 | 1小时 | 🚕 20元 | 20分钟 | 12:00~13:00 | +| 🏘️ 3 | 老城区(19) | 免费 | 2小时 | 🚕 20元 | 20分钟 | 13:20~15:20 | +| 🛤️ 4 | 胶州市中心步行街(28) | 免费 | 1小时 | 🚕 15元 | 15分钟 | 15:35~16:35 | +| 🍲 晚餐 | 裴家小吃店(36) | 40元 | 1小时 | 🚕 15元 | 15分钟 | 16:50~17:50 | +| 🏨 返回酒店 | 海滨花园大酒店 | — | — | 🚕 15元 | 15分钟 | 18:05~18:20 | + +### 💰 当日花销汇总 +- 门票:0元 +- 餐饮:80元 +- 交通:110元 +- **合计:190元** + +--- + +# 📝 景点详细介绍 + +### 栈桥(23) +青岛的标志性建筑,始建于1892年,是青岛最早的码头。桥上可以观赏海景与青岛老城区风光。 + +### 八大峡(17) +著名的海滨风景区,以奇石、峭壁和大海闻名,是徒步和摄影的好地方。 + +### 第一海水浴场(8) +青岛最早开放的海水浴场,拥有细腻的沙滩和清澈的海水,夏季非常适合游泳。 + +### 信号山公园山顶(6) +登顶后可以俯瞰整个青岛市区和海岸线,风景壮观。 + +### 小鱼山公园山顶(5) +一处历史悠久的公园,山顶的望海亭是观赏青岛老城风光的好去处。 + +### 中山公园太平山观光索道(14) +索道连接中山公园和太平山,乘坐可俯瞰城市风光,适合轻松游览。 + +### 良友书坊(27) +青岛的独立书店,文化氛围浓厚,适合文艺青年静心阅读。 + +### 五仁杂货铺(25) +一间充满怀旧气息的小店,售卖各种有趣的小物件。 + +### 小麦岛公园(41) +滨海公园,环境优美,是散步和休闲的好去处。 + +### 年代coffee(20) +当地受欢迎的咖啡馆,提供各类特色咖啡和甜点。 + +### 拜泉路20号(31) +历史街区,保留了许多老青岛的建筑风格。 + +### 友客便利店(嘉定路店)(30) +便捷的购物点,适合补充日常用品。 + +### 琴屿路(22) +安静的街道,适合拍照和散步。 + +### 第三海水浴场(16) +青岛著名的海水浴场之一,环境优美,适合游泳和晒太阳。 + +### 太平角四路19号(3) / 太平角六路5号(29) +历史建筑区,体现青岛的德式建筑风格。 + +### 黄县路(9) / 金口一路(10) / 金口三路(猫猫台阶)(11) +老城区特色街道,适合感受青岛老城区生活氛围。 + +### 极地海洋公园(2) +大型海洋主题公园,有企鹅、海豚表演等多种海洋生物展览。 + +### 方特梦幻王国(38) +大型主题乐园,适合家庭和年轻人,设施丰富。 + +### 胶州湾水库(7) +自然风景区,环境幽静,适合短途郊游。 + +### 灵山湾生态湿地公园(35) +自然保护区,鸟类繁多,是生态旅游胜地。 + +### 老城区(19) +青岛最古老的城区,建筑保留了众多德式风格。 + +### 胶州市中心步行街(28) +商业街区,购物和美食聚集地。 + +--- + +# 💰 本次青岛五日游总花销汇总 + +| 类别 | 费用(元) | +|-------|------------| +| 门票总计 | 340 | +| 餐饮总计 | 400 | +| 交通总计 | 505 | +| **总计** | **1245元** | + +---