在使用包括 chatgpt 在内的 aigc 工具回答 sap 相关问题时,常常会遇到大模型产生不准确或虚构信息的情况,这种现象被称为大模型的幻觉现象。对于 llm 模型来说,它是一种基于上下文的生成模型,其预测依赖于先前的文本序列。由于模型在训练过程中学习了语言的统计规律,有时会在生成文本时添加一些不合逻辑或与实际情况不符的内容。这种现象并非模型故意为之,而是由于模型参数中存储的知识是固定的且有限的,而现实世界的信息却在不断更新。
为了减少或避免大模型的幻觉现象,RAG(Retrieval-Augmented Generation)是一种有效的解决方案。当用户向通过 RAG 增强的大语言模型提问时,系统首先通过检索模块(Retriever)从外部知识库中查找相关文档,然后将检索结果与原始问题共同输入生成模块(Generator)进行答案合成。与模型参数中固化的知识不同,外部知识库的内容可以实时更新,从而让大语言模型提供实时的准确回复。外部知识库通常存储在数据库中,如向量数据库。
本文将通过 DeepSeek、Ollama 和 AnythingLLM 三个工具,手动上传 SAP 文档,来演示如何基于 RAG 架构打造自己的个人 SAP 知识库。
实现工具与操作步骤
1)安装 Ollama 并运行 DeepSeek
Ollama 是一个用于在本地环境运行大语言模型的工具。它允许开发者在本地 GUI 或命令行中加载和运行各种 AI 模型,无需深入理解底层的机器学习框架。Ollama 的设计思路类似于 Docker,通过它管理的 AI 模型类似于 Docker Image,但 Ollama 专门针对 AI 模型进行了优化。
Ollama 安装成功后,使用命令行 ollama run deepseek-r1:1.5b,这个命令会自动下载 DeepSeek 模型到本地并运行。1.5b 表示下载参数个数为 15 亿的 DeepSeek 版本,为了节省时间,笔者选择了这个文件尺寸为 1.1 GB 的最精简的模型。
耐心等待下载结束,看到命令行里弹出 think 提示符,输入 who are you? 得到 DeepSeek 的自我介绍回复,说明 Ollama 和自动下载的 DeepSeek R1 已经正常工作了。
2)上传 SAP 文档作为知识库素材
既然是打造私人的 SAP 知识库,我们就需要给 DeepSeek 喂一些外部文档作为知识库的文档素材。在 Bing 搜索引擎里使用 site:sap.com filetype:pdf 随便搜一些 SAP 官方发布的 PDF 来测试。在实际使用场景中,企业级客户可以将自己的私密数据,喂给本地部署的大模型,而不用担心隐私泄漏的问题。
这里我从 Bing 的搜索结果下载了一个名为 SAP S4HANA private cloud - implementation guide.pdf 的文件。
3)使用 AnythingLLM 建立工作区
下一步,下载 AnythingLLM 并安装。AnythingLLM 是一个开源的 AI 工具,能够方便地将用户提供的各种格式的文档嵌入到自定义 AI 模型中,使其在同用户对象中作为可参考上下文的一部分。这意味着通过 AnythingLLM, AI 模型在回答问题时,可以检索和分析用户提供的文档,将其内容整合作为最终的输出,即本文开头部分介绍的 RAG 工作方式。
AnythingLLM 安装完毕之后,像使用 ABAP Development Tool 一样,新建一个工作区(Workspace):
点击「聊天设置」:
还记得我们刚才下载的 Ollama 和通过 ollama run 命令下载的 DeepSeek R1 吗?在工作区 LLM 提供者的下拉菜单中,找到通过 Ollama 管理的 DeepSeek R1。
这个设置的意思是,我们接下来可以通过 AnythingLLM 提供的 GUI 窗口,同 DeepSeek 对话,可以同 Ollama 自带的命令行窗口说再见了。
4)文档嵌入与向量数据库
接下来通过向量数据库来上传并存储用户提供的文档。点击上传图标,打开上传对话框:
点击 Upload 区域,将刚才从 Bing 搜索下载的 SAP S/4HANA private cloud PDF 文档上传:
待文档上传完毕,点击 Save and Embed 按钮,将文档内容转换成向量数据并执行嵌入操作。
向量数据库是一种用于存储和查询高维向量数据的数据库,其核心功能是提供高效的相似度搜索,使得查询向量能够找到与之最接近的向量。相比传统关系型数据库(如 MySQL、PostgreSQL),向量数据库更适合存储和检索非结构化数据,如文本、图像、音频等。
在 RAG 架构中,向量数据库的作用类似于一个知识库,它存储了大量文本片段的嵌入(Embeddings),当用户输入查询时,模型会将查询转换为向量,并在数据库中检索最相关的向量,进而找到对应的文本内容。这种方式大幅提高了生成式 AI 的可控性和可解释性。
文档嵌入(Embedding)是将文本数据转换为向量的过程。这一过程的核心是将文本内容映射到一个高维向量空间中。相似的文本在该空间中的距离较近,而不相关的文本距离较远。
当然在实际企业级应用中,除了小规模的人工手动上传文档外,AnythingLLM 也支持通过 Data Connection 进行批量上传大规模文档,比如批量上传某个 Github Repo 里的文件。这种模型下,AnythingLLM 读取 Github 仓库内容的方式,通过 Access Token 完成。
等我们上传的文件出现在工作区右边区域后,说明文档的向量化即嵌入操作已经完成。
效果验证
此时,我们回到 AnythingLLM 同 DeepSeek 的对话窗口,提出一个问题:
What is embedded EWM?
DeepSeek 给出的回答的确是基于我们刚刚上传的 PDF 文件来完成的。
这一点可以从 DeepSeek 回复的 Citation 即引用区域得到证实,该区域显示本次回答引用了 SAP S4HANA private cloud edition.pdf 这个文件。
后记:模型部署
对于企业级用户而言,大模型的私有部署,在数据安全性、响应速度、可定制化、长期成本以及可靠性等多个方面都有着显著优势。而对于个人 AI 学习者来说,可以选择本地部署或者在某个云服务提供商的基础设施(IaaS)上进行私有部署的尝试。
笔者现在使用的笔记本电脑,本地部署满血 DeepSeek 比较吃力。所以,我选择了 PHP 中文网 HAI,这样就不用自己掏钱升级硬件了。
你可以登录腾讯 HAI 控制台,新建一个 Windows Server 实例:
使用 Windows 自带的 Remote Desktop Connection 登录到创建好的 HAI 实例上。
笔者之前曾发布过文章《使用腾讯 HAI 5 分钟内部署一个私人定制的 DeepSeek》,详细介绍了采用私有部署方式运行 DeepSeek 的步骤,有兴趣的小伙伴可前往了解。
通过本文展示的步骤,即使是一个不了解大语言模型底层实现细节的普通用户,借助 Ollama 和 AnythingLLM 这两个工具,也能轻松完成 DeepSeek 的本地部署,并打造自己的私人知识库。
SAP 在官方社区上也发布了其在 AI 和 RAG 领域很多积极的尝试,笔者后续的文章会继续给大家介绍!
以上就是使用DeepSeek+RAG实现私人知识库的详细内容,更多请关注php中文网其它相关文章!
DeepSeek (深度求索)杭州深度求索(DeepSeek)官方推出的AI助手,免费体验与全球领先AI模型的互动交流。它通过学习海量的数据和知识,能够像人类一样理解和处理信息。多项性能指标对齐海外顶尖模型,用更快的速度、更加全面强大的功能答疑解惑,助力高效美好的生活。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号