原文:
www.kdnuggets.com/3-simple-steps-to-local-rag-with-your-content
作者提供的图片 | Midjourney & Canva
你想要本地 RAG 且麻烦最少吗?你是否有一堆文档,想把它们当作知识库来增强语言模型?想要构建一个了解你所需内容的聊天机器人?
1. 谷歌网络安全证书 - 快速进入网络安全职业的快车道。
2. 谷歌数据分析专业证书 - 提升你的数据分析技能
3. 谷歌 IT 支持专业证书 - 支持你的组织在 IT 方面
好吧,这里有一个可以说是最简单的方法。
我可能不是最优化的推理速度、向量精度或存储系统,但它超级简单。如果需要,可以进行调整,但即使没有,短时间的教程也应该能让你的本地 RAG 系统完全运行起来。由于我们将使用 Llama 3,我们也可以期待一些很好的结果。
我们今天使用了什么工具?3 只 Llama:Ollama 用于模型管理,Llama 3 作为我们的语言模型,LlamaIndex 作为我们的 RAG 框架。Llama,Llama,Llama。
让我们开始吧。
Ollama 可以用于管理和与语言模型交互。今天我们将使用它进行模型管理,并且由于 LlamaIndex 能够直接与 Ollama 管理的模型交互,因此间接用于交互。这将使我们的整体过程更加简便。
我们可以通过遵循应用程序的GitHub 仓库上的系统特定说明来安装 Ollama。
一旦安装完成,我们可以从终端启动 Ollama 并指定我们希望使用的模型。
一旦 Ollama 安装并正常运行,我们可以从其 GitHub 仓库下载列出的任何模型,或者从其他现有语言模型实现中创建自己的 Ollama 兼容模型。使用 Ollama 运行命令将下载指定的模型,如果系统中未存在该模型,因此可以通过以下命令下载 Llama 3 8B:
ollama run llama3
只需确保你有足够的本地存储来容纳 4.7 GB 的下载。
一旦 Ollama 终端应用程序以 Llama 3 模型作为后台启动,你可以继续并最小化它。我们将使用 LlamaIndex 从自己的脚本与之进行交互。
这个难题的最后一部分是 LlamaIndex,我们的 RAG 框架。要使用 LlamaIndex,你需要确保它已安装在你的系统上。由于 LlamaIndex 的打包和命名空间最近发生了变化,最好查看官方文档以确保在本地环境中安装 LlamaIndex。
一旦启动并运行,并且 Ollama 正在运行带有 Llama3 模型,你可以将以下内容保存到文件中(改编自这里):
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from llama_index.llms.ollama import Ollama
# My local documents
documents = SimpleDirectoryReader("data").load_data()
# Embeddings model
Settings.embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-base-en-v1.5")
# Language model
Settings.llm = Ollama(model="llama3", request_timeout=360.0)
# Create index
index = VectorStoreIndex.from_documents(documents)
# Perform RAG query
query_engine = index.as_query_engine()
response = query_engine.query("What are the 5 stages of RAG?")
print(response)
这个脚本执行了以下操作:
-
文档存储在“data”文件夹中
-
用于创建 RAG 文档嵌入的模型是来自 Hugging Face 的 BGE 变体
-
语言模型是前面提到的 Llama 3,通过 Ollama 访问
-
我们的数据查询(“RAG 的 5 个阶段是什么?”)是合适的,因为我在数据文件夹中放入了许多与 RAG 相关的文档
以及我们查询的输出:
The five key stages within RAG are: Loading, Indexing, Storing, Querying, and Evaluation.
请注意,我们可能需要以多种方式优化脚本,以促进更快的搜索并保持某些状态(例如嵌入),但我将留给感兴趣的读者去探索。
好吧,我们做到了。我们成功地在本地使用 Ollama 在 3 个相当简单的步骤中搭建了一个基于 LlamaIndex 的 RAG 应用程序。你可以做很多其他事情,包括优化、扩展、添加 UI 等,但简单的事实是,我们能够在几个代码行和一组最小的支持应用程序和库中构建我们的基准模型。
希望你喜欢这个过程。
Matthew Mayo (@mattmayo13) 拥有计算机科学硕士学位和数据挖掘研究生文凭。作为KDnuggets & Statology的管理编辑,以及Machine Learning Mastery的贡献编辑,Matthew 的目标是使复杂的数据科学概念变得易于理解。他的专业兴趣包括自然语言处理、语言模型、机器学习算法,以及探索新兴的 AI。他致力于在数据科学社区中普及知识。Matthew 从 6 岁起就开始编程。