成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

十分鐘手把手教學(xué):用DeepSeek4j開發(fā)私有大模型知識庫

人工智能
deepseek4j 提供了一套強(qiáng)大的 API,涵蓋了 Reasoner、Function Calling、JSON 解析等特性。本工具旨在簡化 DeepSeek API 的集成,讓開發(fā)者能夠快速調(diào)用相關(guān)能力并集成到自己的應(yīng)用中。

背景

deepseek4j 提供了一套強(qiáng)大的 API,涵蓋了 Reasoner、Function Calling、JSON 解析等特性。本工具旨在簡化 DeepSeek API 的集成,讓開發(fā)者能夠快速調(diào)用相關(guān)能力并集成到自己的應(yīng)用中。

然而,DeepSeek 官方并未提供向量模型,因此本工具在最初設(shè)計時未考慮向量搜索的集成。

現(xiàn)狀

  • deepseek4j 已全面支持 DeepSeek 的 Reasoner、Function Calling、JSON 解析等功能。
  • R1 模型的私有知識庫需求正在增長,許多開發(fā)者希望在 DeepSeek 之上實(shí)現(xiàn)私有知識庫。

經(jīng)過深入的技術(shù)方案評估,我們選擇了一個優(yōu)雅的解決方案:通過兼容 OpenAI 協(xié)議標(biāo)準(zhǔn)來集成向量模型能力。這種方案具有以下優(yōu)勢:

  1. 零額外依賴:無需引入新的依賴包,保持框架輕量
  2. 完美兼容性:與現(xiàn)有架構(gòu)無縫銜接,確保向后兼容
  3. 標(biāo)準(zhǔn)化接入:采用業(yè)界通用的 OpenAI 協(xié)議,降低學(xué)習(xí)成本

詳細(xì)的技術(shù)討論和方案細(xì)節(jié)可參考 GitHub Issue:[RFC] 向量化模型支持 #15

快速上手

本文章將帶領(lǐng)大家從零開始構(gòu)建一個基礎(chǔ) RAG 系統(tǒng)。通過白盒編碼的方式,不僅能深入理解 RAG 的核心原理,還可以根據(jù)實(shí)際需求靈活調(diào)整和優(yōu)化各個環(huán)節(jié)。相比直接使用現(xiàn)有的開源 RAG 產(chǎn)品,這種方式能讓我們更好地掌控系統(tǒng)行為,實(shí)現(xiàn)更精準(zhǔn)的知識檢索和問答效果。

17394071451739407145

1. 環(huán)境準(zhǔn)備

在開始構(gòu)建 RAG 系統(tǒng)之前,我們需要準(zhǔn)備以下環(huán)境:

1.1 Ollama 模型準(zhǔn)備

首先安裝 Ollama,然后下載以下必要的模型:

# 下載推理模型 - 用于理解和生成回答
ollama run deepseek-r1:14b

# 下載向量模型 - 用于文本向量化
ollama run bge-m3:latest

1.2 向量數(shù)據(jù)庫準(zhǔn)備

本文使用 Milvus 作為向量數(shù)據(jù)庫,你可以選擇以下兩種方式之一進(jìn)行安裝:

方式一:使用 milvus 測試環(huán)境

  • 訪問 Zilliz Cloud 中文版:https://cloud.zilliz.com.cn

  • 獲取連接信息(后續(xù)配置需要用到)

方式二:Docker 安裝

# 1. 下載安裝腳本
curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh -o standalone_embed.sh

# 2. 啟動 Docker 容器
bash standalone_embed.sh start


注意:如果選擇 Docker 安裝方式,請確保你的網(wǎng)絡(luò)環(huán)境能夠正常訪問 Github。

  • 初始化向量數(shù)據(jù):創(chuàng)建本次知識庫存儲、獲取鏈接信息和表信息:

17394105211739410521

1.3 項目依賴

在你的 Maven 項目中添加以下依賴:

<dependency>
    <groupId>io.github.pig-mesh.ai</groupId>
    <artifactId>deepseek-spring-boot-starter</artifactId>
    <version>1.4.0</version>
