├── .gitignore ├── LICENSE ├── README.md ├── README_ch.md ├── assert ├── es.sql ├── es_search_chunk.sql └── install.sh ├── doc ├── LLM.md ├── balance.md ├── chunk.md ├── db.md ├── design.md ├── embedding.md ├── install.md ├── parser.md ├── pipeline.md └── search.md ├── pom.xml ├── src ├── main │ └── java │ │ └── org │ │ ├── agent │ │ ├── Agent.java │ │ ├── EmergentOrganization.java │ │ ├── Environment.java │ │ ├── HierarchicalOrganization.java │ │ ├── Interaction.java │ │ ├── MASExample.java │ │ └── Organization.java │ │ ├── chunk │ │ ├── FixedSizeSplitter.java │ │ ├── ParagraphSplitter.java │ │ ├── RecursiveSplitter.java │ │ ├── SemanticBlockSplitter.java │ │ ├── SentenceSplitter.java │ │ └── TextSplitter.java │ │ ├── constant │ │ └── Config.java │ │ ├── controler │ │ ├── ChatController.java │ │ └── SearchController.java │ │ ├── demo │ │ ├── Debate.java │ │ └── SimulatorDebate.java │ │ ├── entity │ │ ├── Document.java │ │ ├── File.java │ │ ├── KnowledgeBase.java │ │ ├── SearchInput.java │ │ ├── SearchOutput.java │ │ └── User.java │ │ ├── parser │ │ ├── ExcelParser.java │ │ ├── FileParser.java │ │ ├── FileParserFactory.java │ │ ├── HTMLParser.java │ │ ├── PDFParser.java │ │ ├── PPTParser.java │ │ ├── PureTextParser.java │ │ └── WordParser.java │ │ ├── rag │ │ ├── AdvancedRAG.java │ │ ├── ModularRAG.java │ │ └── NaiveRAG.java │ │ ├── search │ │ ├── Pipeline.java │ │ ├── RecallStrategy.java │ │ ├── RerankStrategy.java │ │ └── SortStrategy.java │ │ ├── service │ │ ├── LLM │ │ │ ├── OllamaChatService.java │ │ │ └── OpenAIChatService.java │ │ ├── Main.java │ │ ├── balance │ │ │ ├── LoadBalancer.java │ │ │ ├── Main.java │ │ │ ├── NacosLoadBalancingClient.java │ │ │ ├── RandomLoadBalancer.java │ │ │ ├── RoundRobinLoadBalancer.java │ │ │ └── WeightedRandomLoadBalancer.java │ │ ├── db │ │ │ ├── ESClient.java │ │ │ ├── MinIOClient.java │ │ │ ├── MysqlClient.java │ │ │ └── RedisClient.java │ │ └── embedding │ │ │ ├── BaichuanEmbeddingService.java │ │ │ ├── EmbeddingService.java │ │ │ ├── JinaEmbeddingRerankService.java │ │ │ └── JinaEmbeddingService.java │ │ ├── utils │ │ ├── DistanceUtils.java │ │ ├── HttpClientUtil.java │ │ ├── SnowflakeIdGenerator.java │ │ └── TrustAllCerts.java │ │ └── web │ │ ├── KeywordToMarkdownCrawler.java │ │ ├── SearchEngine.java │ │ └── UrlToMarkdownConverter.java └── test │ └── java │ └── org │ ├── chat │ └── NaiveRAGTest.java │ └── db │ ├── ESClientTest.java │ ├── ElasticsearchConnectionTest.java │ └── OpenAIChatServiceTest.java └── webapp ├── resources ├── biglog.png └── ezgif-81180eba7adb9d.gif └── views ├── chat.html ├── knowledge_base.html ├── login.html ├── main.html ├── model_management.html ├── register.html └── search.html /.gitignore: -------------------------------------------------------------------------------- 1 | # Build and Release Folders 2 | bin-debug/ 3 | bin-release/ 4 | [Oo]bj/ 5 | [Bb]in/ 6 | 7 | # Other files and folders 8 | .settings/ 9 | 10 | # Executables 11 | *.swf 12 | *.air 13 | *.ipa 14 | *.apk 15 | 16 | # Project files, i.e. `.project`, `.actionScriptProperties` and `.flexProperties` 17 | # should NOT be excluded as they contain compiler settings and other important 18 | # information for Eclipse / Flash Builder. 19 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
查询关键词: ").append(queryDisplayed).append("
"); 88 | } 89 | 90 | // 解析 organic_results 数组中的 title、link 和 snippet 字段 91 | JsonArray organicResults = results.getAsJsonArray("organic_results"); 92 | if (organicResults != null) { 93 | for (int i = 0; i < organicResults.size(); i++) { 94 | JsonObject result = organicResults.get(i).getAsJsonObject(); 95 | String title = result.get("title").getAsString(); 96 | String link = result.get("link").getAsString(); 97 | String snippet = ""; 98 | if (result.has("snippet") &&!result.get("snippet").isJsonNull()) { 99 | snippet = result.get("snippet").getAsString(); 100 | } 101 | html.append("").append(snippet).append("
"); 104 | html.append("序号 | 标题 | 链接 | 摘要 |
---|---|---|---|
").append(i + 1).append(" | "); 99 | html.append("").append(title).append(" | "); 100 | html.append("").append(link).append(" | "); 101 | html.append("").append(snippet).append(" | "); 102 | html.append("