LlamaIndex 本地大模型起步教程
本教程演示如何利用 LlamaIndex 框架配合本地运行的 Ollama 服务实现大语言模型应用开发。通过集成 BAAI/bge-small-en-v1.5 嵌入模型与 Mistral-7B 语言模型,完成文档加载、索引构建及问答查询的全流程。内容涵盖环境依赖安装、核心代码解析、索引持久化保存及常见故障排查,帮助开发者快速搭建私有化知识库系统。

本教程演示如何利用 LlamaIndex 框架配合本地运行的 Ollama 服务实现大语言模型应用开发。通过集成 BAAI/bge-small-en-v1.5 嵌入模型与 Mistral-7B 语言模型,完成文档加载、索引构建及问答查询的全流程。内容涵盖环境依赖安装、核心代码解析、索引持久化保存及常见故障排查,帮助开发者快速搭建私有化知识库系统。

本教程演示如何利用 LlamaIndex 框架配合本地运行的 Ollama 服务实现大语言模型应用开发。通过集成 BAAI/bge-small-en-v1.5 嵌入模型与 Mistral-7B 语言模型,完成文档加载、索引构建及问答查询的全流程。
在开始之前,请确保您的开发环境满足以下要求:
pip install llama-index
pip install llama-index-llms-ollama
pip install llama-index-embeddings-huggingface
本示例使用 Paul Graham 的文章《What I Worked On》作为测试文本。您可以从 LlamaIndex 官方仓库的 examples 文件夹中获取该文件,或者自行创建文本文件。
请在项目根目录下创建一个名为 data 的文件夹,并将文本文件(例如 paul_graham_essay.txt)放入其中。
目录结构如下:
├── starter.py
└── data
└── paul_graham_essay.txt
在项目根目录下创建 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
# 1. 加载文档
# SimpleDirectoryReader 会自动读取 data 文件夹下的所有文本文件
documents = SimpleDirectoryReader("data").load_data()
print(f"已加载 {len(documents)} 个文档")
# 2. 配置嵌入模型
# 使用本地 BAAI/bge-small-en-v1.5 模型
Settings.embed_model = resolve_embed_model("local:BAAI/bge-small-en-v1.5")
# 3. 配置大语言模型
# 使用 Ollama 包装的 Mistral 模型,设置请求超时时间
Settings.llm = Ollama(model="mistral", request_timeout=30.0)
# 4. 构建索引
index = VectorStoreIndex.from_documents(documents)
print("索引构建完成")
索引构建完成后,可以创建查询引擎来回答基于文档内容的问题。
# 创建查询引擎
query_engine = index.as_query_engine()
# 发起查询
response = query_engine.query("What did the author do growing up?")
# 打印结果
print(response)
预期输出类似以下内容:
The author wrote short stories and tried to program on an IBM 1401.
您可以根据实际需求修改查询语句,探索文档中的不同信息点。
为了节省重新构建索引的时间,可以将索引保存到磁盘。
# 保存索引到本地存储
index.storage_context.persist(persist_dir="./storage")
# 后续加载已保存的索引
from llama_index.core import StorageContext, load_index_from_storage
storage_context = StorageContext.from_defaults(persist_dir="./storage")
loaded_index = load_index_from_storage(storage_context)
query_engine = loaded_index.as_query_engine()
内存不足错误:
模型未找到:
ollama serve。ollama pull mistral。嵌入模型加载失败:
transformers 和 torch。本教程介绍了使用 LlamaIndex 结合本地部署的大模型进行基础开发的完整流程。通过配置嵌入模型和 LLM,开发者可以快速搭建私有知识库系统。后续可进一步探索高级功能,如多模态支持、自定义节点处理及分布式索引等。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online