搭建本地模型的 LlamaIndex

由于 LlamaIndex 默认使用 openai 作为 embedding 和 Chat 模型,所以直接安装 LlamaIndex 需要配置 openai 的 API 才能运行,以下通过官方文档,搭建基于 ollama 的本地运行环境

1. 安装环境

1
python -m pip install llama-index-core llama-index-readers-file llama-index-llms-ollama llama_index.embeddings.ollama

2. 测试环境

1
2
3
4
5
6
7
8
9
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings
from llama_index.llms.ollama import Ollama
from llama_index.embeddings.ollama import OllamaEmbedding
documents = SimpleDirectoryReader("data\三国演义白话文",recursive=True).load_data(show_progress=True)
# bge-base embedding model
Settings.embed_model = OllamaEmbedding(model_name="quentinz/bge-large-zh-v1.5:latest",base_url='http://192.168.3.155:11434')
# ollama
Settings.llm = Ollama(model="qwen2.5:latest", request_timeout=360.0,base_url='http://192.168.3.155:11434')
index = VectorStoreIndex.from_documents(documents,show_progress=True)
Loading files: 100%|██████████| 41/41 [00:00<00:00, 2861.24file/s]
1
2
3
query_engine = index.as_query_engine()
response = query_engine.query("关羽在哪里被擒的?")
print(response)
关羽是在麦城被擒的。在麦城时,他率二百余骑从小路突围前往西川,但遇到了埋伏,最终被马忠捉住。
1
2
3
query_engine = index.as_query_engine()
response = query_engine.query("刘备如何将诸葛亮收入麾下?")
print(response)

刘备为了请诸葛亮出山相助,第二年春天选择了一个好日子,诚心诚意地去隆中拜访。关羽劝他不要去,张飞则打算用绳子把诸葛亮捆来。刘备生气训斥了他们一顿后,仍与兄弟二人一同前往。
到了隆中,刘备敲门通报后,在台阶下静静地等候。当孔明醒来并与刘备相见时,刘备表现出极高的诚意和恳切的态度,对孔明提出的策略表示十分佩服,并多次请求孔明出山相助。最终,被刘备真挚的情感打动,诸葛亮答应了刘备的邀请,拜入刘备麾下,担任军师一职,负责掌管军马。

相比较 langchian 的 rag 构建流程:数据读取 -> 索引 (向量数据库)-> 增强检索 ->LLM,LlamaIndex 确实更加方便构建 rag