基于LangChain4j调用火山引擎DeepSeek R1搭建RAG知识库实战指南


基于LangChain4j调用火山引擎DeepSeek R1搭建RAG知识库实战指南

基于LangChain4j调用火山引擎DeepSeek R1搭建RAG知识库实战指南

  • 基于LangChain4j调用火山引擎DeepSeek R1搭建RAG知识库实战指南
    • 一、注册火山引擎账号
    • 二、RAG技术核心原理
    • 三、环境与工具准备
      • 1. 核心组件
      • 2. 依赖配置(Maven)
    • 四、代码实现步骤
      • 步骤1:初始化DeepSeek模型
      • 步骤2:构建本地知识库
      • 步骤3:执行RAG
    • 五、效果验证与优化
      • 1. 测试示例
      • 2. 性能优化建议
    • 六、总结

随着大语言模型(LLM)的普及,如何结合企业私有知识库提升模型输出的准确性和专业性成为关键挑战。 检索增强生成(Retrieval-Augmented Generation, RAG) 技术通过将外部知识库与生成模型结合,有效解决模型幻觉和时效性问题。本文将基于 LangChain4j(Java版LangChain框架)与火山引擎的 DeepSeek R1 模型,手把手搭建一个RAG知识库系统,并提供完整代码实现步骤。

RAG技术详解可参考:详解RAG技术:大模型时代让AI更懂你的智能知识引擎
RAG技术落地:核心痛点与应对策略全面解析: RAG技术落地:核心痛点与应对策略全面解析


一、注册火山引擎账号

访问地址:火山引擎官网访问 点击进入 注册账号,注册即享免费token调用额度

点击控制台:
在这里插入图片描述
创建在线推理API key
在这里插入图片描述
记住模型名称、地址,使用自己的key,后续代码要使用。
在这里插入图片描述

二、RAG技术核心原理

RAG通过以下流程增强大模型的生成能力:

  1. 检索(Retrieval):从向量数据库中检索与用户问题相关的文档片段。
  2. 增强(Augmentation):将检索结果作为上下文输入大模型。
  3. 生成(Generation):模型结合上下文生成最终答案。

优势

  • 数据安全性:知识库本地存储,无需上传至公网。
  • 动态更新:可随时扩展知识库内容,无需重新训练模型。

三、环境与工具准备

1. 核心组件

工具/服务作用
LangChain4j提供RAG流程的模块化支持(文档加载、分块、检索链等)
火山引擎DeepSeek R1提供高性能开源LLM,支持API调用与本地部署
向量数据库存储文档向量(示例使用内存数据库InMemoryEmbeddingStore

2. 依赖配置(Maven)

<!-- LangChain4j 核心依赖 -->  
<dependency>  <groupId>dev.langchain4j</groupId>  <artifactId>langchain4j-core</artifactId>  <version>0.31.0</version>  
</dependency>  
<!-- 火山引擎DeepSeek集成 -->  
<dependency>  <groupId>dev.langchain4j</groupId>  <artifactId>langchain4j-openai</artifactId>  <version>0.31.0</version>  
</dependency>  
<!-- 文本嵌入模型(示例使用Ollama) -->  
<dependency>  <groupId>dev.langchain4j</groupId>  <artifactId>langchain4j-ollama</artifactId>  <version>0.31.0</version>  
</dependency>  

四、代码实现步骤

步骤1:初始化DeepSeek模型

配置火山引擎API密钥与模型参数:

String apiKey = "YOUR_VOLC_ENGINE_API_KEY";  
String modelName = "deepseek-r1-250120";  
String apiBaseUrl = "https://ark.cn-beijing.volces.com/api/v3/chat/completions";  ChatLanguageModel chatModel = OpenAiChatModel.builder()  .apiKey(apiKey)  .modelName(modelName)  .baseUrl(apiBaseUrl)  .build();  

步骤2:构建本地知识库

文档加载与分块

// 加载本地文档(示例为TXT文件)  
Path documentPath = Paths.get("src/main/resources/knowledge.txt");  
Document document = FileSystemDocumentLoader.loadDocument(documentPath);  // 分块策略:每段500字符,重叠50字符  
DocumentSplitter splitter = DocumentSplitters.recursive(500, 50, new OpenAiTokenizer());  
List<TextSegment> segments = splitter.split(document);  // 生成向量并存储  bge-m3的模型key也需要申请
EmbeddingModel embeddingModel = OpenAiEmbeddingModel.builder().modelName("bge-m3").apiKey("none").baseUrl("url").build();
EmbeddingStore<TextSegment> embeddingStore = new InMemoryEmbeddingStore<>();  
List<Embedding> embeddings = embeddingModel.embedAll(subList).content();
// 将嵌入结果存储到嵌入存储中
embeddingStore.addAll(embeddings, subList);

步骤3:执行RAG


String question = "如何配置火山引擎的DeepSeek模型?";  
Query userQuery = Query.from(question);EmbeddingModel embeddingModel = OpenAiEmbeddingModel.builder().modelName("bge-m3").apiKey("none").baseUrl("url").build();
ChatLanguageModel openAiModel = OpenAiChatModel.builder()  .apiKey(apiKey)  .modelName(modelName)  .baseUrl(apiBaseUrl)  .build();  
ContentRetriever retriever = EmbeddingStoreContentRetriever.builder().embeddingStore(embeddingStore).embeddingModel(embeddingModel).maxResults(5).minScore(0.6).build();List<Content> contentList = new ArrayList<>();
contentList.addAll(retriever.retrieve(userQuery));ContentInjector contentInjector = new DefaultContentInjector();UserMessage promptMessage = contentInjector.inject(contentList, userMessage);
log.info("promptMessage: {}", promptMessage.singleText());Response<AiMessage> generate = openAiModel.generate(promptMessage);
log.info("AI响应: {}", generate);

五、效果验证与优化

1. 测试示例

输入问题:

“DeepSeek R1支持哪些部署方式?”

输出结果:

“根据火山引擎文档,DeepSeek R1支持两种部署方式:1) 在火山引擎机器学习平台(veMLP)中自定义部署;2) 通过火山方舟API直接调用预训练模型,适用于快速集成场景。”

