ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;text-wrap: wrap;background-color: rgb(255, 255, 255);visibility: visible;"> ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;text-wrap: wrap;background-color: rgb(255, 255, 255);visibility: visible;">什么是RAG?
RAG - 检索增强生成,是优化大型语言模型的输出的过程,使其在生成响应之前引用其训练数据源之外的权威知识库。大型语言模型(LLMs)在大量数据上进行训练,并使用数十亿个参数来为回答问题、翻译语言和完成句子等任务生成原始输出。RAG将LLMs已经强大的能力扩展到特定领域或组织的内部知识库,而无需重新训练模型。这是一种成本效益高的方法,可以改善LLMs的输出,使其在各种情境中保持相关、准确和有用。 为什么RAG很重要? LLMs是支撑智能聊天机器人和其他自然语言处理(NLP)应用的关键AI技术。其目标是通过交叉参考权威知识源,创建能够在各种情境下回答用户问题的机器人。然而,LLMs技术的特性导致其响应具有不可预测性。此外,LLMs的训练数据是静态的,并且在其知识上有一个截止日期。 LLMs已知的挑战包括:
RAG是解决其中一些挑战的一种方法。它重定向LLM以从权威、预先确定的知识来源中检索相关信息。 为什么需要100%本地化RAG?
在RAG的应用场景中,特定领域的知识会被发送给LLM。当使用外部模型或服务时,用户将面临私有数据暴露给第三方的风险。比如,当企业使用OpenAI的服务时,RAG应用中的私有知识都被发送给OpenAI,这并不是所有用户所期望的。具有高度隐私性的数据拥有者更希望所有的数据交互都发生在组织内部。这正是100%本地化RAG的意义。
什么是Ollama?
Ollama是一款流行的大模型工具,用于在本地运行开源LLMs,包括Mistral和Llama 2等。Ollama将模型权重、配置和数据集捆绑到一个由Modelfile管理的统一包中。 Ollama支持各种LLMs,包括但不限于以下模型: LLaMA-2 CodeLLaMA Falcon Mistral Vicuna WizardCoder
Ollama支持的LLM中包含了聊天模型和文本嵌入模型(Embedding Models),这正是RAG应用所需要的。基于Ollama,我们能够实现100%本地化的RAG应用。
ChatOllama
ChatOllama是我基于Ollama和Nuxt 3开发了一款简单的Web应用,演示100%本地化RAG应用的实现。代码开源于GitHub:
https://github.com/sugarforever/chat-ollama ChatOllama支持的功能: 本地大模型的管理 基于本地模型的聊天 Ollama服务器的设置 创建知识库 基于知识库的聊天
基于知识库的聊天正是典型的RAG应用。这会用到如下组件:
本地聊天大模型 本地文本嵌入模型 向量数据库(Chromadb) 关系型数据库(SQLite)
本地聊天大模型 Ollama所支持的模型中有大量聊天模型可供选择,比如gemma,llama2,mistral等。

本地文本嵌入模型 Ollama支持目前非常流行的超长上下文窗口的文本嵌入模型nomic-embed-text。这也是在ChatOllama中我会使用的模型。

向量数据库(Chromadb) 在本地化RAG应用中,向量数据的本地存储可以有许多选择,比如Chromadb, Milvus等。在ChatOllama中选择了Chromadb,这也要求用户在运行ChatOllama时,在本地环境也运行Chroma服务器。
关系型数据库(SQLite) 关系型数据库SQLite用于存储应用中的关系型数据。目前存储的是知识库数据。 通过以上组件,我们就实现了100%本地化的RAG应用。
现在我们通过ChatOllama的几个截图来演示本地化RAG应用的主要功能。
这里我们以nomic-embed-text模型的下载为例。

选择文件,指定文本嵌入模型,设置名称,来创建知识库。

点击创建的知识库,进入聊天界面。

具体的代码实现,请参考代码仓库:
https://github.com/sugarforever/chat-ollama 希望ChatOllama能够给到大家在本地化LLM应用方面一些启发。
祝大家新的一周工作生活顺利! |