基于 Qwen2.5-14B + Elasticsearch RAG 的大数据知识库智能问答系统

AI 时代,如何从海量私有文档(非公开)中快速提取精准信息成为了许多企业和个人的迫切需求。

本文介绍了一款基于 Qwen2.5-14B 大语言模型(换成 DeepSeek 原理一致)与 Elasticsearch 搜索引擎构建的大数据知识库智能问答系统。

该系统结合了向量检索技术、检索增强技术(RAG)和生成式 AI,能够高效处理多格式文档并为用户提供准确、自然的回答。

7c2a9e7ca957d8d0cd0648c0bb0ae1b6.jpeg

以下将从实测效果、环境要求、整体架构、代码解读以及改进展望五个方面详细阐述该系统的实现方案。

1. 大数据知识库智能问答系统实测效果展示

该系统导入《一本书讲透 Elasticsearch》21章(纸质书 483页,63.8万字)全部内容。

经过多次实测,能够有效应对多样化的用户查询,展现出强大的信息检索与回答生成能力。

例如,当用户输入与知识库文档相关的具体问题时,系统能够迅速定位相关内容并生成连贯、准确的回答。

12dd899337014ca0008ec28a129ca717.gif

7d276c8868d5749ab51ec6dffd0fd424.gif

f1d03ee5491d72e4c1dae8b623452407.gif

5d73e8367e355322a4a6301e9dce5328.gif

70304c83c2c5aab84ae461fcb420c92f.gif

7b0094eec659c8befc5b7a7d9c465c50.gif

这种能力得益于 Elasticsearch 的高效检索以及 Qwen2.5-14b 的上下文理解与生成能力。

在实际测试中,系统对常见文档格式(如 PDF、Word、Excel、txt 等)中的内容表现出良好的覆盖率。

针对技术文档中的专业术语的相关问题,系统能精准提取并以自然语言形式呈现给用户。

这种实测效果证明了系统在知识管理与智能问答场景中的实用价值。

2. 知识库智能问答系统环境要求

为确保系统的正常运行和高效性能,以下是所需的软硬件环境与版本要求:

image.pngimage.pngimage.png

  • Ollama

    • 用于管理和运行 Qwen2.5-14b 大语言模型。

      47f6f27d1ba28b97f4831bd994d2c7a1.png

8661c9cfe30e8f39a961e5b86c21ac5a.png

    • 示例模型列表:

      C:\Users\Administrator>ollama list
      NAME           ID              SIZE      MODIFIED
      qwen2.5:14b    7cdf5a0187d5    9.0 GB    3 months ago
      qwen2:72b      14066dfa503f    41 GB     7 months ago
      qwen2:7b       e0d4e1163c58    4.4 GB    7 months ago
  • FSCrawler 2.10

    • 用于将本地文档(如 PDF、DOC、XLS、PPT、TXT)爬取并索引到 Elasticsearch。

    • Elasticsearch FSCrawler 文档爬虫学习,请先看这一篇!

  • Elasticsearch 8.15.3

    • 核心搜索引擎,负责存储和检索向量化的文档数据。

  • Kibana 8.15.3

    • 可视化工具,用于监控和管理 Elasticsearch 的状态与索引。

  • 向量化模型

    • SentenceModel('shibing624/text2vec-base-chinese'),专为中文文本设计的句子嵌入模型,用于将查询和文档转化为向量表示。

      5531b171fa8fab1b995f82ed596b35ca.png

  • 对话客户端

    • Gradio,提供基于 Web 的交互界面,方便用户输入查询并查看回答。

    • 地址:https://github.com/gradio-app/gradio

      e5f7435e5590590e5363898900bd6548.png

这些组件共同构成了系统的技术基础,确保了从数据摄取到回答生成的完整流程。

3. 知识库智能问答系统整体架构图

系统的架构设计清晰地分为多个层次和流程,以下基于提供的两张架构图进行详细解读:

3.1 组件架构

image.png