2. 性能优化建议

  • 分块策略:根据文档类型调整分块大小(如技术文档建议chunk_size=800)。
  • 混合检索:结合关键词检索(如Elasticsearch)与向量检索,提升召回率。

六、总结

本文通过 LangChain4j火山引擎DeepSeek R1 实现了企业级RAG知识库的搭建。关键步骤包括:知识库向量化、检索链构建、模型集成。此方案既能保障数据隐私,又能动态扩展知识,适用于客服、内部知识问答等场景。

扩展方向

  • 接入企业数据库(如Doris)实现海量知识管理。
  • 结合微调(Fine-tuning)进一步提升领域专业性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/25345.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚拟仿真无线路由器5G和2.4G发射信号辐射对比(虚拟仿真得出最小安全距离,与国际标准要求一致)

1、前言 有人说&#xff0c;只要有电磁波的地方就有辐射。5G和2.4G信号辐射强度是多少&#xff1f;是否会对人体构成危害&#xff1f;无线路由器的2.4GHz频段&#xff0c;频率范围&#xff1a;2.4 GHz 至 2.4835 GHz&#xff0c;信道宽度&#xff1a;通常为20 MHz&#xff0c;…

苍穹外卖-阿里云OSS文件上传

苍穹外卖-阿里云OSS文件上传 一、阿里云OSS简介**获取AccessKey**获取enpoint 二、代码实现1 引入依赖2 定义OSS相关配置2.1 application-dev.yml2.2 application.yml 3 读取OSS配置3.1 AliOssProperties 4 生成OSS工具类对象4.1 AliOssUtil4.2 OssConfiguration2.5 CommonCont…

一劳永逸解决vsocde模块import引用问题

这里写目录标题 原因解决方案 原因解决方案 原因&#xff1a; VSCode中需要显式地声明PYTHONPATH&#xff0c;不然根本找不到本项目内的模块和包的路径。 解决方法&#xff0c;加入到setting。json里当前Project路径&#xff0c;以后运行就自动添加了&#xff1a; 打开设置 …

Xlua 编译 Windows、UWP、Android、iOS 平台支持库

Xlua 编译 Windows、UWP、Android、iOS 平台支持库 Windows&#xff1a; 安装 Visual Studio&#xff08;推荐 2017 或更高版本&#xff09; 安装 CMake&#xff08;https://cmake.org/&#xff09; macOS&#xff1a; 安装 Xcode 和命令行工具 安装 CMake 检查 cmake 是否安…

JWT使用教程

