From ef8616809d65e709c2c66e0b624b7173e9cd91ad Mon Sep 17 00:00:00 2001 From: jiwenke Date: Thu, 6 Feb 2025 11:20:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96openGauss=20RAG=E5=AE=9E?= =?UTF-8?q?=E8=B7=B5=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../openGauss-RAG\345\256\236\350\267\265.md" | 46 +++++++++++-------- 1 file changed, 27 insertions(+), 19 deletions(-) rename "app/zh/blogs/jiwenke/RAG\345\256\236\350\267\265-DeepSeek\344\270\216openGauss\350\201\224\350\242\202\346\211\223\351\200\240\347\247\201\346\234\211\346\234\254\345\234\260\347\237\245\350\257\206\345\272\223.md" => "app/zh/blogs/jiwenke/openGauss-RAG\345\256\236\350\267\265.md" (75%) diff --git "a/app/zh/blogs/jiwenke/RAG\345\256\236\350\267\265-DeepSeek\344\270\216openGauss\350\201\224\350\242\202\346\211\223\351\200\240\347\247\201\346\234\211\346\234\254\345\234\260\347\237\245\350\257\206\345\272\223.md" "b/app/zh/blogs/jiwenke/openGauss-RAG\345\256\236\350\267\265.md" similarity index 75% rename from "app/zh/blogs/jiwenke/RAG\345\256\236\350\267\265-DeepSeek\344\270\216openGauss\350\201\224\350\242\202\346\211\223\351\200\240\347\247\201\346\234\211\346\234\254\345\234\260\347\237\245\350\257\206\345\272\223.md" rename to "app/zh/blogs/jiwenke/openGauss-RAG\345\256\236\350\267\265.md" index 064519d5..444fcfcc 100644 --- "a/app/zh/blogs/jiwenke/RAG\345\256\236\350\267\265-DeepSeek\344\270\216openGauss\350\201\224\350\242\202\346\211\223\351\200\240\347\247\201\346\234\211\346\234\254\345\234\260\347\237\245\350\257\206\345\272\223.md" +++ "b/app/zh/blogs/jiwenke/openGauss-RAG\345\256\236\350\267\265.md" @@ -1,23 +1,28 @@ -# RAG 实践:openGauss基于DeepSeek打造私有本地知识库 +# 打破AI黑盒,拥抱开源力量:基于openGauss+DeepSeek的本地知识库,打造你的专属AI助手! -## 引言:LLM 的辉煌与困境 -在当今蓬勃发展的人工智能领域,大语言模型(LLM,Large Language Model)无疑是那颗最为璀璨的明星,吸引着全球研究者和开发者的目光。LLM 凭借其对海量文本数据的深度学习,掌握了语法和语义的复杂关系,从而具备了生成自然语言文本、精准回答各类问题、进行多语言翻译以及执行其他复杂语言任务的卓越能力。 +## 引言:什么是RAG和LLM? -然而,在 LLM 看似辉煌的应用背后,却隐藏着一系列不容忽视的问题,这些问题如同潜藏在深海中的暗礁,阻碍着 LLM 在实际场景中的广泛应用。 +LLM (Large Language Model,大语言模型): 就像 ChatGPT 这样的 AI 模型,拥有强大的语言理解和生成能力,但它们的知识局限于训练数据,且可能产生“幻觉”(即生成不准确的信息)。 -### 幻觉问题:数据质量的阴影 -大语言模型中的幻觉现象,其根源主要在于数据压缩(data compression)和数据的不一致性(inconsistency)。在模型训练过程中,大量的数据集由于其本身的过时性或不可靠性,给模型的质量保障带来了巨大挑战。这就如同在建造一座大厦时,使用了质量参差不齐的建筑材料,最终导致大厦的结构出现不稳定因素。在这种情况下,模型可能会生成看似合理,但实际上却与事实严重不符的信息,极大地影响了其可靠性和实用性。 +RAG (Retrieval-Augmented Generation,检索增强生成): 一种将信息检索与 LLM 结合的框架,可以实时从外部知识库中检索相关信息,并利用 LLM 生成更准确、可靠的回答。 -### 新鲜度问题:数据时效性的桎梏 -一般而言,LLM 的规模与训练成本呈正相关,即参数数量越多、处理的 tokens 越多,训练成本就越高。以 OpenAI 的 ChatGPT 3.5 为例,尽管它在诸多方面展现出了令人瞩目的性能,但截至目前,其数据的新鲜度仍停留在 2021 年。这就意味着,当面对 2021 年之后发生的各种事件和信息时,ChatGPT 3.5 往往无法给出准确且及时的回应。在这个信息瞬息万变的时代,LLM 因数据陈旧而无法提供实时有效的信息,无疑成为了其发展的一大瓶颈。 +当前,以 ChatGPT 为代表的外部 AI 助手暴露出诸多问题,回答内容的准确性存疑,数据安全存在隐患,访问过程中也时常出现不稳定的状况。 -### 数据安全问题:隐私保护的警钟 -OpenAI 多次因隐私数据问题而遭到投诉,这无疑给整个行业敲响了警钟。对于企业来说,经营数据、合同文件等机密信息是其核心资产,如同企业的生命线。如果将这些机密文件和数据上传到互联网上的大模型中,其潜在的风险是难以估量的。一旦发生数据泄露事件,企业可能会遭受沉重的打击,包括巨大的经济损失、声誉受损等。 +**这篇教程,将手把手教你基于openGauss开源数据库和DeepSeek,在本地部署一个专属的AI知识库,拥有一个更懂你、更安全、更可控的AI助手!** -## RAG 技术:破局之道 -为了有效解决 LLM 存在的上述问题,检索增强生成(RAG,Retrieval Augmented Generation)技术应运而生。RAG 最初的设计初衷是为了解决 LLM 的各类问题,但在实际应用中,人们发现它在现阶段的许多企业痛点上都能提供更为有效的解决方案。 +## 为什么选择openGauss + DeepSeek? -RAG 的核心在于检索增强生成,即在生成最终答案之前,先对现有的文档进行检索,而不是完全依赖 LLM 的自由发挥。这种方式使得 RAG 能够充分利用已有的文档信息,极大地提高了答案的准确性和可靠性,同时也在一定程度上避免了 LLM 可能出现的幻觉问题。 +- 开源开放,透明可信: 告别AI“黑盒”,代码完全开放,数据随心掌控,安全可靠。 + +- 性能强劲,稳定高效: openGauss作为国产数据库佼佼者,性能优异且更加安全稳定,DeepSeek的RAG模型更是能精准理解你的需求。 + +- 灵活定制,无限可能: 本地部署意味着你可以根据自身需求,自由定制知识库内容和功能,打造更懂你的AI助手。 + +## 为什么要本地部署? + +- 数据安全,隐私保障: 敏感数据不出本地,杜绝信息泄露风险,安心使用无顾虑。 +- 离线可用,稳定可靠: 无需依赖网络,随时随地访问你的知识库,稳定流畅不卡顿。 +- 成本可控,长期受益: 一次部署,长期使用,无需持续支付高昂的云服务费用。 ## 实践准备:搭建基础环境 ### 操作系统与 Python 环境配置 @@ -55,9 +60,9 @@ curl -fsSL https://ollama.com/install.sh | sh ``` ### 选择关键模型:DeepSeek与nomic-embed-text的协同 -在RAG应用中,文本嵌入模型和文本生成模型是至关重要的组成部分。ollama为我们提供了丰富多样的模型选择,而在本次实践中,我们着重引入了DeepSeek家族中的**deepseek-r1**模型来承担文本生成这一核心任务。 +在RAG应用中,文本嵌入模型和文本生成模型是至关重要的组成部分。在本次实践中,我们着重引入了DeepSeek家族中的**deepseek-r1**模型来承担文本生成这一核心任务。 -**deepseek-r1** 模型是基于先进的深度学习技术开发的,它具有独特的架构和训练方式,能够更好地捕捉文本中的语义信息,从而为文本生成带来更出色的效果。同时,我们选用**nomic-embed-text**模型用于嵌入任务,该模型能够将文本转换为高维向量表示,为后续的检索和匹配提供了强有力的支持。二者协同工作,共同助力我们基于DeepSeek与openGauss打造的私有本地知识库,使其能够更高效、更精准地为用户提供服务。 +**deepseek-r1** 模型是基于先进的深度学习技术开发的,它具有独特的架构和训练方式,能够更好地捕捉文本中的语义信息,从而为文本生成带来更出色的效果。同时,我们选用**nomic-embed-text**模型用于嵌入任务,该模型能够将文本转换为高维向量表示,为后续的检索和匹配提供了强有力的支持。二者协同工作,共同助力我们基于DeepSeek与openGauss打造的本地AI知识库,使其能够更高效、更精准地为用户提供服务。 ```abap [test@localhost ~]$ ollama --version @@ -70,6 +75,7 @@ ollama version is 0.5.6 ``` ## openGauss安装部署:构建可靠数据存储基石 +通过openGauss向量数据库存储本地私域知识,在快速检索的同时提供更加稳定、更加安全的数据防护。 ### 下载依赖 首先,我们需要下载 psycopg2 依赖: @@ -85,7 +91,7 @@ ollama version is 0.5.6 [root@localhost ~]$ docker load -i openGauss-Docker-7.0.0-RC1.tar ``` -注:arm 架构的获取方式为 `wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/arm/openGauss-Docker-7.0.0-RC1.tar` +注:arm 架构的获取方式为 https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/arm/openGauss-Docker-7.0.0-RC1.tar ### 启动服务 镜像拉取完成后,我们可以启动openGauss服务: @@ -117,9 +123,10 @@ print(rows) [('(openGauss 7.0.0-RC1 build 3fb58c89) compiled at 2025-01-20 00:24:26 commit 0 last mr on x86_64-unknown-linux-gnu, compiled by g++ (GCC) 10.3.0, 64-bit',)] ``` -## 构建RAG应用:实现知识的高效检索与生成 +## 构建RAG实例:实现知识的高效检索与生成 +我们以openGauss基础语料知识为例,通过**deepseek-r1**,做一个基础版的数据库智能问答小助手。 ### 准备数据 -本文以 openGauss 部分语料数据作为私域知识,下载文件: +以 openGauss 部分语料数据作为私域知识,下载文件: ```python [test@localhost ~]$ wget https://gitee.com/opengauss/website/raw/v2/app/zh/faq/index.md @@ -271,6 +278,7 @@ print(response["message"]["content"]) ``` ```abap + 好的,我现在要解决用户关于openGauss发布版本的问题。根据提供的上下文信息,openGauss每两年发布一个LTS版本,并且半年发布创新版本,当有重大问题修复时会发布补丁版本。 首先,我需要整理已知的版本类型: @@ -285,7 +293,7 @@ print(response["message"]["content"]) 用户的问题是询问openGauss发布了哪些版本?因此,我需要总结这些信息,列出所有已知版本类型,并说明每个版本的目标用户和功能特点。 最后,确保回答简练、高效,避免任何无用内容。 - + openGauss 社区发布的主要版本类型包括: 1. **企业版**:适合企业用户,提供全面的集群管理功能。 -- Gitee