上述架构图展示了一个垂直的层次结构,描述了系统的核心组件及其连接关系,自上而下解读如下:

  • Gradio Web 界面

    • 位于顶层,使用绿色矩形框表示,标注为“Gradio 大模型交互 Web”。这是用户与系统交互的入口,支持输入查询和接收回答。

  • Qwen2.5-14b 

    • 第二层,用紫色矩形框表示,包含 Qwen 的标志,以及“Qwen2.5-14B 开源大语言模型”字样。用户查询从 Gradio 传递至此,由 Qwen2.5-14b 处理。

    • 注意咱们用的通义千问2.5的模型,实际也可以换成 DeepSeek 模型。

  • 向量化层

    • 第三层,用红色矩形框表示,标注为“shibing624/text2vec-base-chinese 向量化”。此层将文本转化为向量,为后续的语义检索提供支持。

  • Elasticsearch 搜索

    • 第四层,同样为红色矩形框,包含 Elasticsearch 标志和“搜索引擎”字样。向量化的数据在此存储并用于检索。

  • FSCrawler 数据摄取

    • 第五层,用蓝色矩形框表示,标注为“FSCrawler 文档爬虫”,负责将本地文档索引到 Elasticsearch。

  • 数据源

    • 底层,用米色矩形框表示,包含 PDF、DOC、XLS、PPT、TXT 等文档类型图标,标注为“数据源”。

箭头从上到下连接各层,表明数据从用户界面流向大语言模型,再经过向量化、检索,最终基于文档数据生成回答。

3.2 数据处理流程(图 1)

如下水平流程图展示了查询的处理过程:

image.png

  • 输入

    • 左侧标注为“待检索的问句”,表示用户输入的查询。同时,“私有化本地数据源”(PDF、DOC、XLS 等)作为知识库基础。

  • Elasticsearch

    • 中间核心组件,标注为“Elasticsearch”,包含“向量数据库”和“向量检索”模块。查询和数据源均输入此模块,通过向量检索匹配相关文档。

  • Qwen2.5 LLM

    • 右侧标注为“DeepSeek ... Qwen2.5 LLM 大语言模型”,接收检索结果并生成回答。

  • 输出与验证

    • 最终输出为“提取用户想要的精准答案”,并通过“结果验证”确保准确性。此外,系统提供“公网开放接口”,支持 API 访问。

3.3 综合分析

综合两图来看,系统采用经典的 RAG(Retrieval-Augmented Generation) 架构:

用户查询首先通过向量化模型(shibing624/text2vec-base-chinese)转化为向量,在 Elasticsearch 中检索相关文档,随后将查询与检索结果传递给 Qwen2.5-14b 生成最终回答。

Gradio 提供友好界面,FSCrawler 确保数据摄取的自动化,而公网接口则扩展了系统的应用场景。

检索增强生成(RAG)简单来说就是先从一大堆文档中找到跟用户问题相关的内容,然后用大语言模型把这些内容整理成自然、易懂的回答


4. 知识库智能问答系统代码解读

以下是实现该系统的一般步骤与代码思路,具体代码放到死磕Elasticsearch知识星球。

4.1 文档摄取

使用 FSCrawler 扫描本地文件并索引到 Elasticsearch:

fscrawler --config_dir /path/to/config job_name

配置文件需指定文档路径和 Elasticsearch 索引名称。

d27301a8ec8bd4ee57593e0af33e1918.png

4.2 向量化

利用 shibing624/text2vec-base-chinese 对文档和查询进行向量化:

image.png

from text2vec import SentenceModel
model = SentenceModel('shibing624/text2vec-base-chinese')# 文档向量化并存入 Elasticsearch
for doc in documents:vector = model.encode(doc['text'])es.index(index='knowledge_base', body={'text': doc['text'], 'vector': vector})

4.3 查询处理与检索

将用户查询向量化并在 Elasticsearch 中执行相似性搜索,这里本质做的是关键词匹配+向量检索的组合方式。

149c03220924c048b831d69bacd4cc8d.png

46e89d175e3f5a591f91c49f707d17dd.png

4.4 回答生成

将查询和检索结果传递给 Qwen2.5-14b 生成回答:

a0af873ae9f4504018b1bd35e55dd248.png

from ollama import Client
ollama = Client()
context = "\n".join([doc['_source']['text'] for doc in results['hits']['hits']])
prompt = f"根据以下内容回答问题:\n{context}\n问题:{query}"
response = ollama.generate(model='qwen2.5:14b', prompt=prompt)
answer = response['text']

4.5 Gradio 界面

通过 Gradio 实现交互:

import gradio as gr
def qa_system(query):# 查询处理、检索、生成逻辑return answer
interface = gr.Interface(fn=qa_system, inputs="text", outputs="text")
interface.launch()

上述步骤展示了从数据摄取到回答生成的完整流程,体现了系统的模块化设计。