</dependency>
<!-- 鏈接 milvus SDK-->
<dependency>
    <groupId>io.milvus</groupId>
    <artifactId>milvus-sdk-java</artifactId>
    <version>2.5.3</version>
</dependency>

application.yml 配置

# 推理模型鏈接信息
deepseek:
  base-url: http://127.0.0.1:11434/v1
  model: deepseek-r1:14b
  api-key: ollama-local
# 向量模型鏈接信息
embedding:
  api-key: ${deepseek.api-key}
  base-url: ${deepseek.base-url}
  model: bge-m3:latest

2. 初始化私有知識

在構(gòu)建 RAG 系統(tǒng)時,第一步是將已有的知識內(nèi)容轉(zhuǎn)換為向量形式并存儲到向量數(shù)據(jù)庫中。

2.1 創(chuàng)建鏈接 鏈接客戶端

// 1. Connect to Milvus server
ConnectConfig connectConfig = ConnectConfig.builder()
        .uri(CLUSTER_ENDPOINT) // 1.2 獲取的 Milvus 鏈接端點(diǎn)
        .token(TOKEN)  // 1.2 獲取的 Milvus 鏈接信息
        .build();

MilvusClientV2 milvusClientV2 = new MilvusClientV2(connectConfig);

2.2 準(zhǔn)備資料并向量化上傳

以下示例為了節(jié)約篇幅,以處理純文本資料。對于 Office 文檔、圖片、PDF、音視頻等其他格式的文件處理,deepseek4j 提供了完整的解決方案,可點(diǎn)擊查看筆者開源的office2md 項目

圖片圖片

office2md 2.0 發(fā)布,支持并發(fā)視覺理解和圖片自我矯正。

@Autowired
EmbeddingClient embeddingClient;

{
    // 這里以 2025最新的我司保密條例演示,可以換成你自己的
    String law = FileUtil.readString("/Users/lengleng/Downloads/law.txt", Charset.defaultCharset());
    String[] lawSplits = StrUtil.split(law, 400);


    List<JsonObject> data = new ArrayList<>();
    for (String lawSplit : lawSplits) {
        List<Float> floatList = embeddingClient.embed(lawSplit);

        JsonObject jsonObject = new JsonObject();

        // 將 List<Float> 轉(zhuǎn)換為 JsonArray
        JsonArray jsonArray = new JsonArray();
        for (Float value : floatList) {
            jsonArray.add(value);
        }
        jsonObject.add("vector", jsonArray);
        jsonObject.addProperty("text", lawSplit);

        data.add(jsonObject);
    }

    InsertReq insertReq = InsertReq.builder()
            .collectionName("deepseek4j_test")
            .data(data)
            .build();

    milvusClientV2.insert(insertReq);
}

3. 創(chuàng)建 RAG 接口

