在本文中,我们将介绍如何使用本地模型来进行AI数据查询。我们将使用BAAI/bge-small-en-v1.5作为嵌入模型,并通过Ollama加载Mistral-7B模型。本文将提供详细的步骤和示例代码,帮助读者轻松上手。
下载数据
本示例使用Paul Graham的文章《What I Worked On》的文本。你可以通过以下链接下载并将其保存到名为data的文件夹中。
设置环境
Ollama是一款帮助你在本地设置LLM的工具(目前支持OSX和Linux,可以通过WSL 2在Windows上安装Ollama)。请按照README中的说明进行安装。
要加载Mistral-7B模型,只需执行ollama pull mistral
。
注意:你需要一台至少有32GB内存的机器。
加载数据并建立索引
在创建data文件夹的同一目录中,创建一个名为starter.py的文件,并添加以下内容:
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings
from llama_index.core.embeddings import resolve_embed_model
from llama_index.llms.ollama import Ollama
documents = SimpleDirectoryReader("data").load_data()
# bge embedding model
Settings.embed_model = resolve_embed_model("local:BAAI/bge-small-en-v1.5") # 中转API
# ollama
Settings.llm = Ollama(model="mistral", request_timeout=30.0) # 中转API
index = VectorStoreIndex.from_documents(
documents,
)
上述代码将在data文件夹中的文档上建立索引(在本示例中,只有一篇文章的文本,但可以包含多个文档)。
你的目录结构应如下所示:
├── starter.py
└── data
└── paul_graham_essay.txt
我们通过resolve_embed_model
使用BAAI/bge-small-en-v1.5模型,该函数解析为我们的HuggingFaceEmbedding类。我们还使用Ollama LLM包装器加载Mistral模型。
查询数据
在starter.py中添加以下内容:
query_engine = index.as_query_engine()
response = query_engine.query("What did the author do growing up?")
print(response)
这将创建一个用于在索引上进行问答的引擎,并提出一个简单的问题。你应该会得到类似于以下的响应:作者写了短篇小说,并尝试在IBM 1401上编程。
可能遇到的错误
- 内存不足:加载Mistral-7B模型需要至少32GB的内存。如果你的机器内存不足,可能会导致模型加载失败。
- 文件路径错误:确保数据文件夹和文件路径正确,否则程序将无法找到所需的文件。
- 网络问题:如果在下载模型或数据时遇到网络问题,请检查你的网络连接或尝试使用代理。
如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!
参考资料:
- Ollama官方文档
- BAAI/bge-small-en-v1.5模型说明
- Mistral-7B模型介绍