产品展示的手机网站,在线制作图片模板,长寿网站制作,毕设网站开发什么题目好引言#xff1a;什么是RAG和LLM#xff1f;
LLM (Large Language Model#xff0c;大语言模型): 就像 ChatGPT 这样的 AI 模型#xff0c;拥有强大的语言理解和生成能力#xff0c;但它们的知识局限于训练数据#xff0c;且可能产生“幻觉”#xff08;即生成不准确的信…引言什么是RAG和LLM
LLM (Large Language Model大语言模型): 就像 ChatGPT 这样的 AI 模型拥有强大的语言理解和生成能力但它们的知识局限于训练数据且可能产生“幻觉”即生成不准确的信息。
RAG (Retrieval-Augmented Generation检索增强生成): 一种将信息检索与 LLM 结合的框架可以实时从外部知识库中检索相关信息并利用 LLM 生成更准确、可靠的回答。
当前以 ChatGPT 为代表的外部 AI 助手暴露出诸多问题回答内容的准确性存疑数据安全存在隐患访问过程中也时常出现不稳定的状况。
这篇教程将手把手教你基于openGauss开源数据库和DeepSeek在本地部署一个专属的AI知识库拥有一个更懂你、更安全、更可控的AI助手
为什么选择openGauss DeepSeek
开源开放透明可信告别AI“黑盒”代码完全开放数据随心掌控安全可靠。性能强劲稳定高效openGauss作为国产数据库佼佼者性能优异且更加安全稳定DeepSeek的RAG模型更是能精准理解你的需求。灵活定制无限可能本地部署意味着你可以根据自身需求自由定制知识库内容和功能打造更懂你的AI助手。
为什么要本地部署
数据安全隐私保障敏感数据不出本地杜绝信息泄露风险安心使用无顾虑。离线可用稳定可靠无需依赖网络随时随地访问你的知识库稳定流畅不卡顿。成本可控长期受益一次部署长期使用无需持续支付高昂的云服务费用。
实践准备搭建基础环境
操作系统与 Python 环境配置
本文实践所采用的操作系统为 openEuler 22.03 LTS(x86_64)。为了确保各个组件之间能够实现无缝兼容并顺利运行我们选择使用 python3.11。
DeepSeek推理模型部署解锁强大文本生成能力
安装Ollama服务
首先我们需要下载 ollama 的 pypi 包以便后续访问 ollama 服务
[testlocalhost ~]$ pip3 install ollama 然后我们可以使用官网提供的一键式部署脚本来部署 ollama 服务
curl -fsSL https://ollama.com/install.sh | sh 如果遇到网络问题无法直接安装我们可以考虑采用手动方案
[testlocalhost ~]$ wget https://ollama.com/download/ollama-linux-amd64.tgz
[testlocalhost ~]$ tar -zxvf ollama-linux-amd64.tgz -C /usr/
[testlocalhost ~]$ which ollama
/usr/bin/ollama 注arm 架构的下载地址为 https://ollama.com/download/ollama-linux-arm64.tgz
安装成功后我们可以启动 ollama 服务
[testlocalhost ~]$ ollama serve 选择关键模型DeepSeek与nomic-embed-text的协同
在RAG应用中文本嵌入模型和文本生成模型是至关重要的组成部分。在本次实践中我们着重引入了DeepSeek家族中的deepseek-r1模型来承担文本生成这一核心任务。
deepseek-r1 模型是基于先进的深度学习技术开发的它具有独特的架构和训练方式能够更好地捕捉文本中的语义信息从而为文本生成带来更出色的效果。同时我们选用nomic-embed-text模型用于嵌入任务该模型能够将文本转换为高维向量表示为后续的检索和匹配提供了强有力的支持。二者协同工作共同助力我们基于DeepSeek与openGauss打造的本地AI知识库使其能够更高效、更精准地为用户提供服务。
[testlocalhost ~]$ ollama --version
ollama version is 0.5.6 [testlocalhost ~]$ ollama pull deepseek-r1
[testlocalhost ~]$ ollama pull nomic-embed-text
openGauss安装部署构建可靠数据存储基石
通过openGauss向量数据库存储本地私域知识在快速检索的同时提供更加稳定、更加安全的数据防护。
下载依赖
首先我们需要下载 psycopg2 依赖
[testlocalhost ~]$ pip3 install psycopg2 获取镜像
通过如下命令获取 openGauss 镜像
[rootlocalhost ~]$ wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/x86_openEuler/openGauss-Docker-7.0.0-RC1.tar
[rootlocalhost ~]$ docker load -i 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服务
[rootlocalhost ~]$ docker run --name opengauss --privilegedtrue -d -e GS_PASSWORDTest123 -p 8888:5432 -v /home/test/opengauss:/var/lib/opengauss opengauss:7.0.0-RC1 至此openGauss已经成功安装部署我们可以通过psycopg2连接openGauss查看版本信息
import psycopg2conn psycopg2.connect(databasepostgres,usergaussdb,passwordTest123,host127.0.0.1,port8888
)
cur conn.cursor()
cur.execute(select version();)
rows cur.fetchall()
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实例实现知识的高效检索与生成
我们以openGauss基础语料知识为例通过deepseek-r1做一个基础版的数据库智能问答小助手。
准备数据
以 openGauss 部分语料数据作为私域知识下载文件
[testlocalhost ~]$ wget https://gitee.com/opengauss/website/raw/v2/app/zh/faq/index.md 对语料进行预处理
file_path /home/test/index.mdwith open(file_path, r, encodingutf-8) as file: content file.read()paragraphs content.split(##)for i, paragraph in enumerate(paragraphs):print(f段落 {i 1}:\n{paragraph}\n)print(- * 20) 语料嵌入
在前述章节里我们已经准备好了nomic-embed-text嵌入模型。这里进行简单测试如下
import ollamadef embedding(text):vector ollama.embeddings(modelnomic-embed-text, prompttext)return vector[embedding]text openGauss 是一款开源数据库
emb embedding(text)
dimensions len(emb)
print(text : {}, embedding dim : {}, enbedding : {} ....format(text, dimensions, emb[:10])) text : openGauss 是一款开源数据库, embedding dim : 768, enbedding : [-0.5359194278717041, 1.3424185514450073, -3.524909734725952, -1.0017194747924805, -0.1950572431087494, 0.28160029649734497, -0.473337858915329, 0.08056074380874634, -0.22012852132320404, -0.9982725977897644] ... 数据导入
根据事先启动的openGauss docker服务连接信息建立连接
import psycopg2table_name opengauss_dataconn psycopg2.connect(databasepostgres,usergaussdb,passwordTest123,host127.0.0.1,port8888
) 创建包含文本数据和向量数据的table
# 建表
cur conn.cursor()
cur.execute(DROP TABLE IF EXISTS {};.format(table_name))
cur.execute(CREATE TABLE {} (id INT PRIMARY KEY, content TEXT, emb vector({}));.format(table_name, dimensions))
conn.commit() 将处理好的语料数据向量化后导入到openGauss数据库中并创建索引
# 插入数据
for i, paragraph in enumerate(paragraphs): emb embedding(paragraph)insert_data_sql fINSERT INTO {table_name} (id, content, emb) VALUES (%s, %s, %s);cur.execute(insert_data_sql, (i, paragraph, emb))conn.commit()# 创建索引
cur.execute(CREATE INDEX ON {} USING hnsw (emb vector_l2_ops);.format(table_name))
conn.commit() 查询检索
我们尝试询问如下问题
question openGauss 发布了哪些版本 在openGauss中检索该问题以获取之前导入数据库中的相关文档
emb_data embedding(question)
dimensions len(emb_data)cur conn.cursor()
cur.execute(select content from {} order by emb - {} limit 1;.format(table_name, emb_data))conn.commit()
rows cur.fetchall()
print(rows)cur.close()
conn.close() 查询结果如下
[( 3. openGauss 有哪些版本\n\nopenGauss 社区每两年发布一个 LTS 版本LTS 版本作为长期支持版本可规模上线使用。半年发布一个创新版本创新版本供用户联创测试使用涉及重大问题修复时会按需发布补丁版本。同时按照不同场景分为以下版本\n\n1. openGauss 企业版:具备更齐全的集群管理功能,适合企业用户\n2. openGauss 极简版:安装配置简单,解压可用,适合个人开发者\n3. openGauss 轻量版:精简功能,缩减安装包大小,内存占用更少\n4. openGauss 分布式镜像:基于 ShardingSphere 和 k8s 的分布式容器化镜像。\n\n详情参考 openGauss 官网[“学习”-“文档”](https://docs-opengauss.osinfra.cn)区域。\n\n,)] 结合LLM实现RAG
首先为对比RAG前后效果我们直接询问大模型得到如下答案结果并不理想
嗯我现在想了解一下 openGauss 有哪些发布版本。我之前对这个软件不太熟悉但听说它是一个用于关系型数据库的高可用性云原生解决方案可能和 PostgreSQL 类似。首先我应该确认一下什么是 openGauss它的主要用途是什么以及它在市场上的地位。 借助openGauss检索结果作为上下文将文档进行格式化处理并为大模型制定PROMPT
context \n.join(row[0] for row in rows)SYSTEM_PROMPT 你作为一个对话 AI 助手结合上下文信息简练高效的回答用户提出的问题
USER_PROMPT f请结合{context}信息来回答{question}的问题不需要额外的无用回答 基于ollama平台我们采用deepseek-r1大模型进行知识问答 response: ChatResponse chat(modeldeepseek-r1,messages[
{role: user, content: SYSTEM_PROMPT},
{role: user, content: USER_PROMPT} ],
)print(response[message][content]) think好的我现在要解决用户关于openGauss发布版本的问题。根据提供的上下文信息openGauss每两年发布一个LTS版本并且半年发布创新版本当有重大问题修复时会发布补丁版本。
首先我需要整理已知的版本类型
1. **企业版**面向企业用户功能齐全。2. **极简版**适合个人开发者安装配置简单解压即可使用。3. **轻量版**精简功能安装包小占用内存少。4. **分布式镜像**基于ShardingSphere和k8s的分布式容器化镜像。
接下来LTS版本是长期支持版本创新版本供联创测试。此外还有补丁版本用于修复问题。
用户的问题是询问openGauss发布了哪些版本因此我需要总结这些信息列出所有已知版本类型并说明每个版本的目标用户和功能特点。
最后确保回答简练、高效避免任何无用内容。/thinkopenGauss 社区发布的主要版本类型包括
1. **企业版**适合企业用户提供全面的集群管理功能。2. **极简版**适用于个人开发者安装配置简单且解压即可使用。3. **轻量版**精简功能适合需要小而精的应用场景。4. **分布式镜像**基于 ShardingSphere 和 k8s 的分布式容器化镜像。
这些版本根据不同的应用场景提供定制化的解决方案。LTS 版本作为长期支持版本创新版本则供用户进行联创测试使用。当出现重大问题时会发布补丁版本进行修复。更多信息可参考 openGauss 官网。
可见使用 deepseek 结合 openGauss 搭建的 RAG 应用不仅能借助 deepseek 强大的文本生成能力和精准的文本嵌入功能还能依托 openGauss 出色的向量数据库高效存储和快速检索向量数据从而显著提升答案的准确性、可靠性有效避免大语言模型的幻觉问题为企业提供更优质的本地化知识服务。
结语
最后我们基于ollama成功利用openGauss和DeepSeek从零搭建起了简易的 RAG 应用如愿获取到了所需的知识数据。在这个过程中我们对 RAG 技术有了更深入的理解也切实体会到了它在解决 LLM 实际应用问题上的作用。这个简易应用只是一个开端你可以依据自身需求对相关环节进行灵活调整和优化以更好地满足不同场景的需要。希望本文能帮助你加深对 RAG 技术应用实践的认识。