@GetMapping(value = "/chat", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<ChatCompletionResponse> chat(String prompt) {
    MilvusClientV2 milvusClientV2 = new MilvusClientV2(connectConfig);

    List<Float> floatList = embeddingClientOptional.get().embed(prompt);

    SearchReq searchReq = SearchReq.builder()
            .collectionName("deepseek4j_test")
            .data(Collections.singletonList(new FloatVec(floatList)))
            .outputFields(Collections.singletonList("text"))
            .topK(3)
            .build();

    SearchResp searchResp = milvusClientV2.search(searchReq);

    List<String> resultList = new ArrayList<>();
    List<List<SearchResp.SearchResult>> searchResults = searchResp.getSearchResults();
    for (List<SearchResp.SearchResult> results : searchResults) {
        System.out.println("TopK results:");
        for (SearchResp.SearchResult result : results) {
            resultList.add(result.getEntity().get("text").toString());
        }
    }


    ChatCompletionRequest request = ChatCompletionRequest.builder()
            // 根據(jù)渠道模型名稱動態(tài)修改這個參數(shù)
            .model("deepseek-r1:14b")
            .addUserMessage(String.format("你要根據(jù)用戶輸入的問題:%s \n \n 參考如下內(nèi)容: %s  \n\n 整理處理最終結(jié)果", prompt, resultList)).build();

    return deepSeekClient.chatFluxCompletion(request);
}

前端測試

17394109001739410900

總結(jié)

本文通過以下核心步驟快速構(gòu)建了基礎(chǔ) RAG 系統(tǒng):

  1. 環(huán)境準(zhǔn)備:部署推理模型和向量模型
  2. 知識庫構(gòu)建:向量化存儲
  3. 檢索增強(qiáng):通過語義搜索獲取關(guān)聯(lián)知識
  4. 推理生成:結(jié)合上下文生成最終回答

要讓 RAG 系統(tǒng)達(dá)到生產(chǎn)可用水平,每個環(huán)節(jié)都需要進(jìn)一步優(yōu)化和完善:

  1. 檢索策略優(yōu)化:結(jié)合關(guān)鍵詞和語義的混合檢索,提高召回準(zhǔn)確度
  2. 重排序優(yōu)化:對檢索結(jié)果進(jìn)行二次排序,確保最相關(guān)內(nèi)容排在前面
  3. 提示詞工程:優(yōu)化 Prompt 模板,引導(dǎo)模型生成更準(zhǔn)確的回答
  4. 知識庫管理:定期更新和維護(hù)知識庫,保證數(shù)據(jù)時效性
  5. 性能調(diào)優(yōu):優(yōu)化向量檢索和模型推理的性能
責(zé)任編輯:武曉燕 來源: JAVA架構(gòu)日記
相關(guān)推薦

2025-04-01 01:35:00

NodeMySQL數(shù)據(jù)庫

2020-12-17 06:48:21

SQLkafkaMySQL

2019-04-01 14:59:56

負(fù)載均衡服務(wù)器網(wǎng)絡(luò)

2022-06-16 07:31:41

Web組件封裝HTML 標(biāo)簽

2024-06-19 09:58:29

2021-09-07 09:40:20

Spark大數(shù)據(jù)引擎

2023-04-12 11:18:51

甘特圖前端

2024-05-13 09:28:43

Flink SQL大數(shù)據(jù)

2015-09-06 09:22:24

框架搭建快速高效app

2012-07-10 01:22:32

PythonPython教程

2023-11-30 10:21:48

虛擬列表虛擬列表工具庫

2022-03-04 16:06:33

數(shù)據(jù)庫HarmonyOS鴻蒙

2019-09-16 09:14:51

2009-10-09 14:45:29

VB程序

2023-07-15 18:26:51

LinuxABI

2022-08-26 09:01:07

CSSFlex 布局

2024-11-07 16:09:53

2023-11-09 14:44:27

Docker鏡像容器

2020-12-11 09:40:10

DevOpsCICD
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产在线一区二区 | 欧美a级成人淫片免费看 | 99国产视频| 成人精品鲁一区一区二区 | 午夜精品一区二区三区在线观看 | 免费同性女女aaa免费网站 | 日韩视频精品在线 | 国产精品国产a级 | 欧美性生交大片免费 | 一区在线免费视频 | 视频一区二区在线观看 | 日韩欧美一区二区三区四区 | 久久久激情视频 | 亚洲精品福利视频 | 成人午夜激情 | 亚洲一区 中文字幕 | 国产精品1区2区 | 亚洲第一成人影院 | 国产aⅴ| 亚洲精品久久久蜜桃网站 | 久久久亚洲一区 | 九热在线 | 一区二区精品 | av日韩在线播放 | 九色一区 | 日韩中文字幕在线播放 | 日本一区二区在线视频 | 欧美a在线 | 亚洲欧美自拍偷拍视频 | 精品一区在线免费观看 | 精品久久九 | 欧美视频一区二区三区 | 蜜臀久久99精品久久久久野外 | 精品少妇一区二区三区在线播放 | 人人爽人人爽人人片av | 久久噜噜噜精品国产亚洲综合 | 成人二区 | 亚洲一区二区三区免费视频 | 国产福利观看 | 久久久国产精品 | 欧美精品久久久久 |