5. 知识库智能问答系统待改进和展望

为进一步提升系统性能与用户体验,可考虑以下改进方向:

  • 模型优化

    • 对 Qwen2.5-14b 进行领域特定微调,提升对知识库内容的理解能力。

    • 换成 DeepSeek 模型做对比。

  • 向量化改进

    • 尝试其他中文嵌入模型或微调 text2vec,提高向量表示的语义准确性。

  • 文章切分力度

    • 当前大家看到一章内容一个文档,效果可以。

    • 但如果更细化为一小节内容一个文档导入 Elasticsearch,是不是更好呢?都有待进一步验证!


结语

基于 Qwen2.5-14b 与 Elasticsearch 的大数据知识库智能问答系统,通过向量检索与生成式 AI 的检索增强 RAG 结合,为用户提供了高效、精准的信息获取途径。

无论是技术架构的清晰性,还是实测效果的可靠性,该系统都展现了检索增强RAG 在知识管理领域的巨大潜力。

仅抛砖引玉,期待大家结合自己业务场景进行深入留言、交流讨论。

视频讲解地址:https://t.zsxq.com/E1toS



Elasticsearch 大数据存储与检索系统化实战直播课

大白话解读什么是 RAG(检索增强生成)技术?

Elasticsearch 8.X “图搜图”实战

Elasticsearch 8.X 向量检索和普通检索能否实现组合检索?如何实现?

干货 | 详述 Elasticsearch 向量检索发展史

高维向量搜索:在 Elasticsearch 8.X 中利用 dense_vector 的实战探索

干货 | Elasticsearch 向量搜索的工程化实战

图片

更短时间更快习得更多干货!

和全球2000+ Elastic 爱好者一起精进!

elastic6.cn——ElasticStack进阶助手

图片

抢先一步学习进阶干货!

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

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

相关文章

算法手记1

🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 一.NC313 两个数组的交集 题目详情: 题目思路: 解题代码: 二.AB5 点击消除 题目详情: 题目思路: 解题代码: 结语 一.NC313 两个数组的交集 牛客网题目链接(点击即可跳转)…

JMeter使用BeanShell断言

BeanShell简介 BeanShell是使用Java语法的一套脚本语言,在JMeter的多种组件中都有BeanShell的身影,如: 定时器:BeanShell Timer前置处理器:BeanShell PreProcessor采样器:BeanShell Sampler后置处理器&am…

【技海登峰】Kafka漫谈系列(五)Java客户端之生产者Producer核心组件与实现原理剖析

【技海登峰】Kafka漫谈系列(五)Java客户端之生产者Producer核心组件与实现原理剖析 向Kafka Broker服务节点中发送主题消息数据的应用程序被称为生产者,生产者与消费者均属于Kafka客户端,几乎所有主流语言都支持调用客户端API。官方提供了基于Java实现的kafka-clients,用于…

【eNSP实战】配置交换机端口安全

拓扑图 目的:让交换机端口与主机mac绑定,防止私接主机。 主机PC配置不展示,按照图中配置即可。 开始配置之前,使用PC1 ping 一遍PC2、PC3、PC4、PC5,让交换机mac地址表刷新一下记录。 LSW1查看mac地址表 LSW1配置端…

AWS Bedrock 正式接入 DeepSeek-R1 模型:安全托管的生成式 AI 解决方案

亚马逊云科技(AWS)于 2024 年 1 月 30 日 宣布,DeepSeek-R1 模型 正式通过 Amazon Bedrock 平台提供服务,用户可通过 Bedrock Marketplace 或自定义模型导入功能使用该模型。 DeepSeek-R1,其安全防护机制与全面的 AI 部…

数据结构之线性表

目录 1 简介 2 线性表的基本概念 3 顺序存储的线性表 3.1 定义线性表结构 3.2 初始化线性表 3.3 插入元素 3.4 删除元素 3.5 查找元素 3.6 扩容操作 3.7 打印线性表 4 线性表的应用 5 总结 1 简介 线性表是数据结构中最基础且常用的一种结构,它是由一…

c#面试题12

1.ApplicationPool介绍一下 c#里没有 2.XML 可扩展标记语言,一般以.xml文件格式的形式存在。可用于存储结构化的数据 3.ASP.NET的用户控件 将原始的控件,用户根据需要进行整合成一个新的控件 4.介绍一下code-Behind 即代码后置技术,就是…