目录 JWT (JSON Web Token)1. JWT简介(1) 什么是JWT(2) JWT有什么用(3) JWT认证方式 2. JWT的组成部分3. 签名的目的4. JWT与Token的区别5 JWT的优势6 JJWT签发与验证token(1) 引入依赖(2) 创建 Token(3) 解析Token(4) 设置过期时间(5) 自定义claims 7. JWT自定义工具类 JWT (J…

如何使用Docker搭建哪吒监控面板程序

哪吒监控(Nezha Monitoring)是一款自托管、轻量级的服务器和网站监控及运维工具,旨在为用户提供实时性能监控、故障告警及自动化运维能力。 文档地址:https://nezha.wiki/ 本章教程,使用Docker方式安装哪吒监控面板,在此之前,你需要提前安装好Docker. 我当前使用的操作系…

时间无关和时间相关的N-S方程

注意区分&#xff1a; 时间无关的情况&#xff08;稳态Navier-Stokes方程&#xff09;和时间相关的情况&#xff08;非定常Navier-Stokes方程&#xff09;。前者与时间无关&#xff0c;后者与事件有关。比如爆轰案例就是与时间相关的情况&#xff08;非定常Navier-Stokes方程&…

APISIX Dashboard上的配置操作

文章目录 登录配置路由配置消费者创建后端服务项目配置上游再创建一个路由测试 登录 http://192.168.10.101:9000/user/login?redirect%2Fdashboard 根据docker 容器里的指定端口&#xff1a; 配置路由 通过apisix 的API管理接口来创建&#xff08;此路由&#xff0c;直接…

【Mac电脑本地部署Deepseek-r1:详细教程与Openwebui配置指南】

文章目录 前言电脑配置&#xff1a;安装的Deepseek版本&#xff1a;使用的UI框架&#xff1a;体验效果展示&#xff1a;本地部署体验总结 部署过程Ollama部署拉取模型运行模型Openwebui部署运行Ollama服务在Openwebui中配置ollama的服务 后话 前言 deepseek最近火的一塌糊涂&a…

老旧android项目编译指南(持续更)

原因 编译了很多项目&#xff0c;找到了一些可观的解决办法 1. android studio里面的jdk版本切换 jdk版本切换在这里&#xff0c;一般安卓开发需要用到4个版本的jdk,jdk8, jdk11, jdk17, jdk21新版的android stuio是默认使用高版本的jdk,所以切换版本是很有必要的 2. 命令…

CST的UAV无人机RCS --- A求解器 - 一维距离像(HRRP)和正弦图(Sinogram)

“高分辨距离像(HRRP&#xff0c;high resolution range profile)是用宽带雷达信号获取的目标散射点复子回波在雷达射线上投影的向量和&#xff0c;它提供了目标散射点沿距离方向的分布信息,其特点是通过发出某一波长的高频信号&#xff0c;通过反射成像时间和位置&#xff0c;…

centos 7 安装python3 及pycharm远程连接方法

安装openssl及python3 cd /tmp #将python3.11.11的安装包下载/tmp目录下 ​ #将python3.11.11的安装包下载/tmp目录下 ​cd /tmp #下载最新的软件安装包 wget https://www.python.org/ftp/python/3.11.11/Python-3.11.11.tgz#安装源码编译需要的编译环境 yum -y install gcc z…

smolagents学习笔记系列(番外一)使用DeepSeek API Key + CodeAgent

这篇文章是在 smolagents 官方教程结束后的番外篇&#xff0c;实现了如何使用 DeepSeek API Key CodeAgent 执行你的提示词。 之所以写这篇文章是因为 smolagents 没有提供 DeepSeek 的模型接口&#xff0c;尽管可以通过 HfApiModel 这个类来指定使用与 DeepSeek 相关的模型&…

20250227使用mount命令挂载飞凌OK3588-C的linux R4的文件系统rootfs.img以备修改

rootrootrootroot-X99-Turbo:~/version/OK3588_Linux_fs/linuxfs$ mv m2/ R4 rootrootrootroot-X99-Turbo:~/version/OK3588_Linux_fs/linuxfs$ sudo mount rootfs.img R4/ rootrootrootroot-X99-Turbo:~/version/OK3588_Linux_fs/linuxfs$ sudo umount R4 20250227使用mount命…

【前端基础】Day 1 HTML

总结&#xff1a; 1. Web标准的构成 2. 基本标签 目录 1. Web标准的构成 2. 基本标签 2.1快捷键 2.2.1标题标签 2.2.2段落和换行标签 2.2.3文本格式化标签 2.2.4div和span标签 2.3.1 图像标签和路径 2.3.2路径 2.3.3超链接标签 2.4注释标签 2.5特殊字符 1. Web标准…

推荐3个背景渐变色的wordpress主题

干净、清爽、背景渐变色的wordpress企业主题 ​ 服务类公司wordpress企业主题https://www.jianzhanpress.com/?p8255 红色大气的wordpress企业主题&#xff0c;适合服务行业的公司搭建企业官方网站使用。 ​ wordpress询盘型独立站主题https://www.jianzhanpress.com/?p8258…

LlamaFactory-webui:训练大语言模型的入门级教程

LlamaFactory是一个开源框架&#xff0c;支持多种流行的语言模型&#xff0c;及多种微调技术&#xff0c;同时&#xff0c;以友好的交互式界面&#xff0c;简化了大语言模型的学习。 本章内容&#xff0c;从如何拉取&#xff0c;我已经搭建好的Llamafactory镜像开始&#xff0…

微信小程序-二维码绘制

wxml <view bindlongtap"saveQrcode"><!-- 二维码 --><view style"position: absolute;background-color: #FFFAEC;width: 100%;height: 100vh;"><canvas canvas-id"myQrcode" style"width: 200px; height: 200px;ba…

Python—Excel全字段转json文件(极速版+GUI界面打包)

目录 专栏导读1、背景介绍2、库的安装3、核心代码4、完整代码(简易版)5、进阶版(GUI)总结专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️‍🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注 👍 该系列文章专栏:请点击——…

游戏引擎学习第124天

仓库:https://gitee.com/mrxiao_com/2d_game_3 回顾/复习 今天是继续完善和调试多线程的任务队列。之前的几天&#xff0c;我们已经介绍了多线程的一些基础知识&#xff0c;包括如何创建工作队列以及如何在线程中处理任务。今天&#xff0c;重点是解决那些我们之前没有注意到…