职贝云数AI新零售门户

标题: Java+DeepSeek搭建企业知识库,我只用了一个周末 [打印本页]

作者: ZqUIC    时间: 2025-4-20 08:38
标题: Java+DeepSeek搭建企业知识库,我只用了一个周末
Java + DeepSeek搭建企业知识库,我只用了一个周末

搞Java这么久,第一次感遭到AI能和Java配合得这么默契。一个周末,把公司积压了几百个文档整合进一个智能知识库,还能接入企业微信自动回复。不是我吹,真没想到能这么丝滑。明天就来拆解下我这个“周末奇观”是怎样搞出来的。

## DeepSeek是个啥?

DeepSeek,不是个IDE插件,也不是数据库。它其实是一个**支持大模型问答和知识库构建的平台**。你可以把一堆文档、聊天记录、网页文章丢出来,它能自动切片、向量化,然后就能完成“你问它答”的效果。关键是——它支持API。

这就给了咱Java人一个机会:**用Java写点代码,一边喂文档,一边接企业微信,搭个智能客服系统。**

## 文件上传和预处理:Java这边怎样搞?

DeepSeek接受PDF、Word、Excel啥的,搞得我还以为要手动拖来拖去。但转念一想,不如写个小工具自动化搞定。

我用的就是最原始的Java IO + Apache POI + PDFBox组合拳:

```java
public class DocLoader {

    public static String extractTextFromPdf(File file) throws IOException {
        PDDocument document = PDDocument.load(file);
        PDFTextStripper stripper = new PDFTextStripper();
        String text = stripper.getText(document);
        document.close();
        return text;
    }

    public static String extractTextFromWord(File file) throws Exception {
        FileInputStream fis = new FileInputStream(file);
        XWPFDocument doc = new XWPFDocument(fis);
        XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
        String text = extractor.getText();
        extractor.close();
        return text;
    }

    public static String extractTextFromExcel(File file) throws Exception {
        FileInputStream fis = new FileInputStream(file);
        Workbook workbook = WorkbookFactory.create(fis);
        StringBuilder sb = new StringBuilder();

        for (Sheet sheet : workbook) {
            for (Row row : sheet) {
                for (Cell cell : row) {
                    sb.append(cell.toString()).append(“ ”);
                }
                sb.append(“\n”);
            }
        }

        workbook.close();
        return sb.toString();
    }
}
下面是三个方法,分别提取PDF、Word、Excel的文本。你可以写个循环批量搞定,然后一致存成txt。

温馨提示: 图片里的内容没法直接提取,要用OCR(我用的是腾讯云OCR接口),不然知识库回答会漏内容。
文本向量化上传:调用DeepSeek API


文档处理完,得上传给DeepSeek。这一步我用的是 HttpURLConnection 搭配 multipart/form-data,像手动发POST央求那样。
public class DeepSeekUploader {

    public static void uploadText(String apiKey, String fileContent, String fileName) throws IOException {
        URL url = new URL(“https://api.deepseek.com/upload”);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setDoOutput(true);
        conn.setRequestMethod(“POST”);
        conn.setRequestProperty(“Authorization”, “Bearer ” + apiKey);
        conn.setRequestProperty(“Content-Type”, “application/json”);

        JSONObject json = new JSONObject();
        json.put(“filename”, fileName);
        json.put(“content”, fileContent);

        OutputStream os = conn.getOutputStream();
        os.write(json.toString().getBytes());
        os.flush();
        os.close();

        if (conn.getResponseCode() != 200) {
            throw new RuntimeException(“上传失败,HTTP错误码:” + conn.getResponseCode());
        }

        conn.disconnect();
    }
}
这部分最简单,拿到Token,传内容就行。DeepSeek会自动拆分处理。
集成企业微信:Java搞Webhook监听


DeepSeek那边预备好了,我们要让企业微信“问一句”,DeepSeek “答一句”。这就得用 Webhook 来监听音讯,然后转发给DeepSeek API。

我用了个Spring Boot的小项目来跑这个Webhook服务:
@RestController
public class WeComBotController {

    @PostMapping(“/webhook”)
    public Map<String, String> handleMessage(@RequestBody Map<String, Object> payload) {
        String question = (String) payload.get(“text”);
        String userId = (String) payload.get(“user”);

        String answer = DeepSeekClient.queryKnowledgeBase(question);

        Map<String, String> response = new HashMap<>();
        response.put(“msgtype”, “text”);
        response.put(“text”, answer);
        return response;
    }
}
关键是 DeepSeekClient.queryKnowledgeBase 这个方法,你要封装成一个POST央求,发给DeepSeek的问答接口。

温馨提示: 企业微信的音讯格式有点反人类,字段名奇奇异怪的,调试的时分建议用 Postman 先试一遍,别一末尾就上代码。
实践效果:问它公司政策、产品阐明,它都能答下去


我测试的时分,放了大概500个文档出来,有员工手册、产品培训PPT转的PDF、还有客户Q&A,结果还挺冷艳的。

比如我问“试用期有几天?”它能直接回“试用期为3个月,根据《员工手册》第3章规定”。回答还带出处,几乎比人力还靠谱。

有同事问“我们产品支持哪些支付方式”,它也能从产品阐明书里翻出来一段阐明。重点是—— 不需求我提早写死这些答案,全靠知识库本人了解。
学习技巧分享:别一下去就全做,先搞个小Demo跑通再说


我一末尾也是想一口吃个大象,结果搞得一团乱。后来就换了个思绪,先拿两三个文件跑通上传 + 问答流程,再逐渐扩展。

另外, 知识库内容不是越多越好 。太多低质量的文档会拖慢搜索效果,还会让大模型“幻觉”频出(就是答非所问)。

可以先喂结构明晰、内容准确的文档,比如培训手册、技术文档之类的。聊天记录啥的,等后面搞分类再思索。
就酱


这个项目,真的是“Java打底 + DeepSeek加持”,一拍即合。你不需求懂大模型,只需会写HTTP央求,能处理文件,就能把它搞起来。

当前再有人说Java不合适搞AI,直接甩这个项目给他看,别说周末,我如今都想下次用一天试试能不能再提速。‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌




欢迎光临 职贝云数AI新零售门户 (https://www.taojin168.com/cloud/) Powered by Discuz! X3.5