英语学习(GitHub学到的分享)

【英语语法:https://github.com/hzpt-inet-club/english-note】 【离谱的英语学习指南:https://github.com/byoungd/English-level-up-tips/tree/master】 【很喜欢文中的一句话:如果我轻轻松松的学习,生活的幸福指数会提高很多…

C++蓝桥杯基础篇(十一)

片头 嗨~小伙伴们,大家好!今天我们来学习C蓝桥杯基础篇(十一),学习类,结构体,指针相关知识,准备好了吗?咱们开始咯~ 一、类与结构体 类的定义:在C中&#x…

一次解决Andriod Studio Build Gradle很慢或报错下载失败等问题

Andriod Studio创建项目时,Build gradle一直在下载或者卡住或者很慢,反正就是会在这里出现各自问题的,请看这里! 来来来,全体目光向我看齐!!!保准让你解决掉这个问题!这…

接口自动化入门 —— swagger/word/excelpdf等不同种类的接口文档理解!

在接口自动化测试中,接口文档是开发和测试人员理解接口功能、参数和交互方式的重要依据。常见的接口文档类型包括Swagger、Word、Excel和PDF。 1. Swagger文档 Swagger是一种用于描述和定义RESTful API的规范,使用JSON或YAML格式来定义API的输入参数、输…

Docker Compose国内镜像一键部署dify

克隆代码 git clone https://github.com/langgenius/dify.git进入docker目录 cd docker修改.env部分 # 将环境模版文件变量重命名 cp .env.example .env # 修改 .env,修改nginx的host和端口,避免端口冲突 NGINX_SERVER_NAME192.168.1.223 NGINX_PORT1880 NGINX_SSL_PORT1443…

网络安全之文件上传漏洞

一,文件上传漏洞的原因: 文件上传漏洞的存在主要是因为开发者未对用户上传的文件进行充分的安全验证,导致攻击者可以上传恶意文件(如 WebShell、恶意脚本等)到服务器,进而控制服务器或实施进一步攻击。 常…

QT系列教程(20) Qt 项目视图便捷类

视频连接 https://www.bilibili.com/video/BV1XY41127t3/?vd_source8be9e83424c2ed2c9b2a3ed1d01385e9 Qt项目视图便捷类 Qt项目视图提供了一些便捷类,包括QListWidget, QTableWidget, QTreeWidget等。我们分别介绍这几个便捷类。 我们先创建一个Qt …

Java学习--MySQL

后端开发中,数据常存储在数据库中: 一、数据库基础 数据库:DataBase(DB),是存储和管理数据的仓库 1.1连接数据库 mysql -u用户 -p密码 [-h数据库服务器ip地址 -P端口号] 1.2 关系型数据库 关系型数据…

博客系统测试报告

一、项目背景 以SSM为框架实现的博客系统有四个功能,登录账号进入博客首页,首页展示发布的博客列表,还可以编写或者更改博客内容。为了确保博客系统在各种场景下都能正常运行,需要进行尽可能全面的功能测试和自动化测试。本项目旨…

Chebykan wx 文章阅读

文献筛选 [1] 神经网络:全面基础 [2] 通过sigmoid函数的超层叠近似 [3] 多层前馈网络是通用近似器 [5] 注意力是你所需要的 [6] 深度残差学习用于图像识别 [7] 视觉化神经网络的损失景观 [8] 牙齿模具点云补全通过数据增强和混合RL-GAN [9] 强化学习:一…

LabVIEW变频器谐波分析系统

随着工业自动化的发展,变频器在电力、机械等领域的应用日益广泛,但谐波问题直接影响系统效率与稳定性。传统谐波检测设备(如Norma5000)精度虽高,但价格昂贵且操作复杂,难以适应现场快速检测需求。本项目基于…

C语言每日一练——day_4

引言 针对初学者,每日练习几个题,快速上手C语言。第四天。(连续更新中) 采用在线OJ的形式 什么是在线OJ? 在线判题系统(英语:Online Judge,缩写OJ)是一种在编程竞赛中用…

理解字符流和字节流,节点流和处理流、缓冲流、InputStreamReader、BufferInputStream、BufferReader...

DAY10.2 Java核心基础 IO流 字符流和字节流 字符流和字节流在每次处理数据的单位不同,一个是字符,一个是字节 如果复制文件类型是文本类型,字节流字符流都可以 如果复制的文件类型是非文本类型,则只能使用字节